メッシュコンポーネント
マテリアル

メッシュ

3D世界の大半は、Mesh で構成されています。Asset Store プラグインを除けば、Unity にはモデリングツールが含まれていません。しかし Unity はほとんどの 3D モデリングパッケージと強力な相互関係性を持っています。Unity は三角、四角ポリゴンのメッシュをサポートしています。NURBS、NURMS、サブディビジションサーフェイスは、ポリゴンに変換する必要があります。

3D フォーマット

Unity にメッシュをインポートするには、主に以下の2種類のファイル形式を使います。

  1. .FBX や .OBJ などの エクスポートした 3D 形式のファイル
  2. 3D アプリケーション専用形式のファイル(3D Studio Maxの.Maxファイルや、Blenderの.Blendファイルなど)

どちらの方法でもメッシュをインポートすることはできますが、どちらを選ぶべきかは、検討が必要です。

エクスポートされた 3D ファイル形式

Unity は .FBX.dae (Collada)、.3DS.dxf および .obj の FBX エクスポーターファイルを読み込むことができます。FBX エクスポーターは ここ に、obj や Collada ファイルへのエクスポーターは、さまざまなアプリケーションで用意されています。

長所:

  • 必要なデータのみエクスポートする
  • データを検証可能( Unity にインポートする前に 3D ソフトへ再インポートする事もできる)
  • 一般的にファイルサイズが小さい
  • モジュール単位でのアプローチを推進する(例. Collision の型や相互関係性ごとに異なるコンポーネント)
  • Unityがサポートしていない独自形式の3Dパッケージであっても、この形式にすればサポートできます

短所:

  • プロトタイプや反復作業をするときには時間のかかるパイプラインとなります
  • ソース(作業ファイル)とゲームデータ(例えば、エクスポートされたFBX)の間のバージョン管理を複雑になりやすくなります。

独自の 3D アプリケーションファイル形式

Unity が変換してインポートできるファイル: MaxMayaBlenderCinema4DModoLightwaveCheetah3D、たとえば .MAX.MB.MA など

長所:

  • 反復作業の時間がかからない(ソースファイルを保存すれば Unity が自動で再インポート)
  • 最初の作業がシンプル

短所:

  • Unity プロジェクトを使用しているすべての環境に当該ソフトウェアのライセンスをインストールする必要があります
  • ファイルは、不要なデータにより肥大化することがあります
  • ファイルの容量が大きいと、Unityの更新が遅くなります
  • 検証が少ないデータ(問題のトラブルシューティングが困難)

サポートしているの 3D アプリケーションのためのガイドラインがありますが、ほとんどの場合次に示す種類のファイルをエクスポートすることができます。

テクスチャ

Unity でメッシュが使用するテクスチャは次のルールにしたがって検索されます。最初に、インポーターはメッシュと同じフォルダー、あるいはその親フォルダーに Textures という名前のサブフォルダーがあるかチェックします。見つけられない場合は、プロジェクト内のすべてのテクスチャを全検索します。全検索の主な欠点は多少遅いことに加え、同じ名前のテクスチャがプロジェクト内に 2 つ以上ある場合、正しいものが見つからない可能性があることです。

アセットと同じ階層、あるいは親の階層にある Textures フォルダーにテクスチャを格納する
アセットと同じ階層、あるいは親の階層にある Textures フォルダーにテクスチャを格納する

モデルの FBX インポーターのオプション

マテリアルの生成と割り当て

Unity でインポートされた各マテリアルは次のルールにしたがって処理されます。

マテリアルの生成が無効になっている場合(例えば Import Materials がオフ)、デフォルトの Diffuse マテリアルを割り当てます。有効になっている場合、次の処理を行います。

  • Unity が Material Naming 設定にしたがって Unity マテリアルの名前を選択する。
  • Unity は、この名前を持つマテリアルを検索します。マテリアルの検索範囲は Material Search 設定によって定義されます。 Unity は、マテリアルを見つけると、それをインポートしたシーンで使用しますが、見つけられない場合はマテリアルを作成します。

コライダー

Unity は、Mesh CollidersPrimitive Colliders の 2 つの基本的なコライダーがあります。メッシュコライダーは、インポートされたメッシュデータを使用し、他のオブジェクトとの衝突に使用できるコンポーネントです。インポート設定で、Generate Colliders を有効にすると、メッシュをシーンに追加したときに、メッシュコライダーが自動的に追加されます。物理挙動としては、固体として扱われます。

オブジェクトを動かしている場合(車など)、メッシュコライダーは使用できません。代わりに、プリミティブコライダーを使用する必要があります。この場合、 Generate Colliders 設定を無効にしてください。

アニメーション

シーンから自動的にアニメーションがインポートされます。アニメーションのインポートオプションの詳細については、アセットの準備とインポート を参照してください。

法線マッピングとキャラクター

ハイポリゴンモデルから生成した法線マップを適用したキャラクターがある場合、Smoothing angle を 180°に回転させたゲーム用のモデルをインポートする必要があります。これは、接線が分割される事によって繋ぎ目のライティングがおかしくなるのを防ぎます。これらの設定でもまだ繋ぎ目が残っている場合は、Split tangents across UV seams を有効にしてください。

グレースケールの画像を法線マップに変換する場合は、これを気にする必要はありません。

ブレンドシェイプ(Blendshape)

Unity はブレンドシェイプ(モーフターゲットや頂点アニメーションとも呼ばれます)サポート機能があります。Unity はブレンドシェイプを、.FBX ファイル(ブレンドシェイプとアニメーションの制御)と .dae ファイル(ブレンドシェイプのみ)からインポートができます。Unity のブレンドシェイプは頂点と法線とタンジェントの頂点レベルのアニメーションをサポートします。メッシュはスキンとブレンドシェイプに同時に影響を受けます。すべてのブレンドシェイプでインポートされたメッシュは(スキンを使っていても使っていなくても) SkinnedMeshRenderer を使います。ブレンドシェイプアニメーションは通常のアニメーションの一部としてインポートされます。つまりそれは単に SkinnedMeshRenderer のブレンドシェイプのウェイトをアニメーションすることになります。

法線付きのブレンドシェイプをインポートするには二つの方法があります。

  1. Normals のインポートモードを Calculate に設定すると、この方法と同じロジックがメッシュの法線とブレンドシェイプの計算に使われます。
  2. ソースファイルにスムーズグループ情報をエクスポートすると、Unity はメッシュ用スムーズグループとブレンドシェイプから法線を計算します。

ブレンドシェイプでタンジェントが使いたい場合は、Tangents インポートモードを Calculate に設定してください。

ヒント

  • できるだけ多くのメッシュを結合します。メッシュにマテリアルとテクスチャを共有させます。これには、非常に大きなパフォーマンス上の利点があります。
  • Unity でさらにオブジェクトを設定する必要がある場合(物理特性、スクリプトやその他)、あとで苦労しないように 3D アプリケーションでオブジェクトに適切な名前をつけます。 pCube17Box42 のようにネーミングしたオブジェクトをたくさん作成すると苦労するだけです。
  • 3D アプリケーションで、世界の原点にメッシュを配置させます。これにより、Unity から簡単にメッシュを配置できます。
  • メッシュが頂点カラーを持っていない場合、Unity は最初のレンダリング処理で自動的にメッシュ全体へ白い頂点カラーの配列を追加します。

Unity エディターでは頂点や三角形の数が、3D アプリケーションと比べてかなり多く表示されます

これは正しい数字です。あなたが見ている頂点 / 三角形の数は、描画のためだけに GPU に送信される数です。マテリアルの要件により三角形を 2 回送信する必要がある場合に加え、ハードエッジに設定した法線や、非連続な UV は、モデリングアプリケーションでの表示よりも、頂点 / 三角形の数を大幅に増やします。ストリップを構成するには、三角形が 3D や UV 空間で連続している必要があるため、UV に繋ぎ目がある場合、ストリップを成立させるために縮退した三角形が作成されます。これは、合計数をより増加させます。

メッシュコンポーネント
マテリアル