2001.10.20

Lightwave3D6.5bからShockwave3D用のボーンアニメーションを書き出す

◆はじめに

 Macromedia Director8.5では3D機能(以下Shockwave3D)が搭載され、ボーンアニメーションもサポートされました。しかし、発売当初Shockwave3Dで使えるボーンアニメーションを書き出せるプラグインは3ds Max用のみでした。そのせいか、数ヶ月経過した現在もShockwave3D用のデータ書き出しには3ds Maxが使用されることが多いようです。
 その後もいくつかの3DソフトメーカからShockwave3D用の書き出しプラグインがリリースされ、私が持っている(けどほとんど使っていない)Lightwave3D用のプラグイン(SW3D Expoter)もリリースされました。
 しかし、Lightwave3Dからのボーンアニメーションの書き出しについてはかなり注意点が多く、書き出し時にエラーが出てうまくいかないことが多かったために、NewTek(Lightwave3Dの開発元)のBBSや国内外のDirectorのMLでもそのことについての質問や不満を度々見かけました。
 そんなことから、自分でも試してみて自分なりに得た注意事項をまとめようと考えたのがこのページです。
 今回書き出したShockwave3Dのサンプルは腕を題材にしています([腕習作Shockwave3D])。
 なお、モデリング・ライティング・質感・カメラワーク等のLightwave3D上のテクニックの解説は一切ありません。あくまでもShockwave3D用のボーンアニメーションを書き出すことを目的としています。


◆環境

 今回の作業環境は以下の通りです。
 CPU:PentiumIII450MHz
 RAM:384MB

 OS:Windows2000
 Application:Lightwave3D6.5b/Shockwave3D Exporter PublicBeta1.9/Director8.5


◆Modelerでの作業

 作例では腕を題材にしています。モデリング自体は完了しているものとします[図1]

1.スケルゴンの作成:
 スケルゴンとはModeler上でポリゴンとして扱うことのできるボーンのことです。オブジェクトタブをアクティブにし、「プラグイン」→「スケルゴン」→「Draw Skelegons」[図2・図3]を選び、ドラッグしてスケルゴンを作成します。スケルゴン完成[図4]。手のひらアップ[図5]。手のひらアップ(スケルゴンのみ)[図5a]

2.スケルゴンの名称と親子関係の設定:
 「プラグイン」→「スケルゴン」→「Skelegon Tree」[図6]でスケルゴンの名称と親子関係を設定します(名称・親子関係が完成した状態[図7])。名称を設定するには「Skeleton Tree」内の名称の部分をダブルクリックで行い、親子関係は子にしたいスケルゴンを親にドラッグして設定します。
 ここで重要なのは、大元の親スケルゴン以外の全てのスケルゴンは必ずいずれかのスケルゴンの子になっていなければならない、ということです。
 ちなみに、モデラー上でスケルゴンを作成すると自動的に"Bone01"のような名前が仮につけられていきます([図7a])。なので、上記「1.スケルゴンの作成」のように全てのスケルゴンを一気に作ってしまうと、「Skelegon Tree」で見たときにどのどのスケルゴンがどの名前になっているのかわからなくなってしまう可能性があります。よって実際には、スケルゴンを何本か作ったら適当なところで名称・親子関係を設定していくのがよさそうです。
 
3.モデルのポリゴン化:
 次にモデルがサブパッチモデルだった場合にはこれをポリゴン化します。しかし、実はサブパッチモデルのままでもShockwave3D用に書き出すことは可能です。ポリゴン化しておく理由は後述のウェイトマップの設定と関わりがあります。とりあえず、今回の作例ではモデルをポリゴン化してからウェイトマップの設定をしています。なお、三角ポリゴンにする必要はありません。
 
4.ウェイトマップの作成:
 Shockwave3D用のボーンアニメーションを書き出す場合にはウェイトマップの設定は必須です。これはShockwave3Dのボーンアニメーションの仕様がウェイトマップベースのものになっているからです。
 まず上腕部にウェイトマップを設定してみます。上腕部のウェイトマップに含めたいポイントを選択して、画面右下の「(なし)」と表示のあるポップアップメニューをクリックして「(新規)」を選択します。するとウェイトマップ作成のダイアログがでるので名称を設定します([図8])。同様にして他の部分にもウェイトマップを設定していきます。
 ここでの注意点は、自分のイメージに近いボーンアニメーションを書き出すためには複数のウェイトマップが設定されているポイントがないようにすることです。さらに、どのウェイトマップも設定されていないポイントがないようにします。話が前後しますが、これらのウェイトマップの作業の前に、ポイントセットを作っておくと([図9])比較的効率的にできるかと思います。一旦選択を解除してもポイントセットを指定して([図10])繰り返し選択できるからです。
 ところで前述の3.でモデルをポリゴン化した理由は、サブパッチモデル上で「複数のウェイトマップが設定されているポイントがないように」すると、Shockwave3Dへの書き出しの際に自動的にポリゴン化されたときにポリゴンが細分化されるので、ウェイトマップの切れ目のところに追加されてポイントが「どのウェイトマップも設定されていないポイント」になってしまうからです。
 
5.ウェイトマップの設定:
 ウェイトマップをスケルゴンに割り当てる際の注意点としては、ウェイトマップはスケルゴンごとに別個のものを割り当てる、ということです。つまり、スケルゴンの数とウェイトマップの数は等しくなります([図11])。
 
6.スケルゴンをモデルと同レイヤーに:
 ここまでできたら最後に、スケルゴンをモデルと同じレイヤーにします。これも必須事項で、別々のレイヤーにして書き出した場合には必ずエラーが発生しました。
 
 Modelerでの作業はここまでになります。次はLayoutでの作業です。


◆Layoutでの作業

 Modelerで作成したデータをLayoutに読み込んだところからです。

1.スケルゴンをボーンに変換:
 「設定」パネルの「スケルゴン変換」を実行し、ボーンを作成します([図12])。
 
2.ボーンのアイテムプロパティの設定:
 各ボーンのアイテムプロパティを開き、「ウェイトのみ使用」にチェックをいれ「ウェイト常態化」のチェックを外します[図13])。この点も必須事項なので確実に対応しましょう。
 
3.アニメーションの作成:
 ライティング、カメラの設定およびボーンアニメーションを作成します。ここでは40フレームのアニメーションを作りました([図14])。
 
4.カメラとライトのアニメーション:
 今回はカメラやライトは動かしていませんが、それらも動かしたいときにはNullオブジェクトを作ってその子に指定したうえでNullオブジェクトを動かす必要があります。カメラやライトの単体のアニメーションは無視されます。

◆Shockwave3D Exporter

 Shockwave3D Exporterプラグインでの書き出し設定です。
 
1.プラグインの場所:
 Shockwave3D Exporterプラグインは「追加」タブの「プラグインオプション」で行います。Shockwave3D Exporterを選択すると書き出しダイアログが開きます。
 

2.プラグイン設定:
 Shockwave3D Exporterのインターフェイスは上部3分の2が書き出し対象の設定、下部3分の1がいくつかの項目の詳細設定になっています。書き出し対象は、基本的に全てチェックしておいて構わないと思いますが、今回はテクスチャーを貼り付けていないので「Texture maps」にはチェックしないで書き出しました。以下、詳細部分をわかる範囲で書いてみます。
 ●「Objects」タブ([図15]):
 いきなりですが、わかりません(涙)。「Enable Toons and SDS」のチェックは最初、モデルにShockwave3D上での設定であるToonモディファイアとSDSモディファイアを追加するものかと思っていたのですが、チェックをつけて書き出したデータをDirector上で調べてもそういったことはありませんでした(そもそもToonモディファイアとSDSモディファイアは同居できない)。どなたかわかる方教えてください。
 ●「Animation」タブ([図16]):
 ボーンアニメーションを書き出すときには当然「Bones」にチェックをいれておきます。「Start」、「End」はアニメーションのタイムラインの開始フレームと終了フレームを指定します。
 アニメーションはさせず、ボーンをしこんだモデルだけが必要な場合でも「Animation」にチェックをいれる必要があります。加えて「Force Sampling」にもチェックをいれておかなければなりません。これは、Shockwave3D上でのボーンの扱いが「bonesPlayer」モディファイアというアニメーション関係の設定の中に含まれているからです。
 ●「Textures」タブ([図17]):
 「Override Size」はテクスチャーイメージのサイズを指定します。サイズが小さいと品質は下がりますが、ファイル容量は小さく抑えることができます。「Disable Alphas」はアルファチャンネルを反映しない設定です。
 ●「Cameras」タブ([図18]):
 アクティブなカメラを指定します。また、フォグやバックドロップの設定も行います。

◆終わりに

 とりあえず、このような感じで書き出せば書き出し時にエラーになることはないと思います。ですが、まだ関節の曲がり具合など不自然になってしまうのでさらなる研究の必要性を感じました。また、Exporterの設定にも不明な点が多く、D-Stormから日本語の解説を出して欲しいところです。バージョン7ではどうなっているのか気になるところです。


このサイトへのご意見・ご感想は[takuya@haphands.com]までお願いします!