UV チャンネルはスタティックメッシュのデータ セットで、メッシュの各頂点を 2D 空間の座標にマップしたものです。これらのマッピングでは、メッシュをレンダリングするときに 2D テクスチャ マップが 3D ジオメトリを包み込む方法を定義します。
一般に専用のモデリング ツールで UV マッピングを作成し管理します。スタティックメッシュのジオメトリを作成するために使用するツールそのものです。ただし、このエディタにはモデルの UV チャンネルを処理するいくつかの機能が用意されていて、このページで概要を説明します。
UV チャンネルにはエンジンで 2 つの主な目的があります。
マテリアルにおけるテクスチャ座標: テクスチャ マップをサンプリングし、メッシュのサーフェスに適用するマテリアルを作成するとき、テクスチャ座標 (Texcoord) ノードを使用して、UV チャンネルを指定できます。マテリアルは選択した UV チャンネルに含まれる 2D 座標と 3D 頂点位置の間のマッピングを使用して、テクスチャのどこの領域が、3D モデルのどのトライアングルをシェーディングするために使用するのかを決定します。
例えば、シンプルな平面のスタティックメッシュの UV Channel 0 (以下の画像の右上に表示) ではメッシュの 2 つのトライアングル (A と B) をテクスチャ空間にマップする最も簡単な方法を示します。UV チャンネル (TexCoord ノードの Coordinate Index プロパティで設定) を使用するとき、マテリアルはテクスチャの幅と高さ全体を平面に適用します。
クリックしてフルサイズで表示
一方、次の画像では UV Channel 1 を示しています。これはトライアングルと UV テクスチャ空間のマッピングを回転し、歪めたものです。同じイメージ テクスチャをスタティックメッシュに適用するとき、適用されるテクスチャの部分とスタティックメッシュの部分が変わります。
クリックしてフルサイズで表示
UV マッピングのトライアングルはオーバーラップできます。オーバーラップはテクスチャの同じ部分が、3D スタティックメッシュ ジオメトリの複数部分に適用されるというだけの意味です。
「UV チャンネル」の U はテクスチャの水平軸で、V は垂直軸です。テクスチャ座標は一般に 0 から 1 の範囲で、(0,0) はテクスチャの左下、(1,1) は右上を表します。ただし、これに限りません。デフォルトでは、U または V の値が 1 を上回る、あるいは0 を下回ると、マテリアルはテクスチャの反対側を「包みこみ」ます。例えば、V の値が 1.25 であると一般に 0.25 として処理されます。ただし、マテリアルでこれらの値を固定して、最小値を 0 に最大値を 1 に制限できます。
ライトマップ: UV チャンネルはライトマップを格納し適用するためにも使用されます。ライトマップは特殊なテクスチャで、スタティックメッシュに対して事前に計算されたライティング情報が格納されます。[Mobility (可動性)] が [Stationary] または [Static] に設定されているライトがレベルにあり、レベルのライティングをビルドすると、ライトマス ツールは間接ライティング (および Static ライトの直接ライティング) をライトマップ テクスチャに保存します。このとき UV チャンネルを使用してスタティックメッシュの 3D ジオメトリと 2D テクスチャ空間のマッピングを決定します。
例えば、このピラーのテクスチャ マッピング UV チャンネルは 4 つの各側面のジオメトリをテクスチャの同じオーバーラップ領域にマップします。この UV チャンネルを使用してテクスチャをジオメトリに適用するとき、各側面はテクスチャの同じ部分を使用します。
フルサイズで表示
ただし、オブジェクトのライトマップ UV で各側面は 2D 空間の独自の領域をカバーする必要があります。
ライトマップに使用される UV チャンネルにはいくつか特別なルールがあります。一般にオブジェクトの各部は受け取る光の量が異なり、メッシュの 2 つのトライアングルで 2D テクスチャ空間をオーバーラップできるものはないからです。各トライアングルはテクスチャの独自の領域をカバーする必要があります。さらに、すべての UV 座標値は 0 から 1 の範囲に収まる必要があります。ライトマップ テクスチャは通常のテクスチャ マッピングと同様に「包み込む」ことはできません。
これらの理由で、一般にライトマップ UV はシンプルな UV マッピングから生成 — つまり パック されます。クリックしてフルサイズで表示
ライトマップ UV および生成方法の詳細については、「Unreal Engine のライトマップを理解する」 と 「ライトマップ UV を生成する」 を参照してください。
エンジンの各スタティックメッシュには最大 7 種類の UV チャンネルを保持でき、異なるマテリアル向け (または単一のマテリアル内の異なるテクスチャ サンプリング ノード向け) にテクスチャをラップする方法を複数セットアップできます。
スタティックメッシュ エディタの UV チャンネル
スタティックメッシュ エディタ UI で、UV チャンネルのリスト、表示、削除を実行できます。
UV チャンネルをリストする
スタティックメッシュ エディタでスタティックメッシュ アセットを開いているとき、ツールバーの [UV] ボタンで、現在のスタティックメッシュで使用されている UV チャンネルの一覧を表示できます。
クリックしてフルサイズで表示
UV チャンネルを視覚化する
リストの UV チャンネルを選択すると、ビューポートのオーバーレイとして 2D テクスチャ空間にマップされたメッシュのトライアングルが表示されます。
クリックしてフルサイズで表示
リストの一番上で [None] を選択すると、UV オーバーレイの表示がなくなります。
UV チャンネルを削除する
リストでチャンネルを選択すると、削除できます。各 UV チャンネルにはスタティックメッシュの一部として各頂点のテクスチャ座標を格納します。したがって、使用しないマッピングを削除することによって、いくらかのランタイム メモリを節約できることがあります。
クリックしてフルサイズで表示
クリックしてフルサイズで表示
削除されたチャンネルの後にリストに存在する他のすべての UV チャンネルは、削除されたことによって空いたスペースを埋めるように移動します。
クリックしてフルサイズで表示
スタティックメッシュ アセットがライトマップ UV を生成するようにセットアップされている場合、選択した UV チャンネルがライトマップ UV のソースまたは宛先チャンネルとして使用している場合、UV チャンネルを削除できません。[Build Settings (ビルド設定)] > [Generate Lightmap UVs (ライトマップUVの作成)] オプションを無効にする、または [Build Settings] > [Source Lightmap Index (ソース ライトマップ インデックス)] および [Build Settings] > [Destination Lightmap Index (宛先ライトマップ インデックス)] 設定を異なる UV チャンネルに変更します。
UV マッピングを作成する
マテリアルがチャンネルのソース データとしてテクスチャを使用する場合 (ベースカラー、法線マップ、ラフネスなど)、通常、そのマテリアルはモデルの UV マッピングを使用して、それらのテクスチャのどの部分がジオメトリのどの部分にラップされるかを決定します。そのため、モデルに UV マッピングがない場合、または UV マッピングのレイアウトが不十分な場合にテクスチャ マテリアルを使用しようとすると、目視できるような問題が頻繁に発生します。例えば、UV マッピングに多くの 継ぎ目 (メッシュ ジオメトリ上で隣接する三角ポリゴンが UV マッピングでは隣接していない場所) がある場合、テクスチャではその継ぎ目にジョイントが表示されます。または、UV マッピングが UV 空間の領域をメッシュの三角ポリゴンに不均等に割り当てると (つまり、メッシュの大きな三角ポリゴンがテクスチャの小さな領域にマッピングされたり、その逆にマッピングされたりすると)、テクスチャは、メッシュのさまざまな部分で引き伸ばされたり歪んだりしたような見た目になります。
芸術的に最善の結果を得るには、常に専用のモデリング ツールで 3D オブジェクトの UV マッピングを作成するようにしてください。しかしながら、いつでもそうできるとは限りません。例えば、一部の CAD モデリング アプリケーションでは、そのアプリケーションから Unreal Engine へデータをインポートするとき、そのソース アプリケーションで高品質の UV マッピングを作成できない場合があります。このような場合は、Unreal Editor で UV マッピングを作成してください。
Unreal Editor でスタティックメッシュの UV マッピングを作成する方法は 2 つあります。
プロジェクト設定 以下に概説する UV チャンネル生成方法のいずれかを使用するには、Unreal Engine プロジェクトの Polygon Editing プラグインをインストールする必要があります。
クリックしてフルサイズで表示
方法 1:メッシュ ジオメトリをアンラップする
この方法では、スタティックメッシュ ジオメトリを構成する三角ポリゴンを自動的に展開および平坦化します。三角ポリゴンのサーフェス領域は、三角ポリゴンの隣接されたままになるように自動的に調整され、隣接するサーフェス間の角度が設定したしきい値を超えると継ぎ目が追加されます。
スタティックメッシュを新しい UV マッピングにアンラップするには次の手順を実行します。
アンラップするスタティックメッシュを選択し、次のいずれかを実行します。
コンテンツ ブラウザ 内でスタティックメッシュを右クリックし、コンテキスト メニューから [Unwrap UV] を選択します。
クリックしてフルサイズで表示
生成するスタティックメッシュをスタティックメッシュ エディタで開きます。次に、スタティックメッシュ エディタのツールバーから [UV] > [Unwrap UVs] を選択します。
クリックしてフルサイズで表示
どちらのメニュー オプションも表示されない場合は、プロジェクトで Polygon Editing プラグインが有効になっていることを確認してください。
アンラップの結果を制御するパラメータを設定します。
クリックしてフルサイズで表示
設定
説明
Channel Selection
アンラップ プロセスが新しい UV マッピングを保存するチャンネルを選択する方法を決定します。
Automatic Lightmap Setup:アンラップされている UV マッピングを、このスタティックメッシュに設定されているチャンネルにライトマップ UV のソースとして保存し、新しい UV マッピングから新しいライトマップ UV を生成します。
First Empty Channel:アンラップされている UV マッピングをスタティックメッシュの最初の空の UV チャンネルに保存します。
Specify Channel:[UVChannel] 設定でチャンネル インデックスを指定するには、このオプションを選択します。
UV Channel
[Channel Selection] が Specify Channel に設定されている場合、この設定を使用して、アンラップされた UV が保存される UV チャンネルのインデックスを決定します。
Angle Threshold
アンラップ後も接続されたままになっている面の、2 つの隣接する面の間の最大角度を決定します。この値を上げると、個別の UV アイランドの数が最小限に抑えられ、隣接するトライアングルの接続数が増え、テクスチャ マッピングで破壊を引き起こすおそれのあるシームの数が減ります。ただし、これにより、ラップされたテクスチャにより多くの歪みが発生する可能性があります。これは、トライアングルを 2D 空間でより積極的にサイズ変更して、隣同士の接続を維持する必要があるためです。
[Proceed (続行)] をクリックします。
方法 2:メッシュ ジオメトリを UV チャンネルに投影する
平面、ボックス、または球体などの投影ボリュームを使用して、スタティックメッシュの 3D ジオメトリを 2D テクスチャ空間に投影できます。この方法では、スタティックメッシュの各面が投影ボリュームの面に外側に投影され、投影ボリュームが 2D テクスチャ空間にアンラップされます。
この機能は現時点では 3D メッシュから 2D へプロジェクションのみを対象としています。フル機能のモデリングおよびテクスチャ ツールで使用できるフル プロジェクション編集機能はありません。
生成するスタティックメッシュをスタティックメッシュ エディタで開きます。
例えば、コンテンツ ブラウザ でスタティックメッシュ アセットをダブルクリックします。
スタティックメッシュ エディタ のツールバーで [UV] > [Generate UVs (UV を生成する)] を選択します。
このメニュー オプションが表示されない場合は、プロジェクトの Polygon Editing プラグインを有効にしてください。
[Generate UV] パネルが表示されます。パネルには、UV 投影の結果を制御するのに役立つ一連のコントロールが用意されています。
クリックしてフルサイズで表示
また、標準の Unreal Editor マニピュレータ ギズモとともに、ビューポートのスタティックメッシュの周囲に緑色のボリュームが表示されます。
ボリュームとマニピュレータが最初に表示されない場合は、[Generate UV] パネルの下部にある [Show Gizmo (Gizmo を表示)] ボタンを切り替えます。
[Projection Type (プロジェクション タイプ)] 設定で、スタティックメッシュの寸法に最適なボリュームを選択します。
スタティックメッシュの範囲に一致するように、ボリュームのサイズ、位置、回転を調整します。
これを行うには、ビューポートのマニピュレータまたは [Generate UV] パネルのテキスト フィールドを使用できます。また、[Fit (合わせる)] ボタンで、スタティックメッシュ ジオメトリの範囲にボリュームを適切な開始点として自動的に合わせることができます。
[Target Channel] 設定で、投影された UV マッピングを保存するチャンネルのインデックスを設定します。
ほとんどのマテリアルはチャンネル 0 からテクスチャ座標を取得します。UV マッピングを生成して、スタティックメッシュ ジオメトリの周囲のテクスチャのマッピング方法を改善する場合、通常、このフィールドには「
0
」を設定します。[Apply] をクリックして UV マッピングを生成し、スタティックメッシュのターゲット チャンネルに保存します。
次の表に、[Generate UV] パネルのすべての設定を示します。
設定 |
説明 |
---|---|
Projection Type |
スタティックメッシュ ジオメトリが投影されるボリューム。 |
Size |
投影ボリュームの寸法。 |
Position |
スタティックメッシュのピボット ポイントに対する投影ボリュームの位置。 |
Rotation |
スタティックメッシュのピボット ポイントに対する投影ボリュームの回転。 |
UV Tiling Scale |
UV 空間での投影のスケール。値を大きくすると、テクスチャ空間で投影が大きくなり、メッシュのサーフェスに巻き付けたときにテクスチャの詳細が小さく表示されます。 |
UV Offset |
2D テクスチャ空間での投影の配置を制御します。X 軸の値が小さいほど、UV マッピングで投影が左に移動します。値を大きくすると、投影が右に移動します。Y 軸の値が小さいと、UV マッピングで投影が上に移動します。値を大きくすると、投影が下に移動します。 |
Target Channel |
投影が保存される UV チャンネルのインデックス。これは、生成されたライトマップ UV を保存するためにスタティックメッシュ エディタで使用されているチャンネルと同じチャンネルにすることはできません。ターゲット チャンネルにすでにデータが含まれている場合は、続行する前にエディタから確認を求められます。 |
Show Gizmo |
ビューポートでの投影ボリュームとマニピュレータ ギズモのレンダリングを切り替えます。 |
Apply |
上記の設定に従って UV 投影を生成し、結果を [Target Channel] で設定したターゲット チャンネルに保存します。 |
Fit |
投影ボリュームのサイズがスタティックメッシュの完全なジオメトリを囲むようにします。 |
エディタ スクリプティングでの UV チャンネル
Unreal Editor で実行するブループリントや Python スクリプトで UV チャンネルを処理することもできます。スタティックメッシュ エディタで実行できることは何でもできます。さらに新しいチャンネルを追加し、新しい UV マッピングを生成できます。
前提条件: 今回の使用が初めての場合は、Editor Scripting Utilities プラグインをインストールしてください。詳細は、「エディタのスクリプティングと自動化」を参照してください。
%Globals:BlueprintOrPythonSelectVar%