On this page |
概要 ¶
Houdini Engine for Unityは、Unityメッシュを出力ジオメトリとして生成することができ、さらにUnityメッシュを入力ジオメトリとしてHoudiniにアップロードすることもできます。
入力 ¶
ノード入力またはオブジェクトパス入力パラメータを使用することで、UnityメッシュジオメトリをHoudiniにマーシャリング(等価変換)することができます。 マテリアルの割り当ては、そのマテリアルパスが入ったPrimiriveアトリビュートとして保存することができるので、同じジオメトリをUnityにエクスポートして戻す双方向変換でもそのマテリアルの割り当ては維持されます。
出力 ¶
Houdiniアセットからのジオメトリ出力は、通常ではUnityメッシュであり、 MeshFilter または MeshCollider に格納されます。
アセットには通常 オブジェクト が含まれ、そしてそのオブジェクトには ジオメトリ が含まれ、そしてそのジオメトリには パーツ が含まれています。この構造によって、Unityメッシュがどのように生成されるかが決まります。
-
オブジェクト(OBJ) ノードは、Houdiniのトランスフォームノードです。他のOBJノードやジオメトリ(SOP)ノードを含んでいます。
-
ジオメトリ(SOP) ノードは、Houdiniのジオメトリコンテナノードです。ジオメトリを直接含むのではなく、パーツを含んでいます。
-
パーツ は、メッシュを生成するのに使用される実際のジオメトリおよびアトリビュートデータを含んでいます。
通常、パーツ内のすべてのジオメトリは単一メッシュとして生成されます。 コリジョングループまたはLODグループを使用した場合のみ、ジオメトリを別々のメッシュに分割することができます。 それ以外のグループは1つのメッシュにまとめられ、LODグループが存在した場合は、それ以外のジオメトリが無視されます。
Note
デフォルトでは、メッシュは分割された頂点を使用して生成されます(つまり、それぞれの三角形が固有の頂点を持ちます)。 これを変更して、ポイント(共有の頂点)を使用するようするには、 ASSET OPTIONS セクションの Generate Mesh Using Points チェックボックスをオンにします。
LOD(詳細レベル) ¶
LOD(詳細レベル)メッシュは、LODグループを使用して生成することができます。
Note
LODはUnity 2017.1以降でのみ対応しています。
Houdiniでは、各LODのジオメトリを“lod”で始まる名前のプリミティブグループに追加します。 グループ名のアルファベット順がLODの順番になります(lod0、lod1、lod2など)。
プラグインがこれらのグループを検出すると、 LODGroup コンポーネントが出力GameObjectに追加され、LODメッシュを含む子GameObjectが作成されます(LODグループごとに1つの子)。 ASSET OPTIONS セクションの Use LOD Groups チェックボックスがオンになっていることを確認してください(オフの場合は、オンにしてからアセットを再クックします)。
LODGroupに使用されるscreenRelativeTransitionHeight(スクリーン相対遷移高さ)の値は、lod_screensizes
という Detail float配列アトリビュートで指定することができます。
このfloat配列は、対応する数のfloat値を含む必要があり、それぞれの値は0から1、または1から100の範囲でなければなりません。
後者の場合、UnityのLODシステムとの互換性を維持するために、1を越える値は100で割られます。
このアトリビュートが指定されていない場合は、デフォルト値が使用され、各LODは0から1の間で均等な遷移範囲を受け取ります。
Note
LODグループ内の パック ジオメトリは、LODメッシュとして作成されません。 むしろそれはインスタンス化されたジオメトリとして扱われます(パックプリミティブを参照)。
コライダー ¶
ジオメトリのグループ名にキーワードを使用することで、生成されたメッシュに自動的にコライダーを追加することができます。 これらのグループ名は以下の通りです:
メッシュコライダー :
コリジョン |
説明 |
---|---|
|
凸状でなく、レンダリングされないメッシュコライダーを追加します。 |
|
凸状でなく、レンダリングされるメッシュコライダーを追加します。 |
単純なコライダー(Unityプリミティブコライダー) :
コリジョン |
説明 |
---|---|
|
単純なボックスコライダーを追加します(グループ内のジオメトリは無視します)。 これは、ジオメトリグループ内のすべての頂点をカプセル化した寸法を持つ軸平行なボックスです。 |
|
単純な球体コライダーを追加します(グループのジオメトリは無視します)。 これは、ジオメトリグループ内のすべての頂点をカプセル化した寸法を持つ軸平行な球体です。 |
|
単純なカプセルコライダーを追加します(グループのジオメトリは無視します)。 これは、ジオメトリグループ内のすべての頂点をカプセル化した寸法を持つ軸平行なカプセルです。 |
|
メッシュとして作成されたジオメトリで単純なボックスコライダーを追加します。 これは、ジオメトリグループ内のすべての頂点をカプセル化した寸法を持つ軸平行なボックスです。 |
|
メッシュとして作成されたジオメトリで単純な球体コライダーを追加します。 これは、ジオメトリグループ内のすべての頂点をカプセル化した寸法を持つ軸平行な球体です。 |
|
メッシュとして作成されたジオメトリで単純なカプセルコライダーを追加します。 これは、ジオメトリグループ内のすべての頂点をカプセル化した寸法を持つ軸平行なカプセルです。 |
凸状 :
コリジョン |
説明 |
---|---|
|
凸状で、レンダリングされないメッシュコライダーを追加します。 |
|
凸状で、レンダリングされるメッシュコライダーを追加します。 |
トリガー :
コライダーをトリガーに変換するために、上記の名前に trigger を追加します(つまり、 Is Trigger トグルをオンにします)。 メッシュコライダーについては、凸状でなければならないことに注意してください。
-
convex_collision_geo_trigger
-
rendered_convex_collision_geo_trigger
-
collision_geo_simple_trigger_box
-
collision_geo_simple_trigger_sphere
-
collision_geo_simple_trigger_capsule
-
rendered_collision_geo_simple_trigger_box
-
rendered_collision_geo_simple_trigger_sphere
-
rendered_collision_geo_simple_trigger_capsule
上記のいずれかにグループ化されたジオメトリは、他のジオメトリから分離された個別のメッシュとして生成され、MeshColliderコンポーネントのメッシュとして設定されます。
三角形と四角形 ¶
デフォルトでは、ジオメトリのConnectivityがQuadrilateralsに設定されていても、プラグインは常に三角形トポロジーのメッシュを生成します。 四角形トポロジーのメッシュを生成するには以下を実行します:
-
Plugin SettingsのGEOMETRYセクションで、 Max Vertices Per Primitive を 4 に変更します。
-
ジオメトリのConnectivityがQuadrilateralsに設定されていることを確認するか、ジオメトリがすべて四角形で構成されていることを確認します。
-
HDAを再クックします。これで、四角形トポロジーのメッシュが生成されるはずです。
Note
-
四角形トポロジーを使用する場合でも、Unityはメッシュのワイヤーフレームを三角形で表示します。 メッシュトポロジーを照会するには、GameObjectを選択し、 HoudiniEngine ▸ Utility ▸ Query Mesh Topology メニューに移動します。 頂点数は三角形の場合より少なくなります。
-
同一メッシュでのトポロジーの混在(三角形と四角形など)はサポートされておらず、エラーが発生します。 混合トポロジーが必要な場合は、メッシュを分割する必要があります。
-
Plugin SettingsのMax Vertices Per Primitiveは3または4でなければなりません。 3に設定すると、常に三角形が生成されます。 4に設定すると、Connectivityに応じて三角形または四角形が生成されます。
読み取り可能なメッシュ ¶
デフォルトでは、プラグインは読み取り可能なメッシュを生成しません。 しかし、 unity_mesh_readable という整数アトリビュートに1を指定すれば、読み取り可能なメッシュを生成することができます。