関平演義では関羽の養子とされているが、正史では記述が少なく実子扱い。荊州の戦いでは関羽に随行し活躍するが、最後は関羽と共に呉に捕縛され首を討たれた。
◎文字が表示されない?サブPCを復旧して「
デフォルトモデルシャドウリグ付き」の手順を書きあげました。
すると例のゴミのようなものが動きますが、今度は画面にパラメータ文字が表示されません。あれ?

以前のプログラムを実行すると、こちらも文字が表示されません。ということは環境上の問題?
またPCを買い替えたい衝動にかられましたが、「では新しいPCなら今の手順でスキンアニメするか?」と冷静に考えると、「環境上の問題と、スキンアニメしない原因は別」という気がするので、やはり動かないと思います。
動かないのを環境のせいにしてPC買い替えるには、まだ早すぎるみたいですね。
では何が原因か?
XNAはフォントイメージ組み込み方式なので「PC環境上にフォントが無いから文字が表示されない」という事態はありえないはずです。他に考えられるのは「環境異常によりエフェクトが正常に再現されず、文字が背景色や透明色のようなもので表示された」というもの。XNAViewer付属モデルが真っ黒に表示されている理由も、これなら納得できます。
ところが、翌日作業を再開すると、文字が表示されました。以前のプログラムも同様。再起動して調子が良い時は正常に表示されるようです。何だかなぁ…。
◎階層の問題?気を取り直してゴミのようなものの動きをよく観察すると、先程付けたアニメーションの動きのうち、モデル全体を選択して付けた動きと同じであることに気付きました。あれはやはり目じゃないか?
目だけ動いていると仮定した場合、何故そんな状態になるのでしょうか?Explorerを見ると、Biped_ShadowのCharacterの階層下にleft_eyeとright_eyeのメッシュだけが存在しているのがあやしい気がします。ひょっとして、ドラッグして移動するのはメッシュではなくモデル全体とか?
…ダメです。動きません。目の付けどころが違うのかなぁ?(シャレじゃないです)
◎モデル変更一向に埒が明かないので、やり方を変えて、.xsiモデルか.FBXモデルを探し出して内部解析することにします。
しかしxファイルの時もそうだったけど、アニメーション付きのサンプルモデルってなかなか見付からないんですよね。…いや待てよ?開発ツールなら普通サンプルモデルが付いてるのでは…ってありました!XNAViewerの付属モデルがそのままdotXSIでしたね!灯台元暗しでした(笑)
早速これを読み込み、AnimationManagerでアクションを選択すると、選択したアクションが再生できます。このメニューって、こういうものだったんですね。
始めからこうすれば良かったなぁ。何か膨大な時間を浪費した気がします…orz
◎やっとスキンアニメーション?!階層構造のチェックやテクスチャが反映されない問題は後回しとして、とりあえずこのサンプルモデルにアニメーションを追加して、アニメーションの付け方や出力の手順がXNA的に正しいかチェックしましょう。
既存アニメに回転を加えてアクション項目を追加し、出力したファイルをXNAで動かすと、アクションは追加されましたが、私が追加した回転は無視されました。やはりどこかの手順に問題があるようです。
いろいろ試しているうちに、AnimationManagerの「Update Action Clip」ボタンを押すと、アニメーションが反映されることが判明しました。もしかして、これが原因?!
…改めてチュートリアルを読むと、確かに(リネームの説明のついでに)そんなことが書いてありました。これだから英語なんてキライだ〜!!(笑)
◎解析しましょう勇んで試したものの、私の手順に「Update Action Clip」を追加しただけでは、結局動きませんでした。まだ何かあるってことか…仕方が無いので、ちゃんと中身を解析しましょう。
ここで一旦整理すると、
・ロボットモデル(シーンファイル、dotXSIファイル)
・キャプテンモデル(シーンファイル、dotXSIファイル)
・ロゴモデル(シーンファイル、dotXSIファイル)
の3つがありますが、ロゴモデルはスキンアニメじゃなさそうなので除外し、私の手順で用意したオリジナルモデル、デフォルトモデルを加えた4点をサンプル扱いとします。
◎階層構造の比較チェックロボット、キャプテン、オリジナル、デフォルトの4つのモデルの階層をざっと比較すると、ロボットモデルとオリジナルモデルが一番近いようなので、「ロボットには存在するがオリジナルには存在しない階層上のオブジェクト」を総チェックしました。
すると意外なことに、キーセットとマテリアル関連以外は、全て同じ階層構造でした。
ロボットのキーセットには見慣れないオブジェクトがぶら下がってますが(履歴?サブキー?)、試しにロボットのキーセットを丸ごと削除してpublishしたら、XNAでちゃんと動きました。キーセットはアニメの追加更新には必要ですが、publishとXNA再生に関しては、特に必要無さそうです。

下にぶら下がってるオブジェクトの正体は不明ですが、キャプテンモデルにも存在しないので、オリジナルモデルがXNAでスキンアニメしない原因とは関係無さそうです。
◎キャプテンモデルの解析一方、キャプテンモデルの方は、不可解な点が多いです。
まず第一に、階層構造がロボットやチュートリアルと異なること。リグコントロール階層があるので、多分「リグを付ける場合のサンプル」じゃないかと思いますが、標準で取得できるリグとも階層構造が異なります。
どちらかと言えば、デフォルト取得モデルよりキャプテンモデルの方がシンプルでわかりやすいのですが、「ではデフォルトモデルの各オブジェクトがキャプテンモデルのどのオブジェクトに相当するか?」と考えると、悩んでしまいます。
第二に、メッシュや一部のオブジェクトが直接選択できないこと。ロック機能はかかってないようですが、何でしょうか?
他にも気になる点が多数ありました。実は最初にこちらのサンプルを見たのでちょっと考え込んでしまいましたが、こちらのパターンは今は無視した方が良さそうです。
◎強引な実験確認したいことがあるので、ロボットモデルで強引な実験を行います。
1.DeformerRoot階層下のleft_foot以外のオブジェクトを
(マウス中ボタンを利用して)全て削除し、オリジナル
モデルのDeformerRoot階層下と同一構造とする
2.メッシュを選択し、(マウス中ボタンを利用して)
DeformerRootにエンベロープを再設定する
3.適当にアニメーションを付けて、XNAで動くか確認する
するとXNAで「モデルのボーンウエイト設定がおかしい」エラーが発生しました。ウエイト設定はエンベロープ設定時に初期設定されるはずですが、以前の設定が残ってて影響したのかもしれません。
そこでskn_mesh→Polygon Mesh→Clusters→EnvelopWeightCls1を削除し、もう一度エンベロープの再設定を行うと、XNAで動きました。
滅茶苦茶してるので見る影もありませんが、(左足のかかとあたりをよく見ると)一応スキンアニメしてます。これで以下のことが確認できました。
・DeformerRootの階層構造の認識に問題は無い
・エンベロープ設定の対象は、
DeformerRootをマウス中ボタンで指定する
・ウエイト設定は不要
(エンベロープ設定時に自動的に設定される)
以前は個々の手順が正しいか否か確信が持てず、不安を抱えたまま試行錯誤してましたが、こんな感じで疑問点を1つ1つ解決していけば良さそうです。
◎次回予告階層構造的には問題無さげなので、手順とパラメータを1つ1つ検証していきます。とりあえずメッシュを強引に入れ替えてみようかな?(笑)
テーマ : ゲーム製作 関連 - ジャンル : ゲーム
コメントの投稿