Softimageで複数モデルを配置した画面FBX書き出し/読み込み機能を利用すると、複数のモデルを配置できるが、シャドウリグの場合は問題があるようだ。
◎Softimageのリアルタイムシェーダ今回は部隊ユニットの画像を取得します。できればXNAで自動化したいのですが、XNAで3D表示した画面をファイルに保存する部分が自動化できないので、Softimageで簡単にできないか試してみます。
槍騎兵はまだSoftimageに移行してないので、今回は槍兵を複数並べて画像を取得しようと思ったのですが…1つ忘れてました。

槍兵を通常のテクスチャモードで表示とすると、白黒になります(左図)。
リアルタイムシェーダ>DirectX9モードで表示すると、画像が乱れます(右図)。画像が乱れる原因は未だ謎ですが、このままでは画像が取得できません。
◎マテリアルを戻す仕方がないので、まずマテリアルを元に戻します。
初期のマテリアル設定は消さずに残しておいたので、マテリアルマネージャから元のマテリアルをドラッグ&ドロップで選択し、エクスプローラの
Biped_Shadow→(メッシュ名)→Polygon Mesh→Clusters→(クラスタ名)→(マテリアル名)にドロップしました。クラスタにマテリアルが1つの場合は、クラスタ名にドロップしてもOKです。

戻す時は簡単だけど、やってることは本末転倒な気がするなぁ…。
待てよ?ビルボードでしか使わないモデルに関しては、今後XNAに持って行く必要が無いから、XNA向けの調整は不要ってことだよね?
一騎打ち以外は全部ビルボードでやりたくなってきましたw
◎文字の写り込みライトが明るすぎますが、そこら辺は後にして、先に連続画像が出力できるか確認します。これが出来ないと意味ないですからね。
ビューポートのキャプチャ機能で、こんな感じ(左図)に設定しました。出力された画像ファイルをビュワーで見ると、文字が写り込んでました(右図)。げげっ!これってもしかして使えないのでは?
しかしペイントやGIMP、XNAなどで確認すると、写り込みはありませんでした。ビュワー以外では表示されないようです。まずは一安心ですね。
◎邪魔者を消したいところで、左下の「XYZ軸」とその下にある「結果」という文字を非表示にしたいのですが、メニューを探してもなかなか見付からず、ネットで検索してようやく判明しました。
ディスプレイ>可視性オプションのビジュアルキュータブとステータスタブ

これで左下の邪魔者は消すことができたのですが、右下の「Softimage Mod Tool」という文字の消し方は不明です。これを消すのは無理っぽいなぁ…これは後でツールを作って消すことにします。
◎背景色とライト背景色は
カメラオプションメニュー>シーンのカラーでScene Colorsを起動し、ジオメトリビュータブで背景色を設定しました。

RGBだけでなくアルファ値(透明色)も設定可能でした。これで手作業が1つ減りますね。
ライトは、XNA向けに付加したポイントライトを調整するか、別のライトに入れ替えようと考えていたのですが、ディスプレイタイプメニューのヘッドライトをチェックしたら普通に表示されました。とりあえずこれでいいやw
◎カメラの向きを変更する被写体を16方向から写した画像を取得する方法は2通りあります。
A案:カメラを固定し、被写体を回転させる
B案:被写体を固定し、カメラが周りを一周する
モデルが単体の場合は
A案も可能ですが、今後は複数のモデルを扱うので、
B案でやります。
RokDeBone2では
B案が簡単にできましたが、Softimageでは自分でカメラの位置を計算し入力しなければならない気がします。これが意外と難しい…。
まず、ビューメニューでシーンカメラを選択します。この状態で注視点やカメラを選択すると、その座標が確認できます。
次に、エクスプローラでBiped_Shadowをマウス中ボタン選択し、カメラアイコンメニューの
選択を中心にを選択します。この状態で
ナビゲーションツール(Sキー)や
オービットツール(Oキー)等を使って角度を付け、斜め上から見た感じに調整します。
ここで注視点とカメラの座標を確認し、この2つの座標値を元に、カメラが回転する座標を求めます。
座標計算シート(PDF形式)やっと座標が算出できました。中学生レベルの計算に2時間ぐらいかかりました(ーー;
で、90度のカメラ座標を入力すると被写体が横向きに…ならないな(汗)
計算ミス?…いや、何か違いますね。うーん…。
…あ、カメラと注視点にニュートラルポーズが設定されてました。それで座標系が違っていたのですね。ニュートラルポーズを解除して再計算したら、やっと被写体が横向きになりました。
◎モデルのコピペモデルを複数配置するには、どのような方法が考えられるでしょうか?
まず最初にBiped、Biped_Guide、Biped_Shadowをコピペしてみました。一応ペーストは出来たようですが、モデルを移動したり回転したり出来ません。
実はモデル単体の時も同様です。普通はそういうものなのか、シャドウリグを利用したためなのか、モデルの構造に問題があるのか不明ですが、この方法は諦めましょう。
◎dotXSIモデルの出力次に、dotXSIモデルを書き出して複数読み込む方法を試みます。Biped_Shadowを選択してdotXSI書き出しを実行すると、

こんなエラーが複数回表示されました。出力されたファイルを読み込んだら、やっぱり壊れてました。
ちなみに、何も選択しなかったり、BipedとBiped_Shadowを選択すると落ちました(−−;
ヘルプを調べたら「Softimage対応Crosswalkは、dotXSIのバージョン5.0および6.0をサポートしています。」と記述されているので、ModTool7.5では書き込み機能は実行できないのかもしれません。もしそうだとしたら、メニューから書き込み機能を削除して欲しいものです。
この方法も諦めましょう。
◎FBXモデルの出力次は、FBXでやってみます。

ようやく、まともに書き出し&読み込みが出来たようです。場所も移動できました。しかし一部のマテリアルが再現されてませんね。
実は書き込み時にUVマッピング関連の警告が1件表示されてました。以前試行錯誤中に自分で壊してしまったようです。その問題を対処したら警告がなくなり、全てのテクスチャマテリアルが再現されました。
しかしカラーマテリアルの部分は何故か再現されません。Clustersの下を確認すると、FBXモデルの下はクラスタ情報が「Point」だけになってました。
元のモデル(左図)とFBXモデル(右図)原因は不明ですが、全てテクスチャマテリアルに置き換えてからFBX出力すれば回避できるでしょう。
◎動きませんようやくここまで来ましたが、最後に1つ大きな問題がありました。FBXで読み込んだモデルが動きません。
リグも必要なのかと思い、リグ、シャドウリグ、ついでにガイドも併せてFBX出力しました。するとSpearMan2の階層下にそれぞれ配置されました。

FBXモデルの下に緑色の点がありますね?あれはFBXモデルのリグで、そちらはちゃんと動きます。リグが動くのに、シャドウリグが動かないということは、連携設定(コンストレイン?)が無視されたということでしょうか?
しかしよく見ると、シャドウリグも槍が少しだけ動きます。これはどういうことでしょうか?
…槍が少し動くのは、シャドウリグだけで構成したアニメが混じっているからだと思います。Crosswalk(モデル入出力機能)から見た場合、リグとシャドウリグはそれぞれ独立した別のモデルなので、モデルをまたぐ連携設定(コンストレイン?)は再現されない、と考えると辻褄が合いそうです。
◎次回予告槍兵モデル作成時はXNAで直接動かすことを目指していたので、ボーンを減らすためにシャドウリグを使用したのがネックになりましたね。最初からビルボードを前提としていれば、(XNA連携不要になるので)話は全然違っていたと思います。
今後Softimageでビルボード専用モデルを作成した場合は、今回の方法で連続画像を取得できると思いますが、槍兵モデルはXNAを使用した方が良さそうですね。
というわけで、次回はXNAで複数モデル連続画像を取得します。
テーマ : ゲーム製作 関連 - ジャンル : ゲーム
未確認ですが
要注意コード?
ヘルプの説明を読んでもよくわからなかったので、とりあえずサンプルコードをコピペして実行したら、ブルースクリーンならぬパープルスクリーン状態になって、シャットダウンすらできなくなりました(汗)
かなり注意を要するコードのようですので、もう少し慎重に調べてみます。
RenderTarget2D.GetTexture() は
先にレンダーターゲットが設定されていないと習得できませんよ
ちょいと遅いかもしれませんが
RDB2のXファイルをXNAファイルでも恐らく動くファイルに変換するTOOLを作りました
お役に立てると幸いです
お久しぶりです
>先にレンダーターゲットが設定されていないと習得できませんよ
そのとおりですね。サンプルコードがそれもやってるものと勘違いしてました(^^;
>TOOL
どういうものかいまいち想像がつかないのですが、「XNAファイル」とは何を指しているのでしょうか?XNBファイルではないですよね?
URLに接続できなくて探っていたら、以前と様子が違うようで…ブログからCGI日記に戻すなんて珍しいですね。Downloadの整備が終わるのを心待ちにしています。
コメントの投稿