blender試行錯誤 Driver着手してみたけれど…

navy005845.png

neoranga_rig_110306x.zip

前頂いた資料を見ながら3軸全部コピーすれば解決する!と
頑張ってみたら全然別の要因でした、ダメだ!

液体射出オブジェクトCube.002にExport Animationさせると
Local Coordinateが無視される現象があるので
教わったDriverを使ってArmature_joel.002のBone10(股間の先端ボーン)の
X Rotation Y Rotation Z RotationをCube.002に移していますが
何故か前はそれでちゃんとローカルY方向に射出できていた液体が
どうしてもグローバルY方向になってしまいます

  • 上画像左のLocal Spaceが関係あるかとも思いましたがダメでした
  • 頂いたサンプルではY軸のみでしたが、斜めになる事を考えるとW座標系なら全軸必要ですよね?

neoranga_rig_110127_copy2_cut.png

それとは別に射出オブジェクトを削除などで消したあと全体に変形などを掛けたりすると
消したはずの射出オブジェクトがレンダリング時だけ復活して消せなくなります
編集画面では表示されませんでした、レイヤー分けて消しても同じ現象が起きる気がします
(スケール変更が適用されていないのか縮小した射出オブジェクトより大きいものが出ます)
その際に表示される射出オブジェクトの面がグローバルを向いていたのは
上記の射出と関係があるかもと思い一応併記します

navy005839.png

頂いたサンプルではこの項目も良く分かりませんでした
Driversに何か付加するっぽいですが…モデルの生成?
消したという奴でしょうか
初めこの項目のせいで上の射出オブジェクトが出てくる現象が
起きてるのかと思ったのですが関係なかったです、消しても平気っぽい

追伸
Blender 3D CGパーフェクトバイブル 届きました

「blender試行錯誤 Driver着手してみたけれど…」への18件のフィードバック

  1. えー。すまん。
    突っ込み所が多すぎだー。
    ■シーンについて
    使ってないシーンは消しといた方が良いと思います。
    現ファイルだと
    Base_Room_toon
    Base_Room_toon.001
    Base_Room_toon.002
    の3シーンがありますが、Base_Room_toon.002以外は消しましょう。
    これはドライバやコンストレイント等でオブジェクトやボーンを指定する際
    間違えて別シーンの物を使ってしまうとかあるから。
    つか現シーンではCube.002のDriver/Location指定相手間違えてます。
    ここCube_dummyじゃ無くてCube_dummy.001でしょ。
    同様に名前間違いを無くすべく、オブジェクトにはわかりやすい名前つけるべき。
    Cube.002とかやめ。せめてCube_inflowとか。メッシュの名前も同様。
    オブジェクトを用途毎にレイヤへまとめとくのも重要。
    Inflowオブジェクトとベッドが何で一緒のレイヤにありますのん。
    ■Fluid射出の向き及び表示/非表示について。
    □1□
    Cube_dummy.001
    Constraint/Copy LocationでBone010の場所をコピーしてますが、同様に
    Constraint/Copy rotationでBone010の回転もコピーしてしまいましょう。
    なんでかと言うと
    Inflow用オブジェクトのDriver設定時に場所も回転もこいつだけを参照すれば良くなるので
    間違いそうな箇所が減ります。
    加え、レンダリング時にこれが描かれては困るので
    Outlinerのカメラアイコンをクリックしてレンダ時描画されないようにしときましょう。
    (目のアイコンとカメラアイコンがありますが
    目の方は3D View(編集画面)での表示/非表示
    カメラの方はレンダリング画像での表示/非表示を操作します)
    現シーンでは目の方しかクリックされておらず、レンダリング時には表示されてしまう状態です。
    □2□
    Cube.002 Inflow用オブジェクト
    Armature_joel.002のBone010にペアレントされてますが外してください。
    このオブジェクトの場所と回転はCube_dummy.001からDriverで持ってきます。
    (ペアレントしといてもなんか大丈夫そうですが余計な計算はさせないようにしましょう)
    (不具合や謎の元になる場合が多いので)
    この際親が無くなることに寄ってオブジェクトのサイズが変化します。
    適切な大きさにリサイズし直しましょう。
    Fluid/Inflow指定でExport Animated Meshのチェックが入ってますが外してください。
    これも上記同様場所と回転はCube_dummy.001からDriverで持ってくるからです。
    Local Coordinatesは入れたままでOK。
    さてDriver指定です。
    まずは。
    DriversのType:種類ですが
     Maximum Value 最大値
     Minimum Value 最小値
     Scripted Expression 指定したVariable名の値
     Sum Values 合計値
     Averaged Values 平均値
    なので、
    参照先が1つの値(XRotationのみとか)の場合おそらくどれでも機能しそう
    だが、間違いなく安全に安定して指定するならば
     Scripted Expression 指定したVariable名の値
    を選んでVariable名を指定すべきと思います。
    “Var”て奴ですね。
    Location3つ、Rotation3つ全て直しましょう。
    先にも書いたとおり
    Ob/Bone:への指定が現シーンでは間違っております。直しましょう。
    んでRotationの方の指定もCube_dummy.001にしときましょう。
    Y Euler Rotationへの指定にXYZ3つVariablesついてますが
    これはいろいろと間違っております。
    Cube.002の、Properties/オブジェクトタブでのTransform/Rotation Mode:はXYZ Eulerです。
    Quaternion(WXYZ)じゃないんです。
    DriverもXYZそれぞれへの設定です。故に
    Y Euler RotationへのVariablesはCube_dummy.001のY Rotationのみにしなければいかんのです。
    現シーンの指定だとXYZの値を足した物になっちゃってます。直しましょう。
    ついでに。
    Drivers下のModifiersは
    使用しない場合消しちゃった方がいろいろ勘違いとかしないで済むので
    消しときましょう。
    最後にこのオブジェクトがレンダリングされないように
    前述のCube_dummy.001と同様
    Outlinerのカメラアイコンをクリックしときましょう。
    現在こちらが使用しているBlenderのバージョンは
    blender-2.56a-beta-windows32 r34076
    Blender本家から落とせる最新の物のはずです。
    あらかた説明したつもりではありますが、
    Outlinerて何だ?とか
    これは何言ってるかわからんとか
    これはどうしてそうせねばならんのだとか
    謎があったらどしどし聞いてみてください。
    てことで。
    一つでも読み飛ばすと上手くいかんと思うので頑張ってねー。

  2. あー
    前提条件としてCube_dummyってなんだという…
    もしかして組み込んだけれど必要なかったという
    元データを作ってくれた「」が言っていた物でしょうか
    Cube_dummyを使わずarmature_joel.002.bone10で
    良いとか言っていた奴かな?
    うーん、Cube_dummyの消し方も分からない
    もう元データから作り直した方が良いのかな…
    ベットとInflowが同じレイヤなのは
    そのレイヤがレンダリング時に消すレイヤという
    用途のレイヤだったからです
    シーン002に実験アニメを付けていた状態で
    001や000(ではないけど元データ)を流用していました
    関係ないけれどシーン001と002でジョエルのアニメが
    何故か共有になってしまう現象も解決が分からなかったですね

  3. 取りあえずdummyについて
    1:ジョエル股間bone10の角度・位置を
      コンストレイントでcube_dummyにコピーする
    2:cube_dummyの角度・位置を
      driverでcube_Inflowにコピーする
    と理解したのですが(そもそもここまでは合ってますか?)
    1については出来たものの
    2のcube_inflowの位置をdriverでコピーが理解できてないっぽいです
    cube_inflow.002のTransformタブのLocationとRotationにて右クリック>Driversを足して
    X LocationにはTransformChannel Cube_dummy.002のXLocation
    Y LocationにはTransformChannel Cube_dummy.002のYLocation
    Z LocationにはTransformChannel Cube_dummy.002のZLocation
    XEulerRotationにはTransformChannel Cube_dummy.002のXRotation
    YEulerRotationにはTransformChannel Cube_dummy.002のTRotation
    ZEulerRotationにはTransformChannel Cube_dummy.002のZRotation
    をそれぞれ参照させてみましたが上手くいかないようです
    取りあえずcube_inflowとBone010の親子関係を外してみました所
    場所がおかしくなるのはやはりDriversが正しく動いてないからでしょうか?
    inflowのExport Animated Meshを外してもDriverが正しければ
    Bone010のアニメを追従してくれるんだろうなとは思いつつも
    ExportAnimatedMeshを外してしまうと全く流体アニメしなくなりますね
    あと昔のコメントでdummyは使わず直でbone010の位置角度をDriversしても平気だった
    と言う旨の書き込みがあったのですが、
    これはdummy要らないって事なんでしょうかね?となると
    Cube_inflowにDriversでBone010の位置角度をコピーすればいいのかな?
    問題は位置のコピーの仕方が結局理解できてない事っぽいですが
    dummyを挟むとコンストレインツのCopy LocationにHead/Tailでオフセットが使えるので
    Driversからオフセットが難しいから挟んでる?とか思いましたが合ってるのかな…
    そもそもコンストレインツで直にbone010の位置角度を
    Inflowにコピーしただけじゃダメなのかな?と試してみましたが
    どうもExport Animated Mesh切ってると駄目っぽい?ですね
    Driversを経由しないと駄目なのでしょうか…
    http://atariya.server-on.net:8081/pictures/pool/neoranga_rig_110320.zip
    色々弄っていたファイルです

  4. と思ったらなんか上手くいったっぽい
    Scripted ExpressionからSum Valuesにしたら
    ちゃんと位置に納まりました
    Scripted Expressionの指定が悪かったぽいですね

  5. > 2のcube_inflowの位置をdriverでコピーが理解できてないっぽいです
    > 取りあえずcube_inflowとBone010の親子関係を外してみました所
    > 場所がおかしくなるのはやはりDriversが正しく動いてないからでしょうか?
    YES。
    > inflowのExport Animated Meshを外してもDriverが正しければ
    > Bone010のアニメを追従してくれるんだろうなとは思いつつも
    > ExportAnimatedMeshを外してしまうと全く流体アニメしなくなりますね
    YES。
    Driverがうまく動いてないとInflowオブジェクトがえらい変な位置に置かれてしまう
    →多分Domain領域から外れた位置とかに居る
    →液出ない
    という具合かと。
    > Scripted ExpressionからSum Valuesにしたら
    > ちゃんと位置に納まりました
    > Scripted Expressionの指定が悪かったぽいですね
    Scripted Expressionのした際
    名前入れるの忘れてたりはしませんでしたか~?
    >  Scripted Expression 指定したVariable名の値
    > を選んでVariable名を指定すべきと思います。
    > “Var”て奴ですね。
    https://yu-hi.sakura.ne.jp/hinabita/media/driver3.jpg
    の3の5ね。
    入れないとまともに動きませんよ~。
    Sum Valuesで動くのは
    > Sum Values 合計値
    だから。でも
    > 参照先が1つの値(XRotationのみとか)の場合おそらくどれでも機能しそう
    > だが、間違いなく安全に安定して指定するならば
    >  Scripted Expression 指定したVariable名の値
    > を選んでVariable名を指定すべきと思います。
    てことで。まあ動きゃいいやてんならどうでもいいかも知れんけど。
    > dummyを挟むとコンストレインツのCopy LocationにHead/Tailでオフセットが使えるので
    > Driversからオフセットが難しいから挟んでる?とか思いましたが合ってるのかな…
    dummy挟むやり方は”夜の「」”氏のなんでちと謎ですが
    > Inflowオブジェクトの位置と回転にDriverを使っていますが、
    > 位置についてはboneが対象だとうまくいかなかったので
    > Copy LocationしたダミーのCubeを使っています。
    てことなようですな。
    > そもそもコンストレインツで直にbone010の位置角度を
    > Inflowにコピーしただけじゃダメなのかな?と試してみましたが
    > どうもExport Animated Mesh切ってると駄目っぽい?ですね
    > Driversを経由しないと駄目なのでしょうか…
    これ多分計算順の問題なので説明めどいし難しいの。
    まずExport Animated Meshは後回しで書きますが関係は無いつか別です。
    で。
    えーと
    A:生のInflow位置方向
    B:DriverによるInflow位置方向決定
    C:コンストレインツによるInflow位置方向決定
    D:ParentによるInflow位置方向決定
    がありまして。射出位置方向はこのどれかあるいは組み合わせ
    +Export Animated Meshや+Local Coordinatesで決定されるのね。
    が、Blender内部においてABCDの順番や優先順位がある訳です。
    射出位置方向決定においてそれらのどの時点でどの値を取ってくるか
    てのが問題な訳ですが。
    CやDだと射出が持ってくる値が欲しいのと違っちゃってるんだ。
    バグじゃないよ。「どの時点でどの値を取ってくるか」が違うの。
    で、Bはまともに欲しい値が得られるのでこれを使う、と。
    すまん。半端ですまん。
    きっちり検証しないと「どの時点でどの値を取ってくるか」はわからんのですが
    ちと今時間無い。日を置かせて貰えればなんとか。
    ■Animated Mesh ExportとLocal Coordinates
    以前にも書きましたが
    > おそらくAnimated Mesh Export入れると
    > オブジェクトの情報無視してメッシュの情報のみ参照してしまう
    ようでして。
    この場合、メッシュのワールド情報のみの参照ですから
    Local Coordinatesチェックを入れても
    InflowオブジェクトのXYZ軸の向きは無視されてしまうようなのです。
    となると液の射出方向を指定してるInflow Velocityは
    ワールド座標系のそれで決定されてされてしまうわけで。
    位置は合っても方向がなんか変になる、と。
    故にInflowオブジェクトのローカル方向で射出しようというのならば
    Animated Mesh Exportは外さんといかんのう、と。
    てことで。
    いろいろ長かったり半端だったりですまん。

  6. > inflowのExport Animated Meshを外してもDriverが正しければ
    > Bone010のアニメを追従してくれるんだろうなとは思いつつも
    > ExportAnimatedMeshを外してしまうと全く流体アニメしなくなりますね
    YES。
    Driverがうまく動いてないとInflowオブジェクトがえらい変な位置に置かれてしまう
    →多分Domain領域から外れた位置とかに居る
    →液出ない
    という具合かと。
    すまんこれちと間違ってるかも。というか要検証だ。ごめん

  7. 最新のfreestyle統合版2.56.3 35616でデータ保存したら
    古い(と言っても2.56.1)blenderで読み込むと
    ノードがおかしくなるようになってしまって
    修正も出来ずに困ってます
    基本的に公式ビルドで保存しておいて
    設定差分覚えるしかないのかな…うぐぐ
    Driver抜きなら2.48形式で保存しておくんですけれどね

  8. Inflow関係まとめー
    ■Volume Initialization:
    射出形状のタイプ
    ■Inflow Velocity
    射出ベクトル
    ■Export Animation Mesh
    射出位置と形状の決定において
    Inflowオブジェクトの子であるメッシュの
    グローバル座標空間での移動/変形等を参照する
    メッシュは形状や位置の情報は持つが方向情報は無い
    方向情報は親であるオブジェクトの担当
    故にオブジェクトの向きに関らず射出方向はグローバル座標軸に準ずる
    ■Local Coordinates
    射出方向の決定において
    Inflowオブジェクトのローカル座標空間のXYZ軸を参照する
    射出位置の決定において
    Inflowオブジェクトのローカル座標位置を参照する
    Export Animation MeshとLocal Coordinatesを同時にチェックした場合
    Export Animation Meshが優先され
    Local Coordinatesは無視される
    これらのことから
    射出方向
    オプション無し: グローバル座標空間のXYZ軸にてInflow Velocityのベクトル
    Export Animation Meshチェック時: グローバル座標空間のXYZ軸にてInflow Velocityのベクトル
    Local Coordinatesチェック時: Inflowオブジェクトのローカル座標空間のXYZ軸にてInflow Velocityのベクトル
    射出位置
    オプション無し: Inflowオブジェクトのローカル座標数値
    Export Animation Meshチェック時: Inflowオブジェクトの子であるメッシュのグローバル座標空間での位置
    Local Coordinatesチェック時: Inflowオブジェクトのローカル座標数値
    射出形状
    オプション無し: Shape Keyアニメやボーンでの変形等メッシュの形状変化は反映しない
    Export Animation Meshチェック時: Shape Keyアニメやボーンでの変形等メッシュの形状変化を反映する
    Local Coordinatesチェック時: Shape Keyアニメやボーンでの変形等メッシュの形状変化は反映しない
    *どれにおいてもローカルのスケール値は反映される
    となる
    ■ローカル座標
    選択されているオブジェクトのローカル座標での位置/方向は
    3D Viewウィンドウ内でNキーを押した際出るPropertiesパネル→TransformのLocation/Rotationの値
    あるいは
    Propertiesウィンドウ→TransformのLocation/Rotationの値
    で確認できる
    親子関係あるいはCopy Loc/RotやChild of等のコンストレインツにて接続された
    子オブジェクトのローカル座標での位置/方向は
    親オブジェクトがどう動こうとも変化しない
    唯一Driversのみが子オブジェクトのローカル座標の位置/方向の値を変化させることができる
    これは
    親子/コンストレインツの場合
    子オブジェクトのローカルでの移動や回転も生かす為ローカルの数値は別扱い
    Driversの場合
    子オブジェクトの移動や回転関係なくローカルへ値を直にぶちこむ
    という動作の違いに寄るものと思われる
    ■Tips
    DomainのBakeをする際
    指定したディレクトリ内に以前のBakeデータが残っていた場合
    計算速度が低下/計算結果にも影響が出る
    てことで

  9. グローバル座標=ワールド座標の意と考えてください
    Blenderだとこういう用語になってるらしい
    > 最新のfreestyle統合版2.56.3 35616でデータ保存したら
    なんかPythonのdllバージョン上がってたりしてますな
    あとバージョン違いを1つのPC上で共存させた場合
    デフォルトだとUser Preferences共有されてるみたいなんで
    File PathsのTexture Plugins/Sequence PluginsとScriptsのパス指定にはご注意をばー
    つか最新freestyle統合版のみで作業て訳にはいかないのん?

  10. freestyle統合版2.56.3 35616
    が不安定なのかこのバージョンで加工したデータが不安定なのか
    2~3コマレンダリングすると落ちるので前のバージョンでレンダリングしたいと思ったのですが
    前バージョンで読み込むとマテリアルノードのグループが壊れていて
    セーブしなおすとデータが壊れて二度と読めなくなったりします
    http://atariya.server-on.net:8081/pictures/pool/neoranga_rig_110320x4.zip
    これがfreestyle統合版2.56.3 35616で加工、保存したデータです
    http://atariya.server-on.net:8081/pictures/pool/neoranga_rig_110320x5.zip
    こっちが一旦加工後に2.56.1で再保存しておかしくなったデータですね

  11. http://atariya.server-on.net:8081/pictures/pool/neoranga_rig_110320x4.zip
    http://atariya.server-on.net:8081/pictures/pool/neoranga_rig_110320x5.zip
    うちの環境だと両方とも2.56.3 35616なら読めますな。
    110320×5の方だとFreeStyleのLine Styleがちょっとおかしくなってるけど落ちることは無し。
    メモリ不足なのかレンダ時にFreeStyleのMesh loading中に
    Warning: edge 数字 – 数字 appears twice, correcting
    てのを大量に吐きつつBlender落ちますが。
    ベッド等背景の乗ってるレイヤオフにすると一応レンダできる模様。
    こっちはWinXP32でメモリ8G(余剰はRamDisk)なんですが
    そっちはメモリどのくらい乗っててDos窓では何て言ってる最中に落ちますか。
    上記と似たような具合だとポリゴン数減らすかWarningの原因突き止めて対処って感じですかのう。
    うちのFreeStyle無し版は2.56.0 r34076なんですが確かにノードおかしくなりますな。
    Materialsの項目もちょろちょろ違ってるしここらへん互換性無いかも知れん。
    110320×5は読み込んだ瞬間落ちます。

  12. >Warning: edge 数字 – 数字 appears twice, correcting
    従来のバージョンではこれが出ても落ちなかったんですよね
    新バージョンで弄ってから落ちるようになりました
    落ちるときのウィンドウには
    This application has requested the Runtime to terminate it in an unusual way. Please contact the application’s support team for more information.
    ランタイムの例外呼び出しっぽいエラーが出ていました
    統合新バージョンが出たら治るかもしれないですが
    メモリ自体は相当載せているものの統合版blenderが32bitアプリなので
    2Gまでしかメモリは使えないと思います、それでもタスクマネージャ確認しても
    800M程度で済んでいる模様、fluidsim時の2Gギリギリよりは少ないです

  13. >Warning: edge 数字 – 数字 appears twice, correcting
    従来のバージョンではこれが出ても落ちなかったんですよね
    新バージョンで弄ってから落ちるようになりました
    うnー。
    このWarning、Subsurfaceモディファイヤ入ってるオブジェクトあると
    出るみたいなのを発見。
    そうかそっちも32bitか。ぬう。
    ところで椅子やらベッドやら電気スタンドのようなものやらに
    Subsurfaceモディファイヤ入ってるのでとてもポリゴン数食ってます。
    これ外したらかなり軽くなった。試す価値あるかも。

  14. 電気スタンドsubsurf入れないと傘裏の線画が透けちゃうんですよね
    ベットの陰とかも綺麗目に出そうとすると必要だったり
    でも椅子辺りは既に面数多いから要らないのかな?
    subsurfが原因で落ちるっぽいならsubsurf使う場所少なめにするしかないかもですね
    毎回同じ場所で落ちるわけでもなく再起動するとレンダリングできたりするのが不明です

  15. 110320×4
    画像サイズ16分の1にて
    椅子2つ、電気スタンド、ベッドのSubSurfaceを外してレンダ、
    フレーム49のBuilding the view mapでハング。
    椅子2つ、電気スタンド、ベッドのレイヤを外してレンダ、
    フレーム49のBuilding the view mapでハング。
    …あれー?
    あー49フレーム目単体でも駄目だな
    でも50フレーム目はいけるなあれー?
    …49フレーム目で夕姫の位置をちょっとだけずらしたらレンダできるようになったー!?
    という訳で。
    Importing triangular meshes into Blender中つまり
    Warning: edge 数字 – 数字 appears twice, correcting
    が並んでく最中に落ちるならレンダ時のポリゴン数
    Building the view map頭で落ちるならジョエルと夕姫等の重なり具合を直せば
    おそらく110320×4を2.56.3 35616で全部レンダできると思われます。
    次からは自分でも検証してみよう!

  16. 丁度今49コマ目で設定弄っても詰まっていて悩んでいました
    重なり具合で落ちたりするんですね…

  17. > 重なり具合で落ちたりするんですね…
    Building the view mapてのは
    カメラから見てどこへどういう具合に線引くかマップ作成
    と思うので、
    そこで落ちるならば
    線引かれるべき場所のポリゴン角度や
    重なり具合かのう、と推測。
    他フレームと49フレームの違いは
    汁、ジョエルのポーズ、夕姫のポーズ
    で試しに汁消しても落ちる、と。
    なれば他2つのカメラに対する角度やら位置やら重なり具合の問題かなあという訳です。
    カメラ角度1度弄っただけでもいけました。
    もしかすると
    https://yu-hi.sakura.ne.jp/hinabita/archives/2011/01/30025645.html
    にある黒い線と関係あるかも。
    あれもカメラ動かすと消えたし。

  18. >https://yu-hi.sakura.ne.jp/hinabita/archives/2011/01/30025645.html
    >にある黒い線と関係あるかも。
    >あれもカメラ動かすと消えたし。
    この線、カメラ動かすとそのコマからは消えたものの
    また別のコマに出たりするんですよね
    通してレンダリングしてみないと出るか出ないか分からないのが
    非常に面倒くさいです

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください