特定のシェイプの個別のインスタンスを異なるマテリアルに関連付けられるように、各 UV セットをインスタンスに個別に関連付けられるようになりました。これは、オブジェクトのインスタンスのシャドウをベイク処理する際(ゲーム レベルのライティングなど)、または複数のテクスチャを持つ単一シェイプのインスタンスを作成する際(多数のボックスのうち、一部はさまざまな位置に穴が開いたボックスにするなど)に非常に便利です。
UV セットがインスタンス単位である場合、UV セット ファミリという言葉は、異なるインスタンスに適用される接続された UV セットを意味します。1 つのファミリでは、単一の UV セットが 1 つまたは複数のインスタンスに適用される場合があります。
インスタンス単位の UV マップを作成するには
- シェイプを選択します。
- を選択します。
この UV セットを共有(Shared)するか(すべてのインスタンスがこの UV セットを持ちます)、インスタンス単位で共有(Per Instance Shared) (選択したすべてのインスタンスが新規 UV セットを共有します)、またはインスタンス単位で共有しない(Per Instance Unshared) (選択したすべてのインスタンスが固有の UV セットを取得します)を選択することができます。
- 必要に応じて、UV セットに名前を付けます。
- このシェイプの別のインスタンスを選択します。
- インスタンスを右クリックして UV セットを選択し、作成したインスタンス単位の UV セットを選択セットにします。
- UV の作成(Create UVs)メニューで UV マッピング タイプを選択します(平面(Planar)、円柱(Cylindrical)、または球面(Spherical)など)マッピングのオプションウィンドウで新規 UV セットの作成(Create New UV Set)が無効になっていることを確認します。
現在のセットの名前を持つ、選択したインスタンスの新規 UV マップが作成されます。
- シェーダをメッシュのすべてのインスタンスに割り当てます。
- インスタンスを右クリックし、UV セット > UV リンク...(UV Sets > UV Linking...)を選択します。リレーションシップ エディタ(Relationship Editor)を使用して、任意のインスタンス単位のセットをシェーダのカラーに接続します。
インスタンス オブジェクトをレンダーするとき、あるいはハードウェア テクスチャリングによってシーン ビューにインスタンス オブジェクトを表示するときに、さまざまな(インスタンス単位の) UV マッピングが表示されるようになります。
例: インスタンス単位の UV セットを持つ単一シャドウ マップのベイク処理
次の例では、インスタンス単位の UV セットを使用して単一のマップにシャドウをベイク処理しています。この時点で、シーンのライトを削除することができます。このワークフローは、ゲーム レベルのオブジェクトにテクスチャ マップを作成する場合に便利です。
この単純なシーンには、シャドウを投影する長い円柱、ディレクショナル ライト、16 × 16 のサブディビジョンを持つ小さいプレーン、そのプレーンの 2 つの追加インスタンスがあります。
シーンの設定
- ベースが地表プレーン上にある細長いポリゴン円柱を作成します。
- 地表プレーン上および polyPlane ノードから小さなポリゴン プレーンを作成し、幅の分割数(Subdivisions Width)と高さの分割数(Subdivisions Height)をそれぞれ 16 を設定します。
- ポリゴン プレーンを選択し、 を選択します。
- ジオメトリ タイプ(Geometry Type)にインスタンス(Instance)を設定し、適用(Apply)を 2 回選択して、2 つの小さいポリゴン プレーンのインスタンスを作成します(インスタンスはオリジナルの上に表示されます)。
- 歩道のように互い違いにプレーンを配置します。
- ディレクショナル ライトを作成し()、少し下にして円柱とプレーンに向けます。
- アトリビュート エディタ(Attribute Editor)で、ライトの強度(Intensity)を 4.5 に変更します。
- シャドウ(Shadows)セクションを開き、深度マップ シャドウの使用(Use Depth Map Shadows)をオンにします。
- シャドウ カラーを青に変更します。
- mental ray レンダラを使用してシーンをレンダーします。レンダー結果はおよそ次のようになります。
必要に応じてライトの方向を調整し、シャドウが上記のレンダー結果のように、異なる位置で各ポリゴン インスタンスに適用されるように再度レンダーしてください。
これで、プレーン上でインスタンス単位の UV セットを作成できるようになりました。
インスタンス単位の UV セットの作成
- 3 つのポリゴン プレーン インスタンスを選択し、ポリゴン(Polygons)メニュー セットで を選択します。
- UV セットの作成オプション(Create UV Set Options)ダイアログ ボックスで、Sidewalk という名前の UV セットを作成し、インスタンス単位で共有しない(Per Instance Unshared)を選択します。作成(Create)をクリックします。
- いずれかのポリゴン プレーン インスタンスを右クリックし、UV セット > Sidewalk (n) (UV Sets > Sidewalk (n)) を選択して、Sidewalk を選択済み UV セットにします。
- すべてのポリゴン プレーン インスタンスを選択し、UV を作成するために を選択します。平面マッピング オプション(Planar Mapping options)で、次のように選択します。
- 投影のフィット対象(Fit Projection to):バウンディング ボックス(Bounding Box)
- 投影元(Project from):Y 軸(Y axis)
新規 UV セットの作成(Create New UV Set)は必ずオフにしてください。
- 投影(Project)をクリックします。
これで UV 空間で UV がオーバーラップしないインスタンス単位の UV セットが作成されました (UV エディタ(UV Editor)を使用すると、これを確認し、必要な場合には UV を移動することができます)。
単一の UV マップにシャドウをベイク処理します。
インスタンス単位の UV セットへのベイク処理
- 3 つのポリゴン プレーン インスタンスを選択します。
- レンダリング(Rendering)メニュー セットで を選択します。
- 次の設定を行います。
- ベイク処理するオブジェクト(Objects to bake):選択項目(Selected)
- ベイク処理先(Bake to):テクスチャ(Texture)
- シャドウのベイク処理(Bake shadows): オン
- ベイク セットのオーバーライドの使用(Use bake set override): オン
- カラー モード(Color Mode):ライトのみ(Only light)
- 単一マップにベイク処理(Bake To One Map): オン
- 変換して閉じる(Convert and Close)をクリックします。
シャドウはベイク処理されますが、ベイク処理セットを UV マップに接続する必要があります。
- いずれかのインスタンスを右クリックして、を選択します。
- リレーションシップ エディタで、Sidewalk(0)マップをベイク処理される inBake1 にリンクします。
シャドウがベイク処理されて、正しくリンクされます。シェーディング モード(ホットキー: 6)または高精度レンダリング モードの場合は、この結果をシーン ビューで確認することができます。
- この時点で、シャドウはポリゴン インスタンスの UV テクスチャにベイク処理されるため、シーンのライトを削除することができます。
インスタンス単位の UV の削除
UV セット ファミリをインスタンス間で共有できるようになっため、UV セットの削除処理が弱冠変更されました。
たとえば、myMap という名前のインスタンス単位のセット ファミリに、2 つの子セットが含まれているものとします。1 つは複数のインスタンス(インスタンス a、b、c)に適用され、もう 1 つはインスタンス d にのみ適用されます。これが現在の UV セットです。インスタンス d を選択して、現在の UV セットの削除(Delete Current UV Set)を選択すると、インスタンス d のマップのみが削除されます (その他の UV マップは非選択インスタンスに使用されており、削除されません)。
次に、インスタンス a を選択して、現在の UV セットの削除(Delete Current UV Set)を選択すると、この UV セットはインスタンス a と共有されなくなりますが、インスタンス b と c には依然として存在します。これをまとめて削除するには、インスタンス b と c を選択してから、現在の UV セットの削除(Delete Current UV Set)を選択します。
制限事項
インスタンス単位の UV セットでは、カラー セットおよびペイント エフェクトはサポートされません。