プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:Softimage Mod Tool
丁奉
丁奉
呉将。甘寧、潘璋、陸遜の指揮下で抜群の武功を重ね、将軍にまで昇進した叩き上げの軍人。専横に走る孫チン誅殺に成功して軍部のトップにのぼりつめ、呉末期には宿老として重きをなした。



◎ニュートラルポーズ解除調整

SoftimageとXNAで掌の向きを合わせたいのですが、リグやメッシュのニュートラルポーズを解除しただけでは合いませんでした。

そういえば、手メッシュを移動回転させ、ニュートラルポーズ設定をしてからエンベロープ設定をした気がします。ということは、エンベロープの再設定が必要?

…しかしニュートラルポーズを全解除し、エンベロープを再設定してもダメでした。

最終的に手メッシュを90度回転させた状態で、Transformがスケール:1、回転:0、移動:0の状態にしたいのですが、Edit>フリーズやフリーズMでもダメ。う~ん…。

こんな調子で半日ほど粘って、ようやく「Transform>すべての変換をフリーズ」のコマンドに辿り着きました。

Transformフリーズ後(Softimage)   Transformフリーズ後(XNA)
フリーズ後のSoftimage(左図)とXNA(右図)

メッシュを移動回転後、このコマンドを実行すると、現在の状態がTransform初期値になります。XNAの初期値はこれで調整するのですね。これを知らなかったために、かなりの時間と労力を無駄にした気がしてヘコみます(>_<;

…いや、何事も苦労しないと身に付かないものです!
必要な過程であったと前向きに考えましょう!



◎ニュートラルポーズのまとめ

Softimageのニュートラルポーズ機能は、Transformのオフセット値を修正する機能です。しかしXNAにはこの機能が無いため、ニュートラルポーズ機能を使用するとSoftimageとXNAでズレが生じます。

この問題は、前項のように「Transform>すべての変換をフリーズ」でTransform初期値をフリーズすると解消します。今回はメッシュをリグに合わせてフリーズしましたが、逆のパターンも可能と思います。


一方、私のモデルでは「DefaultPoseを利用するとアクションが戻らない」という問題は残っているので、これを解決するために、フリーズ直後の状態で全てのリグとメッシュにニュートラルポーズを設定しました。

これで必要な時(ボーン追加時やエンベロープ設定時など)に手軽にニュートラルポーズに戻すことができます。もちろんアクションは保持されますし、XNAとのズレもありません。



◎新たな課題

問題をひとつクリアすると、次の課題が見えてきたりします。

掌の向きが合うようになって改めて気付きましたが、今の状態では、指を曲げることができません。これは、ボーン数を節約するために、シャドウリグ作成時のオプションを「シャドウフィンガーなし」としたからです。

このモデルは元々頂点数を節約するために、親指以外の4本の指をひとまとめにしてあります。兵士の指は、グーとパーだけ出来れば用が足りますからね。

しかしシャドウフィンガーを自動作成したら、指10本分のボーンが出来てしまうでしょう。関節を考慮すると、ボーン数をかなり多く消費してしまいます。

というわけで、これから親指と中指をシャドウリグに追加して、グーが出来るようにします。



◎指の追加

指のリグは既に存在するので、指のシャドウリグのみ追加します。手順は前回記述した通りです。

指シャドウリグ追加

XNAでもちゃんとグーを握れるようになりました。やりたいことが一発で出来たのは、久しぶりな気がします(笑)

※ワンポイントアドバイス
CreateShadowParts実行前に、シャドウリグを作成したいリグパーツ(ボーンの一部など)を選択する必要がありますが、チェイン(連結ボーン)を選択する際はrootに近い側から選択すると、実行時に元の階層の上下関係が反映されます。rootに遠い側から選択すると、同一階層に複数のボーンが作成されます。




◎リセット操作

リグの一括リセット操作は、これまでBiped配下のcontrols_group配下のノードをまとめて選択していましたが、ここには指のノードが登録されていないので、このままでは指がリセットされません。

しかしここに指を追加すると、余計なトラブルを引き起こさないか心配です。リセット専用のグループを別途作成し、そこに一括リセットしたいノードを全て登録するという方法も考えましたが、結局以下の方法にしました。

1.Biped_Shadow等を非表示にする
2.ビューポートでリグ全体を選択する
3.Transform>すべての変換をリセット
4.Biped_Shadow等を表示状態に戻す

若干面倒ですが、個別に選択するよりはマシでしょう。



◎ボーンの階層移動

槍ボーンは中指の先から伸ばしてしまいましたが、これだと槍が指の動きに連動して扱いにくいことを思い出したので、腕から延ばすことにしました。

リグ内のボーン階層移動をしたかったのですが、ドラッグ&ドロップで移動を試みるとエラーになります。そこで槍のエンベロープを削除し、Biped_ShadowのGlobalSRTやShadow_envelope_groupから槍ボーンを削除したのですが、この状態でも移動できません。まだどこかに槍ボーンの情報が残ってるのかなぁ?



◎ボーンの削除

この様子だと、削除して再作成した方が早そうなので、Biped内の槍ボーンを削除しようとしたのですが、それもエラーになりました。ありゃ~困ったね~(^_^;


ヘルプを見ると、意外なことが書かれてました。

チェインからボーンを1つずつ削除することはできませんが、チェインをブランチ選択すると、チェイン内のボーンをまとめて削除できます。」

ボーンを1つずつ削除できないって…ちょっとびっくりです。
これじゃ階層移動できなくて当然ですね。


しかしヘルプに後述されているように、ボーンのカットを試みても、全く変化しません。カットが機能してない感じです。

試しに他のコントロールやチェインルート等のノードをカットすると、カット操作と同時に階層構造が変化しました。しかしチェイン内の他のボーンをカットしても、階層構造が変化しません。やはり何らかの理由で、ボーンはカットできない状態のようですが、その理由は不明です。

ヘルプには他に「ボーンの長さをゼロに設定し、ボーンが削除されたように見せる方法」も紹介してますが、これだとゴミが残るようで嫌な感じです。他に方法は無いでしょうか?



◎続・ボーンの削除

調べていくと、「ボーンでチェインを分割」というコマンドがありました。

分割して一方を削除できないかと思ったのですが、このコマンドはチェインを2つに分けるのではなく、チェイン内部をサブチェインで区切るものでした。サブチェインを削除すると、以前の状態に戻ります。ボーン削除用としては使えませんね。


他に「ジョイント/ブランチの移動」コマンドがありました。

これはチェイン内の各エレメントのサイズを調整するもので、関節の位置をずらす場合などに利用できます。しかしチェインの外にエレメントを移動するものではないので、ボーン削除用としては使えません。


…やはり、ボーンの個別削除はできそうにありません。
でも、チェインの削除は可能なので、こんな感じでできないでしょうか?

1.旧チェインをコピペ(コピー&ペースト)して
  新チェイン作成

2.残したいボーンを旧チェインから新チェインにコピペ

3.旧チェイン削除

実際にやってみると、1はできましたが、2のボーンペーストができませんでした。

チェインを跨るボーンの切り貼りやコピペが出来ないとなると、チェインにボーンを追加して、全プロパティを元と同じように個別設定するしかありません。エンベロープ設定やデフォーマ、ウエイト関連ぐらいまではやる気でしたが、全プロパティはちょっと…移植ミスでトラブるのも馬鹿らしいので、諦めて「長さゼロ」方式にします。


実際にボーンの長さを0にしようとすると、0.01に補正されてしまいました。実害はないと思いますが、気分的にはすっきりしません。

ボーンの長さ0



◎槍チェインの追加

次に、新しい槍ボーンを腕に追加しようとしたのですが、BipedのRHand選択後「チェインにボーンを追加」すると、ボーンは追加されますが、RHandが変な方向に曲がってしまいます。さらによくわからないのは、RHandや新規ボーンをリセットする度に、別々の方向を向いてしまうことです。

「描画時にルートを最初のボーンに位置合わせ」なども試してみましたが、この現象が直る気配はありません。

う~ん…元々Softimageから自動的に取得したリグ(チェイン)なので、手のチェインには手のコントロールなどが関連してるのかもしれません。そこに勝手にボーンを追加してバランスが狂ったとか??
でも、既存の指と同じようにボーンを追加したいだけなんですけどねぇ…。

いや待てよ?既存の指はボーンじゃなくてチェインでした。ということは、ボーンじゃなくてチェインを追加すればうまくいくかも?

そこで一旦2Dチェインを作成し、エクスプローラでRHand配下に移動すると、思い通りに制御できるようになりました。

結局槍ボーンじゃなくて槍チェインを追加したわけですが、Softimage的には多分この方が正解でしょう。仕上げにシャドウリグのボーン追加、エンベロープ設定、ウエイト調整…ってもういちいち書かなくていいですね。

槍チェイン追加(Softimage)   槍チェイン追加(XNA)

これでグーでもパーでも槍の位置は影響されません。指が気軽に動かせるようになりました。



◎次回予告

今までボーンかチェインかなんて気にしてませんでしたが、改めて見ると、Biped配下のGlobalSRTはコントローラとチェイン(=ボーン含む)、Biped_Shadow配下のGlobalSRTはボーンで構成されてますね。

リグは人間が制御しやすいように、シャドウリグは制御ソフトが必要最小限のリソースで済むように、設計されているのがよくわかります。


…まぁそれはそれとして、ようやく上半身が完成したので、次回は着物の裾チェインの追加と下半身のウエイト設定です。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。