思いつくままを綴る雑記帳

うねうね・・・(WormCurve)

また訳の分からんタイトルですが・・・・。
うねうね=這いずり回る って、感じの解釈です。
以前にBlender Nationで何かのaddonかな?(ごめん、忘れた)
パイプが縦横無人に伸びて行く様な映像を見た記憶があったんだけど・・・。
ここも曖昧ですが・・・。

まぁ、それに近しい物を作ってみようかなと・・・。
WormCurve1.png
真ん中にBezier Curveがあります。
その周りにIcosphereが幾つか置いてあります。
で、WormCurve.pyという猫さん作のスクリプトを実行すると・・・。
WormCurve2.png
こんな感じでBezier Curveの追加されたpointに近しい位置にあるObjectの近接点を探してそこに向かって追加されたpointを伸ばします。
見つけたObject上で指定された範囲の移動をした後、その時点で近しい別のObjectを探して同じ事を繰り返す。
この図はObject上で移動する面を決定する際にランダムに進行方向を決める設定の物です。
進んだ先で周りの面が既に使われていて選択肢がなければ移動を終了して次のObjectに向かいます。
幾つかパラメータ設定があります。
Objectの検索範囲。
Object上での移動先の決定方法。
Object上で移動する回数の割合の決定方法。
Bezier CurveのpointをObjectの面からどの程度離して配置するか。
特に何かに使おうと作った物ではないので・・・AddOn形式にはしていません。
これを見てどんなのかな? と思った人で試して見たい人は猫さんの製作物の置かれている所にあるのでどうぞ。
不具合があっても対応はしませんが・・・。
分かっているけど直す予定のない問題点:
別のObjectに移動する際に間に自分又は別のObjectが挟まれている場合でも迂回するようにはしていません。
要するに突っ切るようにpointが伸びるので・・・Bezier CurveのBevelを設定してパイプにしても交錯して変なことになります。

設定と配置しているObjectを変更すれば、こんな風にもなります。
WormCurve3.png
Curve objectのResolutionを大きくすると汚くなっていたので修正。
(追加ポイントのHandleの処置を適用にしていたので追加。)
いじるついでに色々と機能も追加・・・。
pyファイルのコード体系をUTF-8に変更。
保管場所の4Shared/MediaFireのファイルを更新。
TubedSuzanne.png

10/July/2015追記
faceが多いObjectがあると極端に処理速度が落ちていたので処理を変更。
これで極端に速度は落ちないと思うけど・・・。
4Sharedは接続が不安定なのでそちらにあるのは最新版になってないかも・・・。
MediaFireにあるのは最新版になってます。

15/July/2015追記
Object上でfaceから次のfaceにCurveを伸ばす際にEdge Angleの値によっては面を貫通してしまう可能性があったので双方のfaceが共有するEdgeの中点を経由してCurveを伸ばすように変更。
4Sharedは接続が不安定なのでそちらにあるのは最新版になってないかも・・・。
MediaFireにあるのは最新版になってます。
スポンサーサイト

コメント

コメントの投稿

URL
コメント

パスワード
秘密
管理者にだけ表示を許可する

トラックバック

トラックバックURL : http://perfectcat.blog101.fc2.com/tb.php/308-bd30a221
<< Blender Tips(Properties Panel) | TOP | Particles system(Blender) >>