BOXプリムの中空とテクスチャーの関係
このページについて
趣旨
BOXタイプのプリムに中空を設定した場合、くりぬかれた面にテクスチャーを貼る際の「面ごとに繰り返す(repeat)」や「ずれ(offset)」の数値の計算が非常に難解かつ煩雑であることから、それらの関係を調べ、算出方法と数値一覧を示す。
特記事項
「面ごとに繰り返す:水平(u)」の「反転」欄にチェックを入れた方が望ましい場合があるが、この項目はスクリプトから制御できない。従って、このページでは「チェックを入れない」前提で話を進める。もし、チェックを入れる場合、「ずれ:水平(u)1)」について、次の処理を行う必要がある。
「面ごとに繰り返す:水平(u)」の「反転」欄について
チェックを入れる場合は、符号を逆転させた値を使う
チェックを入れる場合は、符号を逆転させた値を使う
数値の算出方法
- hollow … BOXの1辺に対する中空の1辺の割合
- 値の範囲:0.000 〜 0.950
- 値の取得方法
llList2Float(llGetPrimitiveParams([PRIM_TYPE]), 3);
- これは、編集ウィンドウ内「中空」の値を100で割ったものに等しい
面ごとに繰り返す:水平(u)
ずれ:水平(u)
// hollow -> offset.u float uuHollow2OffsetU(float hollow){ float u = - (hollow * 5 - 4) / (hollow * 2); if (u >= 1){ u -= llRound(u); } return u; }
数値一覧
| 0% | 1% | 2% | 3% | 4% | 5% | 6% | 7% | 8% | 9% |
| 10% | 11% | 12% | 13% | 14% | 15% | 16% | 17% | 18% | 19% |
| 20% | 21% | 22% | 23% | 24% | 25% | 26% | 27% | 28% | 29% |
| 30% | 31% | 32% | 33% | 34% | 35% | 36% | 37% | 38% | 39% |
| 40% | 41% | 42% | 43% | 44% | 45% | 46% | 47% | 48% | 49% |
| 50% | 51% | 52% | 53% | 54% | 55% | 56% | 57% | 58% | 59% |
| 60% | 61% | 62% | 63% | 64% | 65% | 66% | 67% | 68% | 69% |
| 70% | 71% | 72% | 73% | 74% | 75% | 76% | 77% | 78% | 79% |
| 80% | 81% | 82% | 83% | 84% | 85% | 86% | 87% | 88% | 89% |
| 90% | 91% | 92% | 93% | 94% | 95% | ||||
サンプルスクリプト
中空(hollow)を読み取り、それに合わせてテクスチャーの繰り返し(repeat)とずれ(offset)を設定するスクリプト。
default{ state_entry(){ float hollow = llList2Float(llGetPrimitiveParams([PRIM_TYPE]), 3); float repeat_u = 4 / hollow; float offset_u = - (hollow * 5 - 4) / (hollow * 2); if (offset_u >= 1){ offset_u -= llRound(offset_u); } llScaleTexture(repeat_u, 1.0, 5); llOffsetTexture(offset_u, 1.0, 5); } }
1)
表内のoffset.uの値

