プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
弓兵モデル作成23
開発中の弓兵モデル
矢が正式に追加された。弓や弦との連動を図るが…?



◎1年ぶりの更新

注意事項をHPにまとめました。

SoftimageスキンモデルをXNAで動かす際の注意事項

改めて整理すると、注意事項多いですね。マテリアルやシェーダ関連の注意事項加えたら、もっと凄いことに…(汗)

どれか1つでも満たさないとアニメが崩れます。「まともに動く方が奇跡!」ってのは言い過ぎですが(笑)、「たかが弓1つ加えるだけ」と侮ると、痛い目を見るということがよく分かりました(^^;



◎矢の連動を図る

ブログに書き忘れましたが、矢と矢筒は以前作成しました。今回は矢を弓の動きに連動させます。

まず矢のボーンですが、弓中央ボーンをデフォーマとした場合、以下のようになります。

   弓を引く →
 → 弓中央ボーンのスケールが変動する →
 → 矢の長さが変わる

これでは都合が悪いので、弓中央ボーンとは別に矢ボーンを新規作成します。

そうなると、弓中央ボーンと矢ボーンの動きを連動させる必要がありますが、位置コンストレイントで矢ボーンと弓中央ボーンの根元(ルート)の位置を合わせ、向きコンストレイントで矢ボーンと弓中央ボーンの向きを同一方向に連動させます。

弓兵モデル作成20

弓の向きと連動するようになりましたが、矢の向きが反対ですね。

こういう時はオフセットで調整できるかと思ったのですが、コンストレイントのオフセット値にZ軸:180度などと設定すると、弓が3次元回転しても無条件でZ軸に180度加算されるだけなので、上手くいきません。

そこで、Static_KineStateの回転Z:90を-90に変更すると、

弓兵モデル作成21

弓と矢のメッシュの動きはOKですが、弓ボーンは逆向きになってしまいました。ボーンは表示されないので最悪これでも使えることは使えますが、開発上好ましくないですね。



◎延々と試行錯誤の繰り返し(五七五)

矢の向きを逆にするのは簡単そうで意外と難しく、終いには弓中央ボーンを作り直して向きを反転する方法まで試したのですが、その方法だと弓中央ボーンのエフェクタと中間ボーンのエフェクタの位置を合わせる必要があり、位置コンストレイントを設定しても機能せず上手くいきませんでした。
まぁ仮に上手くいったとしても、ボーンやコンストレイントの構造がより不自然になる気がしますが…。

結局、前項の方式で妥協し、矢ボーンを短くすることで開発への悪影響を減らします。Softimageでは狙い通りに動くようになったので、XNAで試すと…?

弓兵モデル作成22

矢だけでなく弓まで変な位置に出現しました。いつの間にか以前の状態に戻ってしまったようですが、何が悪いのでしょうか?



◎3つ目の要因

冒頭のHP記事に沿って一通りチェックしましたが、問題は無さそうです。他に心当たりと言えば、デバッグ用のダミーメッシュを削除したことぐらいですが…えっ?ダミーメッシュを再作成してエンベロープを設定したら、直りましたよ?

そうか、そういうことだったのね…。

前々回のブログで、弓の追加に50時間もかかった原因を2つ挙げました。しかしさらにもう1つあったようです。それは弓中央ボーンにエンベロープが設定されてなかったこと。
どうやら、階層に非デフォーマボーン(エンベロープ未設定ボーン)が含まれると、SoftimageとXNAの両方で悪影響が出るようです。

 →非デフォーマボーンはリファレンスポーズ対象外であり、
  アクターのリセットを実行すると、向きが不定になる

 →非デフォーマボーンはPublisjhの対象外??(未確認)

途中からデバッグ用にダミーメッシュを追加しましたが、あれが回避策になってました。それを知らずに今回削除してしまったので、再び崩れたわけですね。
(冒頭HPと前々回ブログに本件を追記しました)

弓兵モデル作成23

とりあえずアニメが崩れない状態になりました。しかし、矢はXNAで動きません。XNAはチェインルート未サポートのため、チェインルートに位置コンストレイントを設定しても無視されるようです。



◎次回予告

やり方を変えないとダメっぽいですね。というわけで、次回も矢の連動を図ります。

スポンサーサイト

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

| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
三国志12
三国志12
三国志シリーズの最新作。今回は秘策と技法があり、秘策は1度発動すると消えてしまうが効果絶大。技法は秘策ほどの効果はないが一度獲得すれば永久に効果を得られる。オンライン対戦も可能。



◎3月の目標達成度

・活動時間月120時間以上

実績:52h(達成率:43%)


・弓兵モデル作成(32h)

実績:34h(達成率:70%)


・中距離戦の実装(40h)
・攻撃任務改修(8h)

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


・ブログ更新/HP更新(40h)

実績:18h(達成率:100%)


3月も悪いのですが、4月は月間目標を掲げることすらできませんでした>_<



◎作業時間分析

作業時間集計2012年3月(PDF形式)

作業時間集計2012年4月(PDF形式)

○良かった点
・XNA連携失敗の原因を究明し、問題を解消した

○悪かった点
・活動日より休みの方が多い
・4月中旬に2週間休止した
・XNA連携確立だけで50h以上かかった

改めて振り返ると…サボリ具合がハンパないですね(--;

そしてもう一つ驚くべきことは、弓を追加するだけで50h以上かかったという事実。常識では考えられません><



◎サボリまくった理由

以前槍兵を作りました。旗に持ち替えて旗手も作りました。ならば弓兵も簡単に作れるはずです。実際、モデリングだけなら5分とかかりませんでした。

ところが、アニメを付けてXNAで動かそうとすると、全然上手くいきません。

  原因調査 → 判明? → 修正 → XNAで崩れた →
→ 原因調査 → 判明? → 修正 → XNAで崩れた …

延々とこの繰り返しです。地獄で石を積み上げては崩される作業を延々と繰り返すような気分になり、やる気が失せてサボリまくり(ーー;



◎何が悪かったのか?

今回は、技術的に新しい要素は無く、既に会得したスキルだけで作れると思ってました。だから「出来て当たり前」と思っていたのですが、この認識が甘かったですね。

槍兵や旗手のXNA連携は達成したものの、試行錯誤で会得したスキルは‘あやふやな知識と経験’に過ぎず、上手くいかない時は、原因に心当たりが多すぎて絞り込めません。やむなく心当たりを全て試したものの、それでも原因が特定できず、悩みまくりました。

結局今回は問題点が複数存在し、全て修正しないと効果がありませんでしたが、そういう時に‘あやふやな知識と経験’では全く歯が立ちませんでした。

反省点は下記2点。

・己のスキルを過信しないこと
 →現状は初心者レベル(弓追加に50hかかるレベル)

・あやふやな部分を減らすこと
 →ノウハウをHPにまとめること



◎歯の治療中です

差し歯が取れて化膿し酷い状態になったので、4月中旬から歯医者に通い始めました。

治療中は麻酔が効いてて痛くないです。しかし治療後は違和感が酷く鈍痛も続き、日常生活に支障はないが考え事は難しい状態に陥りました。何日か経つと徐々に慣れますが、次の治療でまた違和感&鈍痛復活。そのパターンが2週間続きました。じっとしてると余計酷く感じるので、体を動かしたり車を運転したり(10年ぶり?)して気を紛らわせてました。

引っ越したので、以前と異なる歯医者に通ってますが、ハズレっぽいなぁ…(--;



◎サボリ対策

中途半端は効果が無いようなので、やはり週単位のペナルティルール(アニメ/ゲーム禁止)に戻します(反動は覚悟の上)。
これに先立ち、レコーダーのHDDを増設しましたw


それと、月間目標は一旦ハードルを下げます。しかしそれすらも達成出来ない時は、翌月から最終手段に踏み切ります。

「自分の金を親に預けて、目標達成した場合のみ返してもらう」

この手法は、開発を完全に仕事と見なし「お金を主目的にゲームを作る」ことを意味します。これでは既存のゲーム会社と何ら変わらないので、極力避けたかったのですが、サボリ癖が治らなければ仕方ありません。



◎社会問題の論文

原発について記述しました。あとがきも追加しましたので是非ご一読ください。
(本文2頁+あとがき1頁)

原発ありきの弊害について



◎進捗状況チェック

5月にサボリ癖が治ったか様子を見て、6月に年間スケジュールを作る予定です。



◎4月(27~30)の目標

・XNA連携のノウハウ整理(8h)

・弓兵モーション作成(8h)

・ブログ更新/HP更新(8h)



◎5月の目標

・活動時間月100時間以上

・弓兵モーション作成(16h)

・弓兵画像抽出登録(8h)

・中距離戦の実装(40h)

・攻撃任務改修(8h)

・ブログ更新/HP更新(28h)

最終手段を使わなくても済むよう頑張ります(^^;



◎次回予告

次回は、XNA連携のノウハウをまとめてHPにUPする予定です。

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

| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
弓兵モデル作成19
開発中の弓兵モデル
Softimageで作成した弓兵が、ようやくXNAでまともに動くようになったらしい。



◎XNA向けのボーン構造

XNAで崩れる原因を探るため、試行錯誤を延々と繰り返して、ようやく「XNA向けのボーン構造になっていない」ことに気付きました。

弓を手から離すモーションを作らない前提だったので、手と弓の中間にボーンを設けなかったのですが、エンベロープ設定用のポーズは、手と弓が離れています。それでもSoftimageはチェインルートが有効なので正常動作しますが、チェインルートがサポートされないXNAでは、位置もアニメもおかしくなります。

エンベロープ設定用のポーズはXNAで再生しないので、モーションの一種とは考えなかったのですが、結論としては中間ボーンが必要です。



◎中間ボーン追加

1 フロント画面で中間ボーン作成

2 階層構造&名称修正

3 中間ボーン以下のアニメキー全削除

4 各チェインのSRT修正

5 リファレンスポーズを設定

6 モーション&アニメキー作成

中間ボーンのスケールを縮小して手に持たせると、階層下の弓全体が連動して小さくなるので、階層下の各チェインルートのスケールを元に戻します。

弓兵モデル作成16

うへ~何じゃこりゃ?



◎コンストレイントの影響

スケール関連の問題かと思っていろいろ試したのですが、そうではなくて、ボーン追加後にコンストレイントが残っていたのが悪さしたようです。Softimageでは正常に機能してるように見えたので、なかなか気付けませんでした(--;

で、全てのコンストレイントを削除してアクターのリセットを実行すると、被コンストレイントのボーンが変な位置に移動しました。…アレ?

もしかしたら、リファレンスポーズはずっとこの位置で記憶されてて、アクターのリセット直後にコンストレイントが働いてたのかもしれません。



◎リファレンスポーズの誤認

「リファレンスポーズの設定」は、エンベロープ設定前のメッシュorボーン位置を記憶する機能と認識していたのですが、これは誤りで、実はエンベロープ設定後のメッシュorボーン位置を記憶する機能でした。

よって、エンベロープが存在しない中間ボーンには機能しません。

ちなみに、エンベロープ設定前はスケルトンポーズでした。
この機能はXNA連携で使えなさそうですが…。




◎XNA非サポート機能

リファレンスポーズやコンストレイント等の機能はXNAでサポートされず、無視されます。それでSoftimageと異なるアニメがXNAで再現されるわけですが、一部のボーンだけリファレンスポーズ適用前の位置に戻っていた可能性があります。

そう考えて、チェイン/ボーン構造とリファレンスポーズとアニメキーを様々な組み合わせで試したのですが、どうやってもXNAで崩れてしまいます。う~ん…。



◎中間ボーンの位置

その後もあれこれ試すうちに、意外な事実が発覚しました。中間ボーンに円柱オブジェクトをエンベロープとして設定すると

弓兵モデル作成17   弓兵モデル作成18

手と弓の間に存在すべき円柱オブジェクトが、XNAでは変な場所に存在します。アニメキーやコンストレイントを付けても外しても変わりません。なんでこーなるの?



◎メッシュのセンター

その後も「XNAボーン数の上限を超えたのでは?」とか「XNAのボーン数増加改修で悪影響が出たのでは?」とかあれこれ考えて試したのですが、結局原因は「メッシュのセンターを原点に移動してなかった!」ということでした。

○センターの移動手順

1 (必要に応じて)アクターのリセット

2 エンベロープを一時削除

3 オブジェクトを選択

4 センターボタンを選択

5 グローバル座標系を選択

6 手入力でsrtを原点に修正

7 エンベロープを戻す

(注:階層化されたオブジェクトのセンターを移動する場合は、ConstrainのChldCompボタンを利用すること)

弓兵モデル作成19

ようやく、XNAでも崩れずにSoftimageと同じアニメが再現されました。

いや~長かったですね!



◎まとめ

弓兵モデルがXNAで崩れた主な原因は以下の通りです。

:ボーン構造がXNA向けになってなかった
:・メッシュのセンターを原点に移動してなかった

に関しては前回冒頭で試したものの、修正前だったので崩れました。崩れたので、原因候補から外してしまいました。

また、修正後は「は以前試した」ので原因候補から抜けてしまいました。

XNA連携は注意事項が山ほどありますが、どれか1つでもミスると崩れます。
また、ミスが複数の場合、原因も分かり難いです。

しかし弓1つ追加するのに何十時間もかかるとは!><


(2012/4/29追記)
:弓中央ボーンにエンベロープが設定されてなかった
 →階層に非デフォーマボーン(エンベロープ未設定ボーン)
  が含まれるとアニメが崩れるケースがある


(2012/5/7追記)
:中間ボーンにエンベロープが設定されてなかった
 →非デフォーマボーン(エンベロープ未設定ボーン)は
  キャラクターキーセットに含まれないため、
  アニメが崩れるケースがある





◎次回予告

4月になったので、次回は「3月の総括と4月の目標」です。

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

| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
弓兵モデル作成15
開発中の弓兵モデル
Softimageではまともに動くが、XNAで再生すると崩れる。
その原因は…?



◎キーセットの再作成

Softimageでは弓アニメがきちんと再生されますが、XNAで再生すると崩れます。これがなかなか修正できずに苦戦しましたが、キャラクターキーセットを再作成してなかったことに気付いて実施すると

弓兵モデル作成11

変化はありましたが、まだオカシイです。

センター機能を使用してしまったのが原因かと疑ったのですが、原点に戻しても直りません。

まだ何かあるのか?う~ん…(ーー;



◎チェインルートの位置調整

しばらく悩みまくったのですが、アクターのリセットを実行した状態でボーン位置をよく観察すると、弓中央ボーンと弓上下ボーンの初期位置が異なることに気付きました。

弓兵モデル作成12

弓中央チェインルートの下層に弓上下チェインが配置された階層構造なので、弓中央チェインの位置を動かすと、弓上下チェインも(Softimage内では)自動的に連動します。しかしXNAはチェインルート非サポートのため、チェインルートの位置が異なると、XNAで崩れるようです。

チェインルートやメッシュの位置を調整します。

1 すべてのコンストレイントを削除
2 弓チェイン階層を一時解体
3 エンベロープ削除
4 チェインルートとボーンの位置を調整
5 メッシュの位置を調整
6 弓チェイン階層を戻す
7 エンベロープ再設定
8 リファレンスポーズ再設定
9 コンストレイント再設定

その後弓を手に持たせてアニメキーを付加すると、腕の動きに合わせて弓が伸縮しました。

これで直った!…と思いきや、アクターのリセットを実行して再度アニメを再生すると

弓兵モデル作成13

Softimageでも弓がおかしくなりました。
先程まできちんと動いてたのに(泣)



◎初期ポーズ不定の影響

Softimageには初期ポーズ設定用のニュートラルポーズ機能がありますが、XNAはこの機能をサポートしておらず、設定するとXNAで崩れます。よって、初期ポーズ不定のまま編集作業継続を強いられるわけですが、これが混乱を招く要因の1つと言えます。

例えば、(例え最終フレームであっても)腕の一部を動かすと、そのポーズが初期状態と言うか、そのまま再生されます。マウス操作をちょっと誤っただけで悲惨なことになりかねないので、編集中は常に神経を尖らせます。但し、腕にアニメキーが(フレームの前後に関係なく)1度でも付いていれば、前述の話は完全に無視されます。

結論としては「全ての稼働ボーンにアニメキーを付けろ!」となりますが、一個所でも付け忘れると、何かの操作(セーブ/ロード、アクターのリセット、Publish等)後に思いもよらない崩れ方をするので混乱します。また、キー付加後にモデルを編集した場合も崩れやすいです。



◎原因判明

で、今回もキーの付け忘れか、或いはキーの付け直しが必要かもしれない(アニメキーが初期ポーズからの相対座標だとしたら、初期ポーズ変更する度にキーの付け直しが必要?)と疑ったのですが、今回は違いました。

今回こうなった原因を、時系列で記述します。

1 弓中央チェインルートをマウス操作で移動した
  →階層下の弓上下チェインルートも自動的に移動

2 弓中央チェインルートにアニメキーを付与した
  →弓上下チェインルートにも付与すべきだった?

3 アクターのリセットを実行すると、
  各チェインルートはリセット時の位置に戻る

4 アニメを再生すると、
  弓中央チェインルート:アニメキーの位置から再生
  弓上下チェインルート:リセット時の位置から再生
  →弓上下エフェクタにコンストレイントが働くので、
   崩れ方が不可解に見える

そうか…そういうことだったのね。

Softimageモデルは、これまで何度も崩れまくって、その度に強引に修正(モーション再作成し、わけもわからずあちこちにアニメキーを付けまくり、XNAで動作確認)してました。

完成したはずのモーションを何度も作り直すのは、大変なストレスです。「直してもまた崩れるんじゃないか?」という不安もあり、やる気を無くす要因でもありましたが、今回初めて原因が分かりました。



◎対処

原因は判明しましたが、仕様には納得しきれてません。1番で階層下のものが連動するなら、4番でも連動してしかるべきと思うのですが…。

それはともかく、対処を進めましょう。

2番に記述した方法もありますが、それだと弓を移動する度にアニメキーを3回付与する必要があります。手間がかかるし、忘れそうですね。

というわけで、弓上下チェインルートにも位置コンストレイントを設定し、弓中央チェインルートに連動するようにします。

弓兵モデル作成14   弓兵モデル作成15

Softimageでは直りました。しかしXNAでは崩れます。

…さすがXNA連携。まだ何かあるのね(ーー;



◎次回予告

話が長くなるので、続きは次回とします。

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

| BLOG TOP |

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