もきもき3D

アクセスカウンタ

zoom RSS 本番より前戯に手間が掛かる・・・そんな感じ

<<   作成日時 : 2008/09/05 07:28   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 ホース状の物からFluidをピッピと出したいんだけど、発生源の設置方法にはまる('A`)

 全てBlenderだけでやるならホースを制御してるであろうボーン(Armature)に発生源用のObjを付けちゃえば済んで問題にならないと思う。
 んが、基本形状とshapeKeyだけで動く物の場合、発生源をどうすれバインダー

 ホース自体にEmitterを付けると適当な所から液がダラダラ出る。>NG
 ホース先端の点/面を別Objectに取り出した物にEmitterを付けても何も出ない。面はEmitterになれない?>NG
 →DupliやExtrudeで閉じた形状を作っても複製された点にshapeKeyが付いてこない。>NG
 →頂点追加する事無く面を足して閉じた形状にしてEmitterを付けてみたけど何も出ない>NG?なんで?

 LW側でホースを操る先端のボーンのモーション(world Pos&Rot)を.motで取って、Blenderで箱Objにモーションをインポートすればホース先端と同期するはずだからとやってみるも回転が全然違う(w
 添付の.motインポーターの中身を見ても単に回転軸の入れ替えしてるだけ・・・('A`)えー
 Blenderの回転の規則や処理なんて全然判らない('A`)

 わりとお手上げ状態ヽ('A`)ノ

----
 解消したかも。 脳味噌ぐでぐでだから先にメモ

 LWの HPBそれぞれの符号逆転とDegree化。 H'P'B'とする。
 要素の対応は、H=Z軸回転、P=X軸回転、B=Y軸回転。
 概要としては、ゼロ→H'→P'→B'の順で掛け合わせる。
 codeとしては、
 rot = Mathutils.Euler(0,0,0)
 Mathutils.RotateEuler(rot, H', 'z') ← rot = Mathutils.Euler(0, 0, H')から初めてもOK
 Mathutils.RotateEuler(rot, P', 'x')
 Mathutils.RotateEuler(rot, B', 'y')
 rot == [x, y, z]なので、アイテムの回転値(not 回転軸)のX Y Zにx y zを代入。
 これでLWと同じになる・・・と思う。 1フレームのテスト&視覚的状態では同じ(・з・)
 ジンバルロックやフリップの類がどうなるかは謎。
 場合によってはLWでのmot吐き出しの段階で工夫が必要かも(QuoternionBoosterでフィルタするとか)。

 後、LWのタイムスライス上にHPBのキー3つが無いと回転状態を再現出来ない。
 .Motにはキーしか記録されないから、補間に任せた断片的なキー構成ではNG。
 一番無難なのはモーションベイクしてから.Motを吐く事。

----
 実装した結果を踏まえて↑のrotの初期値として(H',0,0)としてたのを修正。

付記:
 Blenderの(内部の)Rotate値はDegreeを1/10にしたものだけど、↑のオイラー計算する前に1/10しちゃ駄目。
 普通に計算した後、curve.BezierPoints.ptに格納する前に1/10にする。
 てか、計算する為に読み出した場合はどうなるんじゃろ。勝手に10倍にして正しい角度値になるとは思えないし・・・(・з・)ムゥ

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
本番より前戯に手間が掛かる・・・そんな感じ もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる