(スキン)メッシュのモデリング&テクスチャ作成

オリジナルキャラクターの作成を始める前に


3dsMAXのFBXプラグインを利用できる最上限のバージョンにしておきます(公式ではFBX2012を推奨している)
unityでMAXファイルを直接インポートする際もこれが利用されているので必須の工程です。かならず最上限にしてください
これにより以下の事が可能となります

  • メッシュをスケルトン階層、法線、テクスチャ、およびアニメーションつきでエクスポートできます
  • 3Dパッケージを再インポートにアニメーションつきモデルが望んだだとおりにエクスポートできているか確認できます
  • メッシュのないアニメーションをエクスポートできます

次に3dsMAX内の単位をメートル法にします。これにより3dsMAX上で1mの物体がunity上でディフォルトの場合0.01mになります

3dsMAXをオーサリングソフトとして利用する事を前提にオリジナルキャラクターの作成を行います
基本的にMAXファイルとunityプロジェクトは各々隔離しFBXファイルで各モーションとスキンメッシュを製作してユニティとやりとりする方針です

<公式資料>

<非公式資料>
レガシーでのモーション作成資料であり情報としては古いものである(現在では使用しないほうが良い手法)あくまで参考資料としてここに置いておく

3dsMAXの基本単位をメートルに設定していた場合、3dsMAX上で作成した1mの物体はunity上でディフォルトの場合0.01m
これはインポート時、unity側でモデルのScaleFactorの値を1に変更することで解決可能ですが、

現在、メカニムとImporterSettingsのModel-ScaleFactorとの間にバグがあります(2013/10/07時点)
デフォルトの「0.01」から「1」に変更した場合、Avatarのリグが大きくならずメッシュが壊れて表示されてしまいます
これを避ける為に、あらかじめ3dsMAX上で100倍の大きさにしてキャラクターを作成する必要があります
身長1.6mのキャラクターであれば160mで作成して出力してください


モデリングワークフロー


3dsMAX及びZBrushをオーサリングツールとして使う場合、2系統のワークになる
ゲーム専用のノーマルマップを持ったLOD付きハイデフ仕様モデルを作成する場合、3dsMAXに加えZburshを利用してモデリングを行う

モデリング ⇔ UV展開 → テクスチャ作成 ⇔ unity出力 ⇔ unityマテリアル作成
コリダーモデリング ⇔ unity出力 → コリダーメッシュ(当たり判定)割当 ⇔ unityフィジックマテリアル作成

ZBurshでのモデリング → Zbursh上で着色 → トポロジを利用してゲーム用低ポリゴンモデルを作成
 → 各LODモデル作成 → ノーマルマップ及びテクスチャのベイク → テクスチャへの最適なリタッチ
 → 3dsMAXへインポート → 各LODモデルのスキンメッシュ化

モデリング

モデリングはZBrush及び3dsMAXで行う



資料



unityマテリアル作成


unityは複数の既定シェーダー「BuiltInShader」を持っている。ユーザーはこれらを自由に利用できる
シェダーの作成自体もfxファイルのコーディングにより可能

3dsMAXのマテリアル編集機能では単純なBuiltInShader「Diffuse」の利用のみ可能
3dsMAX側マテリアルで「拡散反射光」のスロットにビットマップを設定すればそのテクスチャをマッピングして出力できる
その他のunityマテリアルの詳細な設定は残念ながら出来ない(例えばノーマルマップスロットに対するテクスチャの割り当てやパラメータ調整等は不可能)

3dsMAXのマテリアル名をunity上のアセットフォルダ内に存在するマテリアル名と同名にするとインポータは自動的にそれらを検索し接続する
(つまり一度unity内でマテリアル(シェダーの設定込)を作成すれば、そのマテリアル名を使い3dsMAXから利用できる)
インポーターが同名のマテリアル名をアセット内から見つけられない場合、同名のBuiltInShader「Diffuse」マテリアルを作成する
unityはMAXファイル更新、テクスチャファイル更新を常に監視し、変更があれば即反映する(MAXで作業、unityでプレビューの流れ)


コリダーメッシュ(当たり判定)の作成


既存のコリダーコンポーネント(BoxCollider等)を利用する
もしくは専用のメッシュを別途作成。unity上でコンポーネントとしてPhysics -> MeshColliderで割当てる形式になる
(残念ながら3dsMAX内でメッシュとコリジョンメッシュを同時配置して出力等の作業は出来ない)
ちなみに自分自身のメッシュも当たり判定として割り当てる事が可能

動的なオブジェクト(例えばプレーヤーキャラ)等はコリダーメッシュの単純化必須
静的なオブジェクト(Staticチェックがオンにされたゲームオブジェクト)の場合、
多少ポリゴン数が多くても平気で動くようだ(面倒なら自分自身をコリダーメッシュにしてもOK?
(Staticチェックに関してpro版でない限り高速化はできない様です)


staticOn.jpg




UV展開


<フラッテンマッピング>
おすすめ|面角度スレッショルド100(90度以上の角度でも接続とみなして展開する)|間隔0.02|
クラスタを平均化on|クラスタを回転on|穴部分に配置on|
複雑でない形状に対し非常に高機能な展開をする。
「選択をステッチ」機能と併用すると展開図(あじのひらき)が作れる(強力!)

<選択をステッチ>
接続する頂点同士を見て、UV配置で方向を合わせ「片方辺」の頂点を選択した状態で
「選択をステッチ」を実行すると自動的に片方の断片を接続する位置に移動して接続してくれる。
形状は保たれたまま接続されるので大きさはなるべく合わせておく。
(非常に強力なツール)

・よくやる手順
面を選択→フラッテンマッピング→選択をステッチ
もしくはサブオブジェクトパラメータで平面マップを利用する。
選択パラメータの「+」「-」とUV編集ウインドウの「+」「-」は違う。
UV編集側はエッジを検出して選択範囲を広げたり出来る。

<ツール→UVパッキング>
・クラスタの平均化 テクスチャが伸びないように各面平均的なサイズに変更してUVを配置する。
・クラスタを回転 ?断片を回転させてる?
・穴部分に配置 読んで字のごとく
おすすめ|線形パッキング|間隔0.02|クラスタの平均化
(選択した頂点のUV範囲のみにも行なえるので、うまく利用すると良い)

<UVやポリゴン選択のコツ>
選択パラメータで連続したポリゴンを選択する際
「平面角度」で面の角度変化度数を指定して選択を制限、拡張できる。
「背面を無視」で読んで字のごとく
「要素による選択」で連続ポリゴンを選択できる。

  • 最終更新:2014-06-13 12:32:14

このWIKIを編集するにはパスワード入力が必要です

認証パスワード