Version: 2017.3
メッシュのコンポーネント
マテリアル

メッシュ

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

3D ファイル形式

Unity は 2 つの異なる形式のファイルでインポートした メッシュ をサポートします。

  1. .FBX や .OBJ などの エクスポートされた 3D ファイル形式 。3D モデリングウェアは一般的な形式でエクスポートすることが可能です。このファイルは、多種多様なソフトウェアでインポートしたり編集したりすることができます。
  2. 3D やデジタルコンテンツクリエーション (DCC) のプロプライエタリアプリケーションファイル3D Studio Max の .max ファイル形式、Blender の .blend ファイル形式などが含まれます。プロプライエタリファイルはそれを作成したソフトウェアでのみ編集可能です。それらのファイルは一般的に、最初に変換してインポートしないと、他のソフトウェアで直接編集することはできません。SketchUp の .skp ファイルは例外で、SketchUp からでも Unity からでも読み込むことができます。

Unity は両方の形式のファイルをインポートできます。各形式に長所と短所があるため、どちらを選ぶか検討が必要です。

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

Unity は .fbx、.dae (Collada)、.3DS、.dxf、.obj、.skp ファイルを読み込むことができます。3D ファイルのエクスポートに関しては、3D モデリングソフトウェアのドキュメントを参照してください。

長所

  • Unity にモデル全体をインポートする代わりに、必要な部分だけをインポートできます。
  • エクスポートしたジェネリックファイルは、エクスポートしていないファイルよりもサイズが小さいことがあります。
  • エクスポートされた汎用ファイルを使用すると、モジュール単位でのアプローチ (例えば、衝突タイプや相互関係性ごとに異なるコンポーネントを使用するなど) が支援されます。
  • Unity が直接サポートしていないソフトウェアのファイルも読み込むことができます。
  • すべての情報が正しくエクスポートされたのを確認するために、3D ファイル (.fbx, .obj) は、エクスポート後に 3D モデリングソフトウェアに再インポートが可能です。

短所

  • 元のファイルを変更する場合は、モデルを再エクスポートする必要があります。
  • ソースファイルと Unity にインポートしたファイル間のバージョン管理に特に注意が必要です。

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

Unity は Max, Maya, Blender, Cinema4D, Modo, Lightwave, Cheetah3D など DCC ソフトウェアのプロプライエタリファイルをインポートできます。これらのファイルはインポートの過程で Unity によって .fbx ファイルに変換されます。

長所

  • 元のモデルで行われた更新は、自動的に Unity にインポートされます。
  • 最初は簡易ですが、開発とともに複雑化します。

短所

  • Unity プロジェクトを使用するすべてのマシンにライセンスが有効なソフトウェアをインストールする必要があります。
  • Unity プロジェクトを使用するすべてのマシンで、共通のソフトウェアバージョンを使用する必要があります。 異なるソフトウェアバージョンを使用すると、3D モデルをインポートするときにエラーや予期せぬ挙動の原因となります。
  • ファイルが不要なデータで満杯になることがあります。
  • サイズの大きなファイルは Unity プロジェクトのインポートやアセットの再インポートの速度を遅くすることがあります。なぜなら、 モデルを Unity にインポートするとき DCC ソフトウェアをバックグラウンドプロセスとして実行しなければならないからです。
  • Unity は、インポートの過程で内部的にプロプライエタリファイルを .fbx にエクスポートします。このため、.fbx データを検証し問題をトラブルシュートすることが難しくなります。

ノート .ma, .mb, .max, .c4d, .blend ファイルとして保存されているアセットは、それらに対応する DCC ソフトウェアがコンピューターにインストールされていない限り、インポートすることができません。つまり、同じ Unity プロジェクトを作業するマシンすべてに正しいソフトウェアがインストールされていなければなりません。例えば、 Maya を使ってExampleModel.mb を作成し、あるプロジェクトにコピーしたとします。そのプロジェクトで作業する人は全員、コンピューターに Maya をインストールする必要があります。

サポートしているの 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 のブレンドシェイプのウェイトをアニメーションすることになります。

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

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

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

ヒント

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

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

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

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