読者です 読者をやめる 読者になる 読者になる

ツクロウヤ

Unityによるゲーム開発記やUnity,3dsMaxのTipsなどを記載していきます。

【Unity+3dsmax】Unityへのモデル+アニメの出力方法

今回は3dsmax→Unityへの出力方法についてです。
3dsmax2017から新しくゲームエクスポータという機能が追加されましたので、そちらを使用した出力に関してまとめたいと思います。

ゲームエクスポータ

ゲームエクスポータは書き出しの箇所にあります。

f:id:ArtAwA:20170430214745j:plain

ゲームエクスポータでは各種設定を行い、FBX形式で出力することが可能です。
細かい項目の説明などは公式におまかせして、Unityでの設定や自分のやり方などを紹介していきたいと思います。

・公式ヘルプ
[ゲーム エクスポータ](Game Exporter)ダイアログ ボックス | 3ds Max | Autodesk Knowledge Network

モデルの出力

ゲームエクスポータを開くと以下のようなものが開きます。
モデルの出力設定はモデルタブで行います。

f:id:ArtAwA:20170430231508j:plain

【①について】
上部タブの「モデル」「アニメーションクリップ」を選択することによってモデル、アニメの設定タブが切り替わります。

【②について】
書き出し項目を設定することが出来ます。
「すべてを書き出し」「選択を書き出し」「オブジェクトセットを書き出し」の項目があり、「オブジェクトセットを書き出し」の利用頻度が高いです。

f:id:ArtAwA:20170430230708j:plain

オブジェクトセットはメインツールバーの「選択セット作成」から設定が可能です。
(なぜ名称を合わせないんでしょうね... 3dsmaxはこういうの多い...)
オブジェクトセットに設定して何を書き出すかはリグの記事を参照ください。

【Unity+3dsmax】UnityのHumanoid用リグ - ツクロウヤ

【③について】
ジオメトリの設定やカメラなどの設定が出来ます。
アニメを行うモデルを出力する場合は、スキニングの項目にチェック(デフォルトはOFF)を入れておきます。スキニングの項目にチェックを入れておかないとUnityでSkinedMeshRendererにならないので、アニメにメッシュが追従しません。
アニメーションの項目がありますが、こちらはチェック不要です。

【④について】
座標軸とメディアの埋め込みを設定出来ます。
座標軸はアップ軸を「Y軸」「Z軸」設定できるはずですが、Unity上に取り込んでも特にデータ的な変化がありません... (バグ?)
3dsmaxの座標系はZ-UpでUnityはY-UpなのでY-Upに変換したいところですが...
メディアの埋め込みでは設定しているテクスチャなどをFBX内に含むことが可能ですが、Unityに取り込む際は基本的にはバラして入れるので、OFFにしています。

【⑤について】
出力パスなどを設定出来る箇所です。
フォルダアイコンの箇所でパスを設定出来ますが、何故かファイル名のところは手打ちじゃないと設定出来ないようになっています...
ファイルを上書きしたい場合などは同じファイル名をわざわざ入力してやる必要があります。

【⑥について】
設定の保存、読み込みが出来る箇所です。
「モデル」「アニメーションクリップ」でそれぞれ保存ファイルが独立しています。
なので、「モデル」タブで保存をした場合、「アニメーションクリップ」のタブで設定している項目は保存されません。

アニメの出力

アニメの出力はアニメタブで設定を行います。

f:id:ArtAwA:20170501001541j:plain

【①について】
Unityに出力するアニメはここでクリップ名とフレームを設定してあげます。
ココがUnityに出力した際に色々と問題があります...
・注意1:クリップ名が小文字になる
クリップ名は大文字で記載していてもUnityに取り込んだ際に、何故か小文字になる場合があります。Attack01など数字を含む場合などは大文字で取り込まれます。
・注意2:フレームが200を超える場合にUnityで読み込まれない
クリップの開始、終了フレームに200フレームを超える設定をしているとUnityに取り込んだ際にアニメが読み込まれません。FBXのファイル自体にはテキストで展開してみましたがデータが入っているようなので、もしかしたらUnity+このFBXの問題かもしれません...

【②について】

ここではアニメファイルの持たせ方を設定出来ます。
「クリップを1つのファイルに保存」「複数のクリップファイルに保存」があります。管理的には「クリップを1つのファイルに保存」でまとめて出力したいですが、200フレーム超えると読み込まれない問題のために今は「複数のクリップファイルに保存」で書き出しています。
複数保存の場合、クリップ名がファイル名の末尾に追加された形で出力されます。

それでは今回はこの辺で
(´・ω・`*)ノシ

【Unity+3dsmax】UnityのHumanoid用リグ

今回も前回に引き続き、Unity+3dsmaxでリグを組む際のまとめです。
今回は3dsmaxでのリグの構成についてまとめていきたいと思います。
ちなみにUnityのHumanoid用でスマホなどで使用する指などを無くした最小構成のものです。

続きを読む

【3dsMax】Unityで使うときのリグについて

個人開発で現在Unity+3dsMaxの組み合わせでリグやアニメーションの制御、どういったデータを作るとよいかを改めてやっていますが、自分の脳内を整理するためにも何回かに分けて、まとめてみようかと思います。
(現在検証中の箇所なので、内容を修正する可能性があります)

今回はいったん3dsMaxのリグについて。

続きを読む

【Photoshop】テキストの分割ツール

ゲームのUI演出などで、VICTORYなどのテキストが波打つようにアニメーションするものがありますが、そういったものを作る際に、テキストをバラシて、それぞれの文字ごとに書き出すのが面倒くさい...

ということで、Photoshopでテキストを一文字づつや行ごとにレイヤーを分割するツールを作ってみました。

f:id:ArtAwA:20170324013245j:plain

続きを読む

【Unity】マップなどの配置ツール

最近、仕事や個人開発で背景を作る機会が増えてきましたので、その辺で作ったツールのご紹介。

背景を作成する際は柱や地面のタイルなどパーツ毎にアセットを作成し、Unity上もしくは3Dツール上でそのアセットを配置して背景を作成しています。

スナップ機能などがあるとはいえ、Unity上でちまちま並べるのは結構面倒だなということで、配置を補助するツールを作ってみました。

f:id:ArtAwA:20170228224546j:plain

続きを読む

【開発記】ステージ選択とか

またもや久しぶりの更新...
正直あまり芳しくない進捗ですが、中断しないために進捗記載。

今回やったことは、
・ホーム→ステージ選択の実装
・各データをScriptableObject化
 └敵情報、ステージ情報、エフェクト、ショット... etc
・アニメ時の移動処理を修正(検証中)

■各データをScriptableObject化

今までデータ類などはCSVから取得していましたが、ステージ選択を実装する際に、各データなどをScriptableObjectにしてみました。

「例:ショットのパラメータ設定」

f:id:ArtAwA:20170226120617j:plain

拡張しやすかったり、インスタンスしてそのまま使えるので、結構便利だなと思い、他のデータも対応しました。
早めにやっておいた方が良い部分ではありましたが、ただ、今までやっていたことを他の方法でやるようにしただけなので、進行しているわけではなく...
無駄にデータ定義の表示を整えようとすることに時間をかけたり... 反省...

■アニメ時の移動処理を修正

ここが今現在、一番詰まっている箇所...
攻撃をする際に、踏み込んだり、ジャンプしたりしますが、アニメをそのまま再生すると移動時にコライダーがついてこないので、貫通したりしました。

なので、アニメの特定のタイミングでイベントを定義して、指定の移動をTweenで行うといったことをやっていました。

ただ、このやり方は非常に設定が面倒な上にアニメのような調整ができないので、もっさりした動きになっています...

というわけで今現在はこの辺りを検証中。
やりたいこととしては、
・アニメで設定した移動を行う(向いている方向を考慮して)
・CharacterControllerごと移動して、壁などに貫通しない
です。

色々と調べていて、MecanimとApplayRootMotionの設定関連でイケそうな感じだったので検証中ですが、設定の仕方が悪いのか、元のアニメが悪いのか、移動方向とは別方向に移動したり、アニメの一部が壊れたり...
原因を分割するために一旦公式で出ているアニメを使うかと思いましたが、「ユニティちゃん」はRootが動いておらず、「Mecanim Locomotion Starter Kit」は動いていたり...
どういったデータを作ればいいのだろう...
引き続き、検証。

それでは今回はこの辺で
(´・ω・`*)ノシ

【3dsmax+Unity】Unityと3dsMaxのカメラを一致させる方法

今回は3dsmax+Unityでの開発についてのお話を。

Unityで使う3Dモデルやアニメを作る際に、ゲーム上と同じ見た目に合わせて確認といったことは必須になってきますが、Unityのカメラと3dsmaxのカメラを一致させる方法で少し詰まったところがあったので記載しておきます。

■カメラを一致させる方法

同じカメラなので、視野と距離を一致させれば大丈夫だろうと思っていましたが、数値を完全に一致させても見た目が違う...Σ(゚д゚lll)ガーン

そこでUnityのカメラリファレンスを見直してみると...
Unity - マニュアル: カメラ
Field of view:「ローカル のY 軸方向の角度から算出した、カメラ視野角の広さ」
ということで視野を算出する基準が「Y軸」となっています。

ですが... 3dsmaxの基準は「X軸」方向で算出していますので、それを変えてあげる必要がありました。

f:id:ArtAwA:20170127004410p:plain

基準設定のところが「↔」になっているので「↕」にしてあげればOK!
カメラは動作的にUnityと一番近いフリーカメラを使用しています。

これで視野と距離を一致させてあげれば、以下のようにピッタリと。f:id:ArtAwA:20170127004737p:plain

ゲームと同じビューが出来たら、もう後は作るだけ!

それでは今回はこの辺で
(´・ω・`*)ノシ