LSL Portalを見て書いてたんっすけど、日本語ページには
revolutionsが抜けてたっす。
編集しておいたので、後から観る方は大丈夫なはずっす。
どうもぺんぎんっす( ◎v◎ )
中空はシリンダーから手を付けようと思ってたんっすけど、
ボックスでひらめいた事があるので、ついでにやったっす。
こんな感じっす。
ボックスが面倒なのは、for文で回しにくいからっす。
円とか楕円だと、周囲をぐるっとやるとき、三角関数一発っす。
ボックスはポンっとは出来ないので、4辺それぞれ別に作ったっす。
でも似たような処理になるので、まとめられるならまとめたかったっす。
メモリ量も減るっすからね。
上面の縁だけをまず考えるっす。中空はあとっす。
z = prim_size.z / 2 平面っすね。
xとyが動くっす。
4つの辺は
x = prim_size.x / 2(固定)
y = [prim_size.y / -2, prim_size.y / 2]
x = [prim_size.x / -2, prim_size.x / 2]
y = prim_size.y / -2 (固定)
x = prim_size.x / -2(固定)
y = [prim_size.y / -2, prim_size.y / 2]
x = [prim_size.x / -2, prim_size.x / 2]
y = prim_size.y / 2 (固定)
どっちか止まって、どっちか動いてるっす。
じーっと見てると、なんだか一次式が見えてきたっす。
prim_size.x ・ {(-1 or 1) × 0.5 + (0 or 1) × i / 分割数}
prim_size.y ・ {(-1 or 1) × 0.5 + (0 or 1) × i / 分割数}
2×2の4パターンではなく、ペアの取り方は
(1, 0), (-1, 0), (-1, 1)
の3通りになるっす。
ここまで分かればもう1つfor文を書いて、まとめられるっす。
この方法、パスカットに取りかかるときに苦労が少なくなりそうっす。
中空+パスカットが考えただけでもゾッとする面倒くささなので、
今のうちに技をかけておくっす。
0 件のコメント:
コメントを投稿