Archive for 3 月, 2005
VizX3Dでのリギング
これはいけそうな感じです。ジョイントを好きに配置して、そのジョイントに付随する球体を変形させて頂点を覆います。頂点に対する拘束力(ウェイト)は球体の重なり合いで調整します。球体とジョイントの位置は自由に変えられます。頂点の拘束をセットするのもボタン一発で済みます。この一連の作業はとても簡単です。しかし、骨は表示されないので、少しとまどいます。また、ビューポート操作にショートカットが用意されていないのとカメラのオービット操作が?なので、マウスはちょっとアッチコッチに動いて忙しいと思います。
このツールにはポリゴン編集機能が用意されているのですが、これがとても助かります。外部モデラーで作ったモデルでも頂点変形の都合でターンエッジしたい場合に遭遇すると思いますが、そこらへんの微調整が可能です。実際のところチュートリアルにはこのツールでの人間型キャラのモデリング方法が載っているぐらいです。可変サブディビジョンも可能ですが、スキンを適用する場合はフリーズする必要があります。※このツールでは三角ポリゴンが前提です。
タイムラインの設定は少し変わっていて、アニメーションノードと呼ばれる単位に動かしたいジョイントを関連付け、アニメーションノード毎にタイムラインでキーフレーム設定をします。また、このアニメーションノードは他のトリガーから呼び出せます。実際ではトリガーで呼び出す単位でアニメーションノードを作り管理していく事になると思います。例えばこの場合なら、左右の肩の回転と上体の動きを一個のアニメーションノードに関連付けます。たぶんこの関連付けは排他的なものではないと思うので、他の動きと好きに組み合わす事が出来ると思います。そうなるとちょっと便利です。頂点への拘束力が意図どおりに調整できると顔の表情作りも楽になるので期待はどーんと高まります。
簡単な頂点変形アニメーションを作ってみました。肩の部分に左右に動くジョイントを追加して上下に動く腕の角度に合わせて左右に動かしています。これで腕の上下で起こる肩の骨の出入りを再現しています。キーフレームなので決まった動きしかできませんが、スクリプトのサポートが無い現状では仕方ないです。
Final Gathering in XSI


It tried Final Gathering. This process is thought to be very rational. It is a little late though it is pleasant when it can be calculated earlier. A right image(not FG) is rendering of Sub Surface Scattering Shader. This shader takes an influence from inside structure. I made structure inside the head to cope with that.
VizX3Dのご紹介
AXELに変わる次期Web3Dコンテンツ作成ツールを探していましたが、ついに発見しました。VizX3Dは"Single Mesh H-animation"をサポートしています。これはジョイントにポリゴン頂点を拘束しての制御(スキン)が可能な事を意味し、ウェイト調整も含まれるようです。価格は3万円程度というお手頃ラインです。(^^) 少しサイトが寒そうですが、出力フォーマットが汎用なのであまり心配は無いと思います?
以前紹介したSUBDOはデモを試しましたが、私の欲しい機能はありませんでした。思うにここらへんの価格帯(商用向け)のツールでは3Dシーンは外部ツールからのインポート前提で、頂点制御どうこうはそっちでやってくれ状態のようです。そのプラグインはほぼ3DSMAXが対象なので、XSIユーザの私には結局近づけません。
そんなわけで、今後はこのVizX3Dを使ってローポリキャラクタのアニメーションを作っていこうと思います。ちなみにAXELから移行する原因となったのは、頂点制御の仕組みを作るのがあまりに手間がかかるからです。(根性がないとできません) それとテクスチャ系が弱かったのもあります。しかし、AXELは空間ナビゲーションの仕組み作りに優れ、物理法則もどきを作るのも簡単で、ナビゲーションとインタラクション(インターフェイス)の良い学習になりました。
VizX3Dのスクリプト制御は見えていませんが、VRML(X3D)がそこらへんをサポートしているのでなんとかなるでしょう。ハイポリでもグリグリ回せるBSCが使えるのは楽しいです。 AXELではポリゴンが5000を超えると読めないし、プレイヤーでは1万超えると苦しかったので、BSCは私には夢のようなプレイヤーです。 ![]()