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

メッシュ

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 ファイルへのエクスポーターは、さまざまなアプリケーションで用意されています。

長所:

  • 必要なデータのみエクスポートする
  • 検証可能なデータ(インポートする前に 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 アプリケーションでオブジェクトに適切な名前をつけます。「 pCube17 」または「 Box42 」のようにネーミングしたオブジェクトをたくさん作成すると苦労するだけです。
  • 3D アプリケーションで、世界の原点の中心にメッシュを配置させます。これにより、Unity により簡単にメッシュを配置できます。
  • メッシュが頂点カラーを持っていない場合、Unity は最初のレンダリング処理で自動的にメッシュ全体へ白い頂点カラーの配列を追加します。

Unity エディターでは頂点や三角形の数が、かなり多く表示されます( 3D アプリの表示と比較して)。

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

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