プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
傳士仁
傅士仁
荊州の要地公安城を守備していたが、失火や後方支援の失態を責められて関羽に恐れを抱き、虞翻の説得を受けて呉に降伏した。正史では士人との記述が多い。



◎要調査

前回「スケールを調整すると歪みが矯正できる」と書きました。実際、初期表示はこれで直るのですが、表示をリセットする(パッドのLeftStickを押す)と、歪んだ状態になります。

こう書くと「モデルが悪いんじゃないの?」と思われるかもしれませんが、実は他のサンプルや自作モデルも最初からこんな感じでした。

ロボット初期表示   ロボット初期表示アニメ
ロボットの初期表示(左図)とアニメ(右図)

ロボットリセット表示   ロボットをリセットしてからアニメ
ロボットのリセット表示(左図)とカメラ後退してアニメ(右図)

…改めて静止画で見ると、リセット後カメラを後退すると明らかに異常ですね(^^;

私のPC環境では、3D画像が崩れたり歪んだりするのは日常茶飯事だったので、感覚がマヒして「こういうもの(これが当たり前)」だと思ってました(笑)

ちなみに、リセット状態に合わせてスケールを調整すると、リセット状態の表示は正常になりますが、逆に初期表示が歪んでしまいます。



◎混乱に拍車

リセット表示時の歪みを修正しようと思ってプログラムを見ると、初期表示時と同じ値をセットしています。同じ値をセットしてるのに、何故表示状態が変わるのか?しかも歪んだり直ったりするのか?

この謎が私の混乱に拍車をかけ、「Softimageのカメラは理解不能」という認識に繋がりました。



◎シーンファイルのソース

原因追求にあれこれ迷走しましたが、結論から言うと「シーンデータファイル(Scene_Data.xsi)のソースを何にするか?」で変わります。


パターンA
・ロボットのシーン(articulated_robot.scn)内のscene_dataを
 Scene_Data.xsiとして出力しXNAに渡す

パターンAの表示結果:
ロボット初期表示   ロボットリセット表示
・初期表示(左図)とリセット表示(右図)で
 カメラ位置が異なる (前述通り)


パターンB
・パターンAの行為をしない(デフォルト)

・オリジナルのScene_Data.xsiをXNAで使用する
 (上書きコピーする等)

・Scene_Data.scn内のScene_Dataを
 Scene_Data.xsiとして出力しXNAに渡す

パターンBの表示結果:
ロボットリセット表示   ロボットリセット表示
・初期表示(左図)とリセット表示(右図)で
 カメラ位置が同じ


つまり、パターンAの行為をすると、初期表示はまともに表示されるようになりますが、リセットすると元の歪み状態になります。一方、何もしないパターンBの状態では、初期表示とリセット表示は同じ状態(歪んだ状態)のままです。


ロボットのシーンは、モデルを指定せずにPublishするとシーンファイルも同時に出力できるので、てっきりScene_Data.scnを呼び出すor包括してるのかと思ってましたが、完全に別モノで別の値だったのですね。
ロボットシーンでPublish



◎座標値の確認

シーンファイルのソースによって現象が異なることは判明しましたが、シーンファイルの違いが何故表示状態の違いに結び付くのか、内部的な原因がまだ判明してません。

そこでPositionとInterestの値を画面に表示して確認します。

パターンA初期表示:
Position={X:1.464061 Y:49.10268 Z:76.35174}
Interest={X:0.472899 Y:25.18247 Z:2.518248}

パターンAリセット表示:
Position={X:0 Y:2 Z:20}
Interest={X:0 Y:0 Z:0}
(コードでセットした固定値)

パターンB初期表示:
(同上)

パターンBリセット表示:
(同上)

パターンA初期表示の時だけ、固定値と異なる値がセットされています。これはロボットシーン内のカメラ座標でした。
(エクスプローラでScene_Root>scene_data>Camera_Root配下にあるCameraかCamera_Interestを選択し、画面右側Transformのt(移動)を選択すると値が確認できます)
カメラ座標値を確認する


さらに、パターンBのScene_Data.scnのカメラ座標を確認すると、コードでセットした固定値と同じ値でした。

「ああ~そういうことだったのね~!」
この結果を見て、私はようやく全てを納得した気になりました。



◎オリジナルカメラとデフォルトカメラ

モデルを製作しXNAで表示する場合、「Softimageでオリジナルのカメラを作って利用したい」というケースと、「カメラを自前で用意するのは面倒だからカメラはデフォルトでいい」というケースがあります。
前者はパターンA、後者はパターンBでやれば良いわけです。


パターンA(オリジナルカメラ方式)の注意点としては、プログラムを改造しない限り、モデルの階層下にカメラを内包することはできなさそうだ、ということ。少なくとも、ロボットサンプルは別ファイルにしてますね。

でも、XNAViewerはシーンファイルを1つしか取り込まないので、このままでは複数のモデルに別々のカメラを用意することができません。ロボットのシーンファイル内ではカメラが調節済みなのに、デフォルトではパターンBが採用され、ロボットの初期表示がおかしいのはこのためでしょう。


パターンB(デフォルトカメラ方式)の注意点としては、モデルのスケールや座標をうまく調節してカメラ座標{X:0 Y:2 Z:20}と注視点{X:0 Y:0 Z:0}の間に納まるように配置する必要がある、ということです。

だからスケールが合わないと歪むんですね。ようやく納得できましたよ~!www



◎リセットについて

私はこれまで「パッドのLeftStickを押す操作」を「リセット(初期状態に戻す)操作」と認識していたのでそのように記述しましたが、こうして見ると、リセットというよりも「固定カメラに切り替える操作」と言った方が正しいかもしれません。

「そういう仕様だ」と言われたらそれまでなんですが、もし私が仕様書を書くとしたら、初期表示状態に戻るよう、オリジナルカメラ座標を優先的にセットしたと思います。

…文句があるなら自分で改造しろよ(一人ツッコミ)



◎次回予告

ようやく謎が1つ解けたって感じですね。これでSoftimageのカメラ制御はバッチリ!のつもりです(笑)

最近活動時間が少なくて、アニメの方はあまり進んでません。モデリングのように一括変換できなさそうなので、1から作り直しです。ふぅ~。

スポンサーサイト

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
糜芳
糜芳
兄の糜竺と共に徐州時代から劉備に仕える。荊州の戦いでは関羽の留守役となるが、失態による関羽の咎めを恐れ、呉の呂蒙に降伏した。演義では後に蜀に帰参しようとするが、劉備の怒りは収まらず処刑された。



◎あきまへん

メタセコイア>Softimage>XNAのデータ変換手順をまとめてHPにUPしました。したんですけど…カラーマテリアルの設定で、また疑問が出てきました。

前回や前々回の記事で「カラーマテリアルの設定にはDXカラー(HLSL)を使うと良い」と書きましたが、城モデルは(DirectX設定を追加しなくても)タンジェントを追加するだけで色が付きました。

私はそれまでDirectXシェーダー設定は必須であり、それが無いからデフォルトで真っ白に表示されるものと思っていましたが、RenderTree上にDirectXシェーダーが存在しなくても、タンジェント追加のみで色が付いたのは意外でした。
そういうものなんでしょうか?

ところが、槍兵モデルはタンジェントを追加しても色が付きません。従法線やDXカラー(HLSL)を追加してもダメです。

…アカン!どないなってんねん!(ちょい関西風)



◎Softimageにおける表示の問題

結局、槍兵モデルはテクスチャマテリアルと同様の方式で設定しました。旧マテリアルのカラー設定をメモって手動設定するので面倒ですが、今は他に方法がありません。
また、この方式は他にも問題点があります。

DirectXシェーダー設定後のSoftimage上の槍兵   SoftimageのDirectX9Viewモードで表示した槍兵

この方式は既存設定をDirectXシェーダーに置き換えてしまうので、既存の設定が無くなり、Softimage上でのテクスチャ表示は真っ白になってしまいます(左図)。

ビューモードをDirectX9モードに切り替えると一応表示されますが(右図)、かなり崩れる上に、モデルをクリックするとMod Toolが落ちてしまいます。


さらに、マテリアルマネージャもいまいちな状態になります。

DirectXシェーダー設定後の槍兵のマテリアルマネージャ

既存マテリアルは、りんご(表示サンプル)が表示されますが、新規作成したDirectX用マテリアルは、りんごが表示されないので、どれがどれだかパッと見わかりません。


これらの問題は、新規マテリアルに既存マテリアルの設定を追加すれば解決しそうです。でも、それをするのは面倒と言うより馬鹿馬鹿しい気がします。既存マテリアルにDirectXシェーダーを直接追加できれば全て解決するのに、何でそれが出来ないかなぁ?



◎表示が歪む問題

というわけで、テクスチャやカラーを設定した槍兵をXNAで表示しました(下左図)。

槍兵モデル(サイズ未修正)   カメラを手前に引いた城モデル

画面上部が歪んでます。実は城モデルもカメラを手前に後退すると歪みます(上右図)。

また、サンプルのロボットモデルも一時期歪みましたが、この時はscene.xsiをオリジナルに戻したら直りました。

この現象はXNA上でプログラミングしてるとたまに見かけますが、私はWorld、View、Projectionの各設定値の関係によって生じるものと考えています。詳しい理屈は判りませんが、広角レンズをターゲットに近付けすぎた時に歪むのと同じようなものかなぁ、と。

問題は、どうやったら矯正できるのか?ということ。私の過去のXNA経験では、ビュー設定値を修正していたように記憶してますが、XNAViewerのビュー設定値(と思われる箇所)や画像サイズ、アスペクト比等をいじっても直りません。

XNAViewerの場合、モデルやシーンの中にもカメラが存在するので、その影響でしょうか?



◎歪みの矯正

というわけで、モデル側のカメラ位置や角度を変えたり、カメラをモデル階層下に移動したりしてみましたが、XNA表示上の変化はありません。

付属のキャプテンモデルのサンプルを確認すると…何故か股間の位置にカメラがあるようです。このカメラは無視されてるんじゃないかなぁ?

デフォルトではScene_Data.xsiがシーンファイルとして読み込まれるので、そちらのカメラを優先してるのでしょうか?
でも、そちらの設定を変えると、既存モデルが逆におかしくなりそうです。う~ん、どうしたものやら。

…そうだ!カメラがダメなら、モデルの方を変えてみてはどうでしょうか?と言っても、位置はデフォルトで決まってる気がするので、サイズを変えるとか…

槍兵モデル(サイズ修正済)

おお!歪みが矯正されました!
以前から頭を悩ませていた問題だったのですが、モデルのサイズ変更で解決できるとは意外でしたね~!



◎次回予告

前回記事を書いた時は「これでOK」と思いましたが、マテリアルとかエフェクト関連は、どうも一筋縄ではいきませんね。他の人達はどうなんでしょうか?…そういえば、苦戦してる記事をよく見掛けますね。

すんなりいけばいちいち記事にしないから成功例が少ないのか?それとも苦戦するのが当たり前なのか?個人的には後者だと思いたいのですが…でも私のスキルや環境に問題があると言われても否定できません(>_<)


槍兵モデルの準備に時間かかってしまいましたが、次回こそアニメーションします~!

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
廖化
廖化
蜀将。演義では元黄巾賊として描かれ、蜀滅亡に至るまで現役で戦い続けた。荊州の戦いでは関羽の主簿(幕僚長)を勤め、上庸の劉封、孟達へ援軍を求めに走った。



◎落ちまくりな日々

城モデルのテクスチャをDirectXシェーダーに置き換えたくて、いろいろ試してみましたが、どうしてもうまくいきません。

ロボットのサンプルと見比べても、違いはなさそうに見えるのですが…そうだ!ロボットのサンプルで同様に試してみましょう。既存のDXFX2を削除、作成、接続すると…あれ?Mod Toolが落ちましたよ?

サンプルが落ちるということは、データではなく環境か手順に問題がある、ということでしょうか?

でも元のデータのままPublishすると問題無く動くので、環境は悪く無さそうです。また、手順は円柱モデルや人体モデルと同様なので、これも悪く無さそうな気がしますが…でも、以前から頻繁に落ちていたので、やはり手順が怪しいと見るべきかもしれません。

もしかしたら、RealTime接続前に、予めパラメータ設定を済ませておく必要があるのかも?サンプルのDXFX2の接続を全て解除し、パラメータを削れるだけ削って再度接続すると…落ちませんね。パラメータは関係無いかもしれないなぁ。でもこの状態からDXFX2を再作成して接続するとやっぱり落ちます。う~む…。


念のためパラメータをチェックすると、

サンプルのDXFX2は「相対パス指定、コード編集ボタンを押すとFXのコードが表示されない、XNAできちんと表示される」

追加したDXFX2は「絶対パス指定、コード編集ボタンを押すとFXのコードが表示される、RealTime接続時に落ちる」

パス指定やファイルの配置場所、或いはフォルダ階層構造が悪いのかと思い、いろいろ変えて試したものの成果なし。

その後、円柱モデルのマテリアルを見直していたら、シーンマテリアルであることに気付きました。そういえば、城モデルのシーンマテリアルは従来の手順で設定できたので、もしかしたら、従来の手順はシーンマテリアルにしか通用しないのかもしれない…とこの時は思いました。



◎救世主現る?!

その後、紆余曲折を経て、ようやく辿り着いたのが「マテリアルマネージャ」です。RenderTreeと似てるので今まで軽視してましたが、マテリアルを新規作成するならこちらを活用した方が良さそうです。

ロボットのマテリアルマネージャ

右下段はRenderTreeと同様らしく、既存のマテリアルにDXFX2を追加してRealTime接続すると、やっぱり落ちます。しかし右上段で作成>リアルタイム OGL/DirectX>DirectX FXとすると、DXFX2 Presetが作成できます。

マテリアルマネージャでDXFX2を新規作成

このDXFX2は最初からRealTime接続されてますし、.fxファイルを指定するとプロパティやデフォルトマップが再構築されます。これならいけそうですね!



◎日本語パスの問題

しかし意気込んで城モデルでマテリアルマネージャを起動すると、ModToolが落ちました。ガーン!
ようやく何とかなりそうだったのに~!!

…おや?今回はエラーメッセージらしきものを画面下方に残してから落ちましたよ。

while defining texture "tex_wall_jpg":failed to open texture file c:\[省略]\tex_wall.jpg

テクスチャファイルが見付からなかったようですね。
tex_wall_jpgのパスを確認すると…あっ、日本語パスが含まれてました!そうか~メタセコイアのパスは日本語を含んでいたのに、そのまま変換したのが悪かったんですね!Softimageではテクスチャも綺麗に再現されていたので気付きませんでした!

…というわけで、日本語を含まないフォルダにメタセコデータを移してから読み込むと、日本語パスの問題が解消され、マテリアルマネージャが正常に起動しました。

城のマテリアルマネージャ

ちなみに、「RealTime接続時に落ちる」という最初の問題は変わってません。ロボットサンプルは日本語パスを含まないのに落ちたので、これは別の問題ですね。



◎テクスチャのDirectXシェーダ設定

というわけで、改めてマテリアルマネージャでテクスチャを貼り直しましょう。新たにテクスチャマテリアルを作成して、差し替えます。

1.マテリアルを新規作成
  (作成>リアルタイム OGL/DirectX>DirectX FX)

2.新規マテリアルの名称を変更する

3.DXFX2_Presetをダブルクリックし、.fxファイルを指定する

4.AmbientColorとDiffuseColorを調整する

5.default_surface_map_png1等をダブルクリックし、
  リファレンスソースを変更する
  (コンバート時に設定されたものを選択する)

6.設定が終わったマテリアルを、エクスプローラ上の
  クラスタにドラッグ&ドロップで上書きする

7.全テクスチャマテリアルに対して、1~6を実施する

尚、テクスチャを使用しないカラーマテリアルの場合、前回記述したとおり「DXカラー(HLSL)」を使用した方が楽です。既存設定にDXFX2を追加するだけで、1~6の手順を全て省略できます。但し、(ポリゴンメッシュに対して)タンジェントの取得が必要かもしれないので注意してください。

城モデルテクスチャ設定済



◎次回予告

ようやくテクスチャが貼れましたが、RealTime接続時に落ちる原因は謎のままです。このような問題が生じるのは私だけなんでしょうか?いい加減PC買い替えるべきかなぁ…。

次回はようやくアニメーションです。
それと、メタセコイア>Softimage>XNAのデータ変換手順もHPにまとめる予定です。

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
満寵
満寵
魏の武将。荊州の戦いでは、曹仁の参謀として曹仁を叱咤激励し関羽の猛攻を耐え抜いた。その後も合肥新城を築いたり自ら迎撃するなど対呉戦で大いに活躍し、太尉(軍事大臣)にまで昇進した。



◎メタセコイアのエクスポーター

以前メタセコイアで作成したモデルをSoftimageで読み込んで修正し、XNAで動かすことを目指します。


まずメタセコイアのエクスポーター(データ出力機能)を探すと、こちらにフリーのものが公開されていました。城モデルをこれで出力し、Softimage Mod ToolのdotXSI読み込み機能で読み込むと…

「ファイルは存在しないか、アクセスできません。何も読み込まれません。」

むむ、ダメでしたね。ファイルの中を覗くと、フォーマットが全然違うようです。4年前のエクスポーターなので、ソフトのバージョンアップ仕様変更により使えなくなってしまったのでしょう。


メタセコイアの公式HPを見ると、(株)ボーンデジタルからdotXSI Exporter for Metasequoiaが提供されているとのことで、軽く探しましたが見当たりませんでした。

でもまぁ多分有料でしょうから今回は見送りですね。モデルは2つだけだし、アニメやボーンは渡せないでしょうから、金かけて変換するぐらいなら1から作り直します。



◎ModToolの読み込みスクリプト

他に無いかと探したら、こちらにメタセコイアのオブジェクトを読み込むスクリプトがありました。

なるほど、メタセコファイルを読みに行く方が、バージョンアップの影響を受ける割合が少ない気がします。でもスクリプトの利用方法を調べないといけませんね。…と思ったら、トラックバック記事に奮闘記がありました(笑)

その奮闘記に記載されていたこちらの記事を頼りに、スクリプトを組み込んで実行すると…

城モデル   槍兵モデル

おお!テクスチャまでちゃんと再現されてるようですね!
素晴らしい!



◎XNAで表示

まだアニメーションがありませんが、とりあえずXNAで表示できるか確認しましょう。Convert to XNA ModelでコンバートしてPublish Modelsで出力し、XNAで読み込んでみました。

マテリアル未設定の城

マテリアル未設定なので色無しですが、モデルはちゃんと表示されましたね。しかしテクスチャのマテリアルはともかく、色のマテリアルぐらい自動的に変換してくれないかなぁ。



◎マテリアル設定について

マテリアル毎にいちいちシェーダーを置き換えるのは少々手間なんですが、XNA&Softimageユーザは、毎回手動設定してるんでしょうか?

チュートリアルでマテリアル設定が一切触れられていないってことは、モデリングを綺麗に済ませておくと、自動的にDirectXシェーダーに変換してくれるとか??
…期待を込めた妄想です(笑)


マテリアルに関しては、まだ何か見落としているような気がするので、XNAViewer付属ロボットのマテリアル設定をもう一度確認しました。

ロボットのRenderTree   ロボットのExplorer
ロボットのRender Tree(左図)とExplorer(右図)


・DXFX2でphong.fxを指定している(Render Tree)

・マテリアルオブジェクトにPhongオブジェクトが
 接続されている(Render Tree)

・マテリアル設定はPolygon MeshのClusters階層下に
 存在する(Explorer)


まず気になるのは、最初から(ロボットのモデリング段階から)DXFX2マテリアルだったのか、それともXNA向けにコンバートする段階でDXFX2マテリアルになったのか、という疑問。

次に気になったのは、phong.fxを指定している点です。もしかしたら、こっちの方が安定するかも…って、表示モードをDirectXに切り替えてモデルをクリックしたら落ちました。安定度は変わらないのかw

マテリアルがクラスタ単位でまとめられているのも気になりますね。これが本来の姿かもしれません。



◎クラスタとマテリアル設定

クラスタが気になって城モデルを確認すると、クラスタが既に存在してました。

城モデルのクラスタとマテリアル
城モデルのクラスタとマテリアル

どうやらこのスクリプトは、以下のように動くようですね。

①メタセコイアのオブジェクト毎にSoftimageのメッシュを生成
②メタセコイアの材質毎にSoftimageのクラスタを生成
③クラスタ毎にマテリアル設定を割り当て

この構造はロボットと同様なので、XNAと親和性が高そうです。しかしこの構造でも自動変換してくれないってことは、シェーダーは全て手動設定するしかなさそうですね。



◎DirectXシェーダー設定

というわけで、シェーダーを手動設定しようとしたのですが、上手くいきません。DirectXシェーダーをRealTime接続する際にModToolが落ちてしまいます。

元のオブジェクトを残してもダメ、削除してもダメ、元の接続を解除してもダメ。シーンマテリアルをDirectXシェーダーに変更してもダメ、ビューをDirectXに切り替えてもダメ。テクスチャ付きのマテリアルはダメ、テクスチャ無しのマテリアルもダメ。
う~ん何が悪いんでしょうか?

英語ヘルプを再読すると「タンジェントと従法線を取得しろ」という記述が気になりました。もしやコレでは?実際に試すと…おお、ようやく落ちずに切り替えできました!


さらに試すと、テクスチャ無しで色設定のみの場合、シェーダーは「DXカラー(HLSL)」でもOKだということがわかりました。いちいちfxファイルを指定せずに済むので、この方が手間が減ります。元のオブジェクトは消さずに残しておくと、色指定せずにすむのでさらに楽です。

柱だけ色設定した


ただし、テクスチャ有りの場合は、イメージファイルが何故か接続できません。FXファイルを指定してもプロパティが追加されないし、ドラッグ&ドロップでイメージファイルを接続してもRenderTreeを再度表示すると接続が切れてます。これはどういうことでしょうか?


行き詰ってきたので、もう一度最初からやり直したら、今度はタンジェントと従法線を取得してもModToolが落ちました。何でそうなるかなぁ…。

Softimageは「もう一度試すと違う結果になる」というのが非常に多い気がします。原因は多分私の勘違いだと思いますが、勘違いを防ぐために同じ試行を繰り返してるので、普段の倍疲れます(--;



◎次回予告

メタセコイアからSoftimageへの変換は上手くいきましたが、XNA向けシェーダー設定でつまづいてしまいました。XNAでの表示まで一気に行きたかったんですけどね。

次回は引き続きテクスチャのDirectXシェーダー設定です。早いとこ終わらせてアニメしたいなぁ。

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
劉封
劉封
劉備の養子。孟達と共に上庸を攻略し守備するが、関羽の援軍要請は断った。孟達が魏に寝返った際、誘いに乗らず抵抗したが敗北、関羽見殺しと上庸失陥の罪を問われて死罪となった。



◎何かおかしい

前回記事で「ライトをモデルの階層下に移動したら色が鮮明になった」と書きましたが、その後いろいろ試してみると、何かおかしな感じです。

・AmbientColorのみ反映される
・DiffuseColorが反映されない
・モデルに陰影が付かない
・ライトを削除しても色が変わらない

AmbientColorのみが有効で、ライトが無視されているようです。ライトの作り方が悪いのかなぁ?



◎ライトあれこれ

ライトに関する英語ヘルプを読むと、モデルの中にライトを置くのは正解のようですし、それ以前に、XNAViewerはデフォルトでscene_data.xsiが読み込まれているので、ライトを別途用意する必要は無さそうな気もします。

Point1~3に関しては、ライトタイプがポイントなので、ポイントライトであることは間違いなさそうですが、自分で選択して移動する方法がわかりません。新たにポイントライトを作成して移動すると、Point1~3も同位置に移動します。いまいち正体が掴めないなぁ。

ロボットのサンプルシーンを見ると、ロボットモデル内にライトは存在せず、scene_dataの中にPoint1~3が存在するだけです。これが基本構成と思いますが、Lambert.fxを使用する場合はどうすべきなんでしょうね?



◎ポリゴン数と頂点数

最近蒸し暑くなってきた上に、PC3台の熱気の中で試行錯誤してると、やる気も集中力もどんどん落ちてきます。せめてもう少し効率的にできないものかなぁ?

一番ウザイのは、毎回サブPCにデータを持って行く所です。もう百回ぐらいやってます。いい加減USBメモリ壊れそう…。
メインPCで発生するインデックス要素サイズエラーを回避できれば、この手間は省けます。


モデルメッシュを選択して 編集>選択の情報 とすると、こんな情報が表示されました

編集>選択の情報

ポリゴン:844 triangles, 6786 quads, 0 polys with 5+ pts
三角形:59352 triangles

ポリゴンには、三角形、四辺形、nポリゴンの個数が計上されているようですが、三角形の数と計算が合わないなぁ…まぁいいや無視しましょう。

三角形の方がXNA的ポリゴン数に該当すると考えて良さそうです。尚、シーン全体の三角形は62392だそうです。

三角形が約6万ということは、頂点数は約18万。インデックス要素数は不明ですが、この様子だと16ビット超えてもおかしくありませんね。多分これがエラーの原因でしょう。

それにしても、デフォルト取得モデルの頂点数が約18万とは驚きですね。ゲーム用のモデラーとは思えないんですけど…最近のゲームってこれが普通なんでしょうか?



◎頂点数を減らす

私が知っている頂点数を減らす方法は、マイナスキーを押すだけなんですが、これはModTool表示上だけ有効かもしれません。とりあえずやってみましょう。

おや?三角形が14416に減りましたね?ひょっとすると…



おお!エラーを回避してメインPCで動きましたよ!しかもDiffuseColorの赤とAmbientColorの緑が両方反映されていて、ちゃんと陰影も付いてます。サブPCのアレはいったい何だったんだ~!



◎結論

同じプログラムをサブPCで動かしたら、やっぱり以前の通りでした。

サブPC

色がおかしかったり陰影が無かったりするのは、どうやらグラボの違いによるもののようです。サブPCはインデックスエラーが出ないので、グラボはサブPCの方が上と思っていましたが、一概には言えないようですね。尚、ドライバの設定はデフォルトのままなので、設定をいじれば見た目が変わるかもしれません。

また、メインPCで試してみましたが、結局「ライトをわざわざ作る必要は無い」という結論に至りました。Scene_Data.xsiにポイントライトが組み込まれているためか、Lambert.fxもそのまま使えるようです。



◎サブディビジョンについて

テンキーの「-」を押すと、頂点数やインデックスサイズが減ることは間違いありません。私はこれを「サブディビジョンレベルを下げる操作」と認識しているのですが、ヘルプを読んでもいまいち確証が得られませんでした。

また、人体モデルのPolygon Meshプロパティには、「サブディビジョンルール」と「三角形にループを使用」は表示されているのに、「サブディビジョンレベル」が表示されていません。

「メッシュ全体ではなくポリゴン単位で指定すべきなのか?」
「テンキーが無い人はどうするのか?」
「三角形がXNA上のポリゴンに該当するという認識で間違いないか?」
などの疑問もありますが、当面の不都合は無いので、今はこれ以上追及しません。



◎DirectXとFBX

dotXSIでスキンアニメするモデルが作成できたわけですが、これを.Xや.FBXでXNAに持って行ってACLで表示することはできないでしょうか?

ではまずDirectX書き出し機能による出力を…って、ModToolが落ちました!オプション指定が悪かったかなぁ?…いや、デフォルトでも落ちますね。どうやら、このモデルの構成はDirectX書き出し機能の想定外らしいです。


次にFBXの書き出し機能による出力を試みると、警告が2種類出ました。1つはテクスチャ関連ですが、もう1つは…よくわかりません。ボーンかな?

「このジオメトリはサポート外です。exportする前に、コンバートしてください」と言われました。ちなみに、エラーログのパスも表示されていますが、そこにログファイルが存在しません。何故?

ファイルは出力されたので、とりあえずXNA&ACLに組み込むと、ビルドエラーになりました。

Vertex is bound to bone "Biped_Shadow:LFootBone1", but this bone is not present in the skeleton.

スケルトンに存在しないボーンがあるってことでしょうか?
何やら根が深そうです。


これは憶測ですが「モデルは各フォーマット向けに調整してから出力しないと、XNAで読み込めない」ってことじゃないでしょうか?.Xや.FBXで渡すスキルを身に付けるには、また試行錯誤しないといけないのかもしれません。

もう勘弁してください!(笑)



◎次回予告

Softimage Mod Tool修得シリーズは今回で終わりです。XNA連携でこんなに苦戦するとは思いもしませんでしたが、でも半分はグラボのせいかもしれません。素直に買い替えた方が早かったなぁ。

次回は自作モデルを修正します。

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
孟達
孟達
劉璋配下の将であったが、主君を見限り劉備入蜀に貢献した。荊州の戦いでは関羽の援軍要請を断り、蜀での立場が危うくなって魏に逃亡した。後に蜀への帰参を図るが司馬懿に見破られて急襲された。



◎調査

デフォルトで取得できる人体モデルにマテリアルを設定してXNAで動かすと、プログラムが起動しなくなりました。多分適当にやったマテリアル設定が悪いのでしょう。まずはデフォルトのマテリアル設定を確認して、何が悪かったのか原因を探ります。

Explorerで構造を確認すると、Biped→Character→Clustersの中には60を超えるクラスタが存在し、それぞれ「クラスタ表示色」が設定されていました。もしかして、これらを1つ1つDirectXシェーダーに置き換える必要があるのでしょうか?
しかしヘルプを読むと、これはSoftimage上で表示する際の色設定っぽいです。

さらに探っていくと、Hairクラスタの中にMaterial1が、left_eyeの階層下にMaterial3とMaterial4、right_eyeの階層下にMaterial5とMaterialが存在します。Material2が見当たりませんが、right_eye階層下のMaterialがソレに該当するのかもしれません。
Character配下のマテリアル   Material1のRenderTree   Material1のプロパティ

う~んちょっと複雑ですね。顔の表情テクスチャもここで貼り付けられているようです。ここは丁寧にDirectXシェーダーに置き換えないとダメなんでしょうね。



◎まずは目から

簡単そうな所から…というわけで、まず左目からやります。
Material3はテクスチャあり、Material4はテクスチャ無しです。

1.テクスチャをXNAのContentフォルダにコピーする

2.DirectXシェーダーを設定する

3.先程のテクスチャを指定する

ビルドするとエラーになりました。

Invalid texture. Face 0 is sized 150x148, but textures using DXT compressed formats must be multiples of four.

テクスチャ解像度が150×148なのがダメらしいですね。4の倍数にしないとまずいらしいので、テクスチャを148×148に削ると、ビルドエラーは出なくなりました。



◎エラー出まくり

メインPCで実行すると例のインデックスのエラー

System.InvalidOperationException: This device does not support 32-bit indices. Use IndexElementSize.SixteenBits or a type that has a size of two bytes.

が出るので、サブPCに持って行って実行すると…あれ?起動しません。ログを掃くように修正すると、このエラーが出てました。

System.ArgumentException: Device does not support multi-level texture width and height values that are not powers of 2.

つまり「テクスチャが2のn乗じゃないよエラー」です。あれ?サブPC(GeForceFX5200)もダメだったの?いつも先にメインPCで発覚して直しちゃうから、気付かなかっただけか…。

ここまでハード系のエラーが3連発、結局テクスチャを128×128に修正。初めからこうすりゃ良かったw
で、実行すると…やっぱり起動しません。今度は

指定されたキャストは有効ではありません。

というエラーになりました。よくわかりませんが、プログラムとデータの相性が悪いってことかもしれません。とりあえずTechniqueをスタティックに変えてみましたがダメでした。

あと何があるかなぁ…おや?Material4のdefault_surface_map_pngにいつの間にか画像が張り付いてますね?これが原因かなぁ…?むむ、やり直してみましたが現象変わらず。



◎エラーログと行番号

エラーログをよく見ると、行番号が記録されてました。この行の周辺が怪しいってことでしょうか?

尚、以下のようにすればVisualStudioエディタで行番号が表示できます。
(わかりにくかったので、参考までに記述しておきます)

1.ツール>オプション でダイアログを表示

2.「すべての設定を表示」にチェックを入れる

3.リスト内の テキストエディタ>すべての言語>全般 の
   表示>行番号 にチェックを入れる



◎一歩前進?

エラーログには596行と637行が記録されています。実際にエラーが発生する行はどちらでしょうか?

試しに596行をコメント化すると、598行と637行がエラーログに記録され、試しに637行をコメント化すると、596行と636行がエラーログに記録されました。

あれ?何でエラー行が遡るんですかね?普通はそれ以降の行がエラーになりそうですが…謎ですね。

とりあえず596行の直前に「isSkinned = false;」を入れてみると…おや?起動しましたよ?

左目だけマテリアル設定した

例のゴミのようなものが2つセットで移動してますが、拡大してよく見ると、片方は色が付いたようです。でも、プログラム修正した副作用なのか、モデルを切り替えることができません。う~ん、一歩前進と言えるか微妙ですね(^^;

ちなみに、「isSkinned = true;」としたら、以前のキャストエラーになりました。プログラムを辿って行くと、アニメデータとボーンデータが存在する場合にtrueとなるようです。



◎ボディのマテリアル設定

アニメデータとボーンデータがあるのに、マテリアルが不正だからエラーになっていると仮定した場合、全てのマテリアルを正しく設定すれば、正しく表示されるかもしれません。とりあえず、ボディのマテリアルを設定してみましょう。

ボディのマテリアルは、カラー、スペキュラ、バンプの3種類のテクスチャが接続されています。これをDirectXシェーダに置き換えるわけですが、正直自信無いんですよね…バンプはDirectXのNormalMapに該当すると思いますが、カラーはAlbedoMap、スペキュラはAmbientMapに該当するのかなぁ?

とりあえずNormalMapとAlbedoMapを設定し、「isSkinned = false;」として起動すると…ボディに色が付きました!

ボディにマテリアル設定した

但し、動きません。「isSkinned = false;」を外したり「isSkinned = true;」とするとエラーになります。AmbientMapを設定してもダメ。



◎動きました!

ここでしばらく悩んでいたのですが、キャラクタのボーン数がXNAの上限を超えていることを思い出しました。もしかして、ボーン数が多すぎてエラーになるのでは?だとすると、Biped_Shadowを利用する方式であればボーン数が制限値以内だから、正常に動くかも?

で、実際に試そうとしたら、Biped_ShadowにDirectXシェーダーでテクスチャを指定した所で Mod Tool が落ちました。このタイミングで落ちたのは初めてです。Shadowにマテリアル設定すること自体間違いなんでしょうか?本来そういうものじゃないしなぁ…。

とりあえずもう一度試してみると、今度は無事に設定できました。サブPCで起動すると…

Shadow_Animation

おお、動きました!サブPCのため動画でお見せできないのが残念ですが、人物モデルがスキンアニメしましたよ~!

でもマテリアル設定が反映されておらず、色は影のようになってますね。



◎緑の男

顔の部分を拡大表示してよく見ると、顔のテクスチャが反映されてました。ということは、マテリアルは一応反映されたようですね。でも何でこんなに暗いのかなぁ?

そういえば、いつの間にかキャプテンモデルも黒くなってしまったけど、もしかして同じ現象?だとすると、マテリアル設定が悪いというよりも、他の要因があるのかな?

…そういえば、このシェーダーはポイントライトが必要とありましたね。ひょっとして、ポイントライトが無いから、環境光以外は無視されて真っ暗ってこと?試しに、ポイントライトを置いてみましょう。

…う~ん、ダメですね。変化なし。試しにライトをモデルの階層下に移動してみます。

緑色で表示

おお、色が鮮明になりました!体色と顔のテクスチャがちゃんと反映されています。とりあえず成功ですね。

というわけで、ここまでの手順をHPにまとめました。手順を知りたい方はこちらの記事の(その3:デフォルトモデルシャドウリグ付き)を参照してください。



◎次回予告

やっと人物モデルがスキンアニメしました。LAGさんによると、Shadowを利用した方がボーン数の節約になるそうです。

しかしまだマテリアルやライトの設定が不完全なようで、体に影が付いておらず、緑一色です。次回はその辺を探ります。

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
朱然
朱然
呉の将。荊州の戦いでは潘璋と共に関羽を生け捕りにする大功を立てた。孫策、孫権、呂蒙らに才能を高く評価され、陸遜死後は孫権から呉の軍権を一任された。



◎XNA連携手順

XNA連携手順をHPにUPしました。

実はまだ予定の半分しか書き上がってません。今回は下書き作成済だから、ちょこっと更新して終わりと思ってたのに、12時間もかけて半分ってのは何故だらう?

ああ、完全に夜が明けちゃいましたよ…自分で言うのも何ですが、徹夜してまで書くほどのものかなぁ?(^^;



◎チュートリアル

1つ気になるのは、ヘルプのチュートリアルにはマテリアル設定に関する記述がごっそり抜けていることです。予めメッシュに色を付けておけば、メッシュ変換時にマテリアル設定も自動的に変換されるかも…と思ったのですが、私が試した限りではダメでした。

ヘルプには別項目でエフェクトに関する記述があるとはいえ、チュートリアル通りにやってもスキンアニメしないのは不親切と思います。せめて「XNA向けにマテリアル設定しないと動かないよ、詳細は○○参照」ぐらいの記述は欲しいですね。



◎マテリアル設定

デフォルトモデル(人物モデル)にマテリアル設定を施すと、サブPCでプログラムが起動しなくなりました。これから調査しますが、人物モデルは少々複雑だしテスト環境も悪くなるので、原因解明には時間がかかるかもしれません。



◎次回予告

デフォルトモデルが動かない原因を探り、記事の続きを書いて完成させます。

その後は…起きてから考えます。とりあえずおやすみなさい。

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

| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
潘璋
潘璋
呉の武将。荊州の戦いでは、朱然と協力して関羽を追い詰め、部下の馬忠が関羽を生け捕りにした。粗暴で強欲だが兵の統率に優れ、多大な功績を挙げた。



◎5月の目標達成度

・地形モデル描画(4日)
・マップオブジェクトモデル描画(5日)
・マップデータ調整(1日)
・マップオブジェクト属性データ作成(1日)

 実績:未着手(達成率:0%)


・Softimage修得(3日)

 実績:8日間で概ね修得(達成率:100%)
 実績:12日間でXNA連携(達成率:100%)



・Softimageで城モデル更新(2日)
・Softimageで槍兵モデル更新(3日)

 実績:未着手(達成率:0%)


・シナリオ概要作成(1日)

 実績:3日間で荊州争奪戦関連年表、武将一覧表作成(達成率:70%)


・その他
 →ブログ更新/HP更新(3日)
 →休息/予備(5日)

 実績:3日でSoftimage/XNA連携テスト手順書(3パターン)作成(達成率:100%)


XNA連携にハマってプログラム関連は未着手です。



◎XNA連携手順が複雑な理由

私はSoftimageを触る前は「メタセコイア+RokDeBone2」のようなものを想像していました。しかし実際は想像を大きく超えるものだったので、修得に日数を要したのは仕方がないと思います。

問題は、XNA連携でハマった事です。RokDeBone2の場合、保存したファイルをXNAで読み込めば問題無く動くので、まさかこんなに複雑なものだとは全く予想してませんでした。

まぁ結論から言えば、マテリアル設定を省いた私が悪いのですが、その結論に至るのに時間を要したのは、そもそも連携手順が複雑だからです。ビュワーの用意から始まって、メッシュの変換、エンベロープ設定、キーセット、アクション、マテリアル…。理想を言えば「ボタン1つでファイル出力」ですが、これだけ複雑な手順を要するのは何故でしょうか?

その疑問を解決するキーワードは多分「パフォーマンス(表示速度)」でしょう。地形プログラムの作り込みで大分理解してきましたが、3Dアニメの世界では「綺麗」「多機能」を追及すればするほどパフォーマンスが低下します。

パフォーマンスを上げるには、削れる要素をぎりぎりまで削ることですが、削れる要素はケースバイケース(時と場合による)なので、その状況に最適なアニメモデルもケースバイケース、つまり多様なアニメモデルが存在します。

多様なアニメモデルをボタン1つで変換するのは困難なので、「こんな感じで適当にやってね」というのが現在の状況でしょうか?それにしても、もう少し何とかしてほしいですね。せめてヘルプは日本語にするとかw



◎プログラム未着手について

4月はプログラムにかまけてSoftimageを全くやりませんでしたが、5月はSoftimageにかまけてプログラムを全くやりませんでした。原因は「1つの問題にハマりすぎ」だからです。何やってんだか…(^^;

これは私の考え方や性格によるところが大きく、「壁にぶつかったからといって、それを放置して別のことをやるのは、逃げるようで嫌だ」というのが根底にあるようです。つまり負けず嫌いってことです。

もっとも、進捗最優先モードに突入すると、このようなこだわりは捨てて「何が何でも期限までに実現させる」という自信はあります。短期間で作り上げたダンスゲームや、在職中の仕事の実績などが自信の根拠となっています。

それなら、早くそのモードに突入しろって?それが微妙なんですよね~。このモードは成果物が出来上がる代わりに、品質が低下したり、経験が次に生かせないなどの弊害があるので、できれば避けたいのです。

まぁ何とかXNA連携できたっぽいので、今後ペースが上がることを期待しつつ、もう少し様子をみます。



◎ドキュメント作成について

荊州争奪戦のシナリオ概要を作ろうとしたら、次々と疑問が湧いてきました。

・関羽はなぜあのタイミングで出陣したのか?
・劉備や諸葛亮は何故関羽の後詰を出さなかったのか?
・呉が蜀を裏切るに至った理由は?

そこでまず荊州争奪戦関連年表を作成し、主要イベントを時系列にまとめました。すると改めて様々な事情が見えてきて「なるほど、これが歴史の必然ってヤツか」と感心しました。

例えば、関羽の出陣は「曹操が劉備に直接対決で初めて敗北した直後であり、魏が動揺している時期」なので、タイミングとしては悪くないこと、劉備や諸葛亮は二か月前に漢中を抑えたばかりで動きにくいこと、呉が蜀を裏切るに至った理由は幾つもあること、などです。

また、三国志と言えば「赤壁の戦い」が有名ですが、赤壁の大敗でも揺るがなかった魏が「最大のピンチ」であったことを改めて認識しました。曹操が遷都を建議したのは、ただのビビリじゃなかったんですね(笑)



◎進捗状況チェック

年間スケジュールを参照しながら、進捗状況をチェックすると…うわ~やっぱり遅れまくりです。Softimage修得しか終わらなかったので、当たり前ですが。

ちなみに、顔グラCGは鳳雛さんが50枚全て書きあげてくれました。このクオリティでこのスピードは驚きです。私の方が頑張らないといけませんね。



◎6月の目標

・Softimageで城モデル更新(2日)

・Softimageで槍兵モデル更新(3日)

・アニメライブラリ選定(3日)

・地形モデル描画(4日)

・マップオブジェクトモデル描画(5日)

・マップデータ調整(1日)

・マップオブジェクト属性データ作成(1日)

・その他
 →ブログ更新/HP更新(3日)
 →休息/予備(5日)

殆ど先月の持ち越しです。アニメライブラリ選定には、FBX出力&ACLの調査を含んでいます。



◎次回予告

次回はXNA連携手順をまとめてHPに整理します。目標は明日夜までにUP!

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

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
周倉
周倉
関羽の側近。荊州の戦いでは、得意の水練によりホウ徳を捕獲した。正史に登場しないため架空の人物とされている。



◎メッシュとボーンの入れ替え実験

前回予告どおり、メッシュの入れ替え実験を行います。いきなりメッシュだけ入れ替えても動かなそうなので、ボーンも一緒に入れ替えます。

1.ロボットモデルのシーンファイルをロードする

2.オリジナルモデルを作成する
  (アニメーション登録の手前まで行う)

3.ロボットモデルとオリジナルモデルの
  メッシュとDeformerRoot配下のボーンを入れ替える

4.既存のウエイト設定を削除し、
  エンベロープを再設定する

5.エクスプローラで既存のキーセットを削除する

6.アニメーションマネージャでキーセットを取得する

7.既存のアクションを削除し、新規にアクションを
  作成してXNAで再生する

上記のようにしてメッシュとボーンを入れ替えると、ロボットメッシュは動きましたが、円柱メッシュは動きませんでした。
この実験から、以下の2点が判明しました。

・オリジナルモデルのメッシュかボーンに問題がある

・エンベロープ設定以降の手順に誤りは無い


余談ですが、上記6の手順でSkinModel01の下に例のキーセット(の下の不明オブジェクト)が自動作成されました。このオブジェクトは、メッシュかボーンの階層から拾った情報を元に自動作成されるようです。

SkinModel01に作成されたキーセット



◎さらなる追及

メッシュとボーンのどちらが悪いかを追求したいので、メッシュだけ入れ替えてみました。
(前述の手順3でメッシュだけ入れ替え)

すると、ロボットメッシュは(オリジナルボーンに沿って)動きましたが、円柱メッシュは動きませんでした。

今度は、ボーンだけ入れ替えてみます。
(前述の手順3でボーンだけ入れ替え)

これも、ロボットメッシュは(オリジナルボーンに沿って)動きましたが、円柱メッシュは動きませんでした。


…ということは、悪いのはメッシュ?!
これまでボーン、エンベロープ設定、キーセット、アニメーション付けなどの方が怪しいと思っていたのですが、これは意外ですね。



◎メッシュの何が悪いのか?

メッシュが悪いと言っても、メッシュ作成手順は下記3点だけです。

1.円柱ポリゴン取得
2.フリーズ
3.XNAモデルへの変換

とりあえずフリーズせずにやってみましたが、やっぱり動きません。そもそも、Softimage上では円柱メッシュもちゃんとスキンアニメするんだよね…ということは、XNAモデルへの変換ミス?

しかし、XNAモデルへの変換手順はチュートリアル通り(のつもり)だし、変換後の階層構造も(マテリアル以外は)ロボットと一緒。メッシュのパラメータをざっと眺めてみても、悪そうな所は見当たりません。

うーん…変換手順の問題じゃないとすれば、事前に用意するメッシュの問題かなぁ?例えば、円柱はモデルじゃなくてポリゴンメッシュだからXNA変換に失敗してるとか??

そういえば、「Create Skinned Model」で作成されるメッシュ(箱)は「Skinned Model」のはずだから、まずあの箱をスキンアニメさせてみてはどうだろう?その上で箱と円柱の違いを調べれば、円柱が動かない原因が分かるかも…?



◎箱も動かず

というわけで、箱にボーンを入れてエンベロープを設定し、アニメを付けてXNAで表示しました。

箱アニメ01   箱アニメ02

XNAでは動きません。これでは円柱と一緒です。この箱は「SkinnedMesh」という名前なのに、なぜロボットと同じ手順で動かないのでしょう?


ちなみに、.xsiファイルの中を覗くと、個々のボーンへのFカーブ値などが格納されていますし、この.xsiファイルを再度Mod Toolで開くと動きます。謎は深まるばかりです…。

(メッシュウエイトが少しおかしいように見えますが、これはサンプルのロボットも同様です。アニメーションマネージャを開くと直るようです)



◎ロボットのメッシュを削る

こうなったら、ロボットのメッシュを徐々に削って、箱や円柱に近い状態にしていきましょう。もし途中で動かなくなったら「XNAで動くメッシュの規則性」がわかるかもしれません。また、もしシンプルな状態でも動くようなら、今後はそちらを基本メッシュと見なして、モデルを作成すれば良いわけです。

1.メッシュを削る

2.旧ボーンを削除し、メッシュの大きさに合わせて
  シンプルなボーンを入れる

3.旧ウエイトを削除し、エンベロープを再設定する

4.旧キーセットを削除して新規に作り直す

5.旧アニメを削除して新規に作り直す

6.publishしてXNAで表示確認する

7.1~6を繰り返す



ほほう…足の一部だけの超シンプルな状態としても、ちゃんとスキンアニメしましたね。

この状態をベースに、新規モデルを作成することが出来そうです。とりあえず目的の1つは果たせたようですね。



◎ついに原因判明!!

今後のモデル作成の足掛かりは掴めたようですが、ここまで来たら、動かなかった原因もやはり知りたいです。

で、とことんオリジナルモデルに近付けようと、skin_mesh→Polygon Mesh→Clustersの中の(マテリアル設定関連と思われる)4つのオブジェクトを削除しました。

Clusters配下のオブジェクト   マテリアル削除

マテリアルを削ったので色が落ちるのは予想済でしたが、何とアニメもしなくなりました!つまり、円柱がアニメしなかったのは、このオブジェクトの有無が原因だったのです!!



◎XNAのマテリアルとメッシュ

試しに、例のオブジェクトのうちgrassだけ削ってみました。



grassを削ったら、メガネだけ動かなくなりました。ということは、このオブジェクトは単なるマテリアル情報だけじゃないってことですね。

待てよ?XNAはメッシュをマテリアル単位に複数のModelMeshPartに分割保持しますが、その元がコレなのでは?つまり「マテリアル設定を省いたからメッシュが分割保持されず、XNAで正常動作しない」ということ?そう考えると、Softimageで動くのにXNAで動かない理由も納得できますね。

ぐぅぅ~とりあえずモデルが表示されるからマテリアルは無視してたのに…いっそのこと、何も表示されない方が早く気付けたかもしれません(嘆)



◎次回予告

ようやく原因が判明したので、例のオブジェクトを生成する作業工程(多分マテリアル設定?)を探ります。これでようやく動きそうな予感…。

…おっと、6月になったので、「5月の総括と6月の目標」が先ですね。ああ、5月を振り返るのが怖い…。

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

| BLOG TOP |

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