傅士仁荊州の要地公安城を守備していたが、失火や後方支援の失態を責められて関羽に恐れを抱き、虞翻の説得を受けて呉に降伏した。正史では士人との記述が多い。
◎要調査前回「スケールを調整すると歪みが矯正できる」と書きました。実際、初期表示はこれで直るのですが、表示をリセットする(パッドの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包括してるのかと思ってましたが、完全に別モノで別の値だったのですね。
◎座標値の確認シーンファイルのソースによって現象が異なることは判明しましたが、シーンファイルの違いが何故表示状態の違いに結び付くのか、内部的な原因がまだ判明してません。
そこで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から作り直しです。ふぅ〜。
テーマ : ゲーム製作 関連 - ジャンル : ゲーム