インプリシットワープマップの作成
リンクされた2つのUVグリッドを介してワープを指定することにより、2Dオブジェクトを3D座標にマッピングします。一方のグリッドは、インポートされたイメージや3Dインプリシットボディのスライスなど、2DオブジェクトのUVパラメータ化を定義し、もう一方のグリッドは、3D空間における対応する位置を定義します。

-
インプリシットモデリングリボンで、ワープマップツールを選択します。

ワープマップガイドパネルが表示されます。
- ターゲットドロップダウンから、2Dと3DのUVグリッドを位置決めすることにより、ワープ、位置決め、およびドレープさせたい2Dオブジェクトのソースを選択します。
-
2Dオブジェクトを繰り返し配置するには、繰り返しチェックボックスを選択します。これは線形パターンを使用する場合と同様です。
- U方向の数ボックスに値を入力すると、3D UVグリッドのU方向スパン全体におけるオブジェクトの繰り返し回数が設定されます。
- V方向の数ボックスに値を入力すると、3D UVグリッドのV方向スパン全体におけるオブジェクトの繰り返し回数が設定されます。
-
バックグラウンドチェックボックスを選択すると、バックグラウンド値を宣言します。この値は、3D UVグリッドの範囲外にあるすべてのポイントで採用される値です("クランプW"オプションがアクティブな場合、第3のパラメトリック方向であるW方向の限界値も含みます - 下記参照)。
バックグラウンド値に値を入力します。たとえば、ターゲットがインポートされたグレースケールイメージの場合、ピクセル値は通常[0, 255]の範囲にあります。通常、0は黒、255は白のピクセルを示します。これらのグレースケール値を用いて、サーフェスでのローカルオフセット量を制御できます。ただし、黒[0]はオフセットゼロ、白[255]は5mmのオフセットとなります。バックグラウンド値を0に設定すると、3D UVグリッド外の全領域は0を返し、オフセットが適用されません。
-
クランプWチェックボックスを選択すると、ワープマップの効果を第3パラメトリック次元W(3D UVグリッドの各点で垂直な方向)に制限します。3DのUVグリッドをサーフェスとみなした場合"クランプW"はこのサーフェスに有限の厚みを与えて、影響範囲のボリュームを生成します。
- 最小Wボックスに値を入力すると、W方向における影響範囲の下限を設定できます(負の数は3D UVグリッドの後方、正の数は3D UVグリッドの前方を表します)。この値は長さ単位で指定する必要があります。
- 最大Wボックスに値を入力すると、W方向における影響範囲の上限を設定できます(負の数は3D UVグリッドの後方、正の数は3D UVグリッドの前方を表します)。この値は長さ単位で指定する必要があります。
-
バンプマップのワープマップ駆動オフセットのワークフロー例。
- ワープマップ駆動オフセットを適用したいシーン内のインプリシットボディから始めます。これは、既存のモデルにテクスチャ、ロゴ、あるいはテキストを追加する場合などに使用できます。

- ワープマップツールを選択し、ターゲットドロップダウンからイメージファイルの作成を選択します。

- イメージのコンテキストでは、インポートアイコン
をクリックして、ワープマップ操作で使用するフィールド情報を含む、以前に作成した2Dイメージを選択します。この例では、波状のパターンを使用し、グレースケールのカラーデータを用いて球体サーフェスのローカルオフセット量を制御します。注: 現在のリリースでは、イメージのインポートには.pngファイルフォーマットが必要です。
イメージを選択すると、グローバルZ平面に平行な平面上でシーン内に表示されます。
注: イメージは、実際とは違って見える場合があります。これは、正規化処理が行われていることと、イメージがイメージそのものではなくフィールドとして表示されているためです。これは心配する必要はなく、ワークフローを進めることができます。 - 次に、イメージからデータを抽出する方法を決定するオプションを設定します。まず、使用する情報を最も適切に表現するイメージの色チャンネル(赤、緑、青、アルファ、グレースケール)を選択します。このチュートリアルで使用するイメージでは、グレースケールが赤、緑、青の各チャンネルで均等に表現されているため、デフォルトの赤チャンネルを選択します。
次のオプションはフリップです。この設定により、どのピクセル強度を低い数値として扱い、どのピクセル強度を高い数値として扱うかを選択できます。ピクセル強度値は通常、[0, 255]の範囲にあり、0は黒、255は白を表します。この例では、黒ピクセル[0]をサーフェスオフセットゼロ、白ピクセル[255]を最大外側オフセットとして扱います。このワークフローではこれで問題ありませんが、この関係を反転させたい場合は、反転オプションを使用します。これにより、イメージに保存されているピクセル値から255を引いた値に再計算され、黒が白に、白が黒に変換されます。
最後のオプションは正規化です。これは[0, 255]の範囲を新しい範囲に再スケーリングします。[0, 1]と[-1, 1]の2つのオプションがあります。インプリシットモデリングでは、負の数は個体の内部として、正の数は外部として扱われる傾向があります。このため、[1, 1]の規則を適用します。これはシーン内でイメージの表示を維持できる点でも有用です。[0, 1]を使用すると、負の数値が存在せず、「内部」が表現されません。これにより、イメージビューが内部に陰影を付け(通常はグレー)、外部を空白にするため、イメージが消失する現象が生じます。イメージコンテキストの最終的な設定は以下のようになります。
- イメージコンテキストでOKをクリックすると、ワープマップコンテキストに戻ります。以下のイメージに示すように、イメージボディにコントロールケージが作成されていることに気が付きます。また、イメージ上に作成された座標軸も確認できます。赤はパラメトリック座標方向Uを、緑はパラメトリック座標方向Vを表しています。UV座標は、小さな球状のコントロールポイントで定義されるコントロールケージと本質的に連動しています。このコントロールケージの編集に関する詳細は、チュートリアルの後半で説明します。

- 次に、ワープマップ駆動のサーフェスオフセットを受け取るインプリシットボディを選択します。この例では、操作しているボディである、球体をクリックします。このモデルをクリックする、二つの変化が生じます。まず、シーンに新しいオブジェクトが現れます。これは、変形可能なワープマップオブジェクトであり、球体にドレープすることができます。このオブジェクトにも、独自の赤(U)と緑(V)の座標軸を持つ同等のコントロールケージがあることがわかります。また、このグリッドのコントロール頂点とイメージオブジェクトに紐づくグリッドのコントロール頂点には、一対一の対応関係があります。この時点で、シーンは次のようになり、ここでは、球体の下に新しいワープマップボディが、球体の右側にイメージオブジェクトが表示されています。

- この段階で、球体モデルのサーフェス上にワープマップボディをドレープし始めることが最適です。この時点ではシーン内に多くの要素が表示されていますので、見やすくするためにイメージとワープマップボディの両方を非表示にすると便利です。必要に応じて、この時点で、コントロールケージの頂点の1つを右クリックすることにより、2Dイメージのコントロールケージを非表示にすることもできます。

これで、インプリシット球体ボディのサーフェス上に3Dグリッドのコントロールケージの頂点を配置する作業を開始できます。これらの頂点の配置は完全にコントロールできます。1つまたは複数の頂点を選択して、クリック&ドラッグで移動させることができます。コントロール頂点を見えているボディの上にドラッグしてマウスボタンを離すと、頂点は(画面に向かって見て)その頂点の下にある、目に見える最も近いサーフェスにスナップします。目に見えるボディ上にドラッグせず、頂点を空白の領域にドロップした場合、その頂点は常に表示平面に平行な平面上に留まります。カーブの端など、認識可能なフィーチャーの上にカーソルを合わせると、スナップオプションをオフにしない限り、自動的にその位置にスナップしようとします。最後に、配置ポップアップウィンドウの小さな座標系アイコンを使用して、座標を入力することでコントロール頂点を正確に配置したりオフセットしたりすることもできます。次のイメージに示すように、3Dグリッドのコーナーを表すコントロールケージの4つの頂点を配置することが適切な出発点となります。ドレープされたモデルは歪む可能性があり、インプリシットボディのサーフェス上でドレープされるときにイメージが歪むことに注意してください。歪みを最小限に抑えたい場合は、四隅を長方形の配置に整えてみてください。配置ポップアップウィンドウのオプションは非常に役立ちます。
- 3Dコントロールケージがサーフェスにどのようにドレープされているかを確認するには、モデルを回転させ、コントロールケージのワイヤーフレームを表示すると良いでしょう。これにより、ローカルな曲率を捉えるのに十分なセル数で、サーフェスにきれいに配置されていることが確認できます。また、コントロール頂点の1つを右クリックして、3Dマニピュレーターを上部に固定表示を選択することで、コントロールケージの頂点やエッジがモデル(球体)のサーフェスから透けて見えないようにすることもできます。球体へのドレープという文脈では、4つのコーナーだけではサーフェスの曲率を捉えきれないため、コントロールケージにさらに頂点を追加する必要があります。追加方法は2つあります。まずエッジを選択し、続いて配置ポップアップウィンドウで+をクリックすると、エッジを分割して中央に新しい頂点を追加できます。または、Shiftキーを押しながら左クリックするとエッジを分割できます。新しい頂点が追加されると、隣接する2つの頂点の平均位置に配置されますが、必ずしも球体のサーフェス上とは限りません。各頂点をサーフェス上に移動させるには、2つの方法があります。各頂点を目的のサーフェス位置までドラッグするか、1つまたは複数の頂点を選択し、配置ポップアップウィンドウの最も近いサーフェスに移動ボタンをクリックする方法です。この機能は、目に見える最も近いボディにポイントを移動させます。非表示または除去されたボディには頂点を移動しません。特定のボディのみにスナップさせたい場合は、そのボディをシーン内で唯一表示されている状態にすると便利です。少し作業を加えることで、3Dコントロールケージを次のイメージのように改良することができます。

- それでは次に、イメージオブジェクトとその2Dコントロールケージの非表示を解除しましょう。2Dと3Dのコントロールケージの頂点には、依然として一対一の対応関係が保たれていることがわかります。2Dコントロールケージでの頂点の分布に納得がいかない場合は、2Dコントロールケージの上で頂点を選択した際に表示される配置ポップアップ内の便利な機能、頂点の再サンプルを使用できます。
注: ワープマップ(球体)を適用するインプリシットボディにイメージが重なっている場合は、そのイメージが作成された直後まで構成履歴をロールバックし、インプリシットモデリングのボディの移動ツールを使用して再配置できます。この操作後、頂点が新しいイメージ位置へ移動するよう、必ず頂点の再サンプルを選択してください。 - 2つのコントロールケージが設定されたこの段階で、ワープマップに基づくフィールドを作成し、これをオフセット操作に接続すると、ワープマップ効果を初めて正確に確認できます。この時点でワープマップを確定しても問題ありません。後からいつでもワープマップに戻ってさまざまなパラメータを調整し、満足のいく外観になるまで微調整が可能です。
- インプリメットモデリングリボンのフィールドツールをクリックし、対象オブジェクトの入力をクリアしてデフォルトの選択を削除します。次に、モデルブラウザからワープマップオブジェクトを選択します。フィールドの入力範囲値はイメージデータに基づきます。注: このフィールドは、ピクセル強度のスケールや単位を把握せず、単位が長さに基づいているものと想定します。メートル単位で作業している場合は、ピクセル強度の範囲([0, 255]の範囲)をそのまま入力しても大丈夫です。ミリメートルの単位を使用する場合は、これらの値に1000を乗算する必要があります。つまり[0, 255000]の範囲の値となります。メートル法以外の単位を使用している場合は、同様の変換が必要ですが、より複雑になります。イメージオブジェクト作成時にピクセル強度値を正規化している場合、値の範囲は[0, 1]または[-1, 1]のいずれかとなります。したがって、ミリメートル単位で作業する場合は、フィールドの入力範囲は[0, 1000]または[-1000, 1000]のいずれかとなります。
出力範囲の値は、サーフェスオフセットを内側にするか(エングレイブ)、外側にするか(エンボス)によって異なります。最小は最も深いオフセット量を設定します。負の数はサーフェスの内側への移動、0はオフセットなし、正の数は外側への移動を示します。最大値は、希望するサーフェスオフセットの最大量に設定し、最小値より大きくする必要があります。この例では、最小値と最大値にそれぞれ0mmと8mmの値を使用します。これにより、イメージの黒色領域にはオフセットが適用されず、白色領域には最大オフセットが適用されます。今回の例では、最終的な入力セットは次のようになります。

- OK
をクリックして、これらの入力を確定します。 - 次に、インプリメットモデリングリボンのオフセットツール
を開き、オフセット方向として外側を選択します。この時点で、ワープマップテクスチャから期待される最大オフセット量を入力し、OK
をクリックする(またはEnter キーを押す)ことをお勧めします。これにより、シーンの境界ボックスは、ワープマップから生じるフィールド駆動型オフセットに対応するようにリサイズされます。この操作を行わない場合、下のイメージに示すようにテクスチャのクリッピングが発生する可能性があります。この例では、8mmと入力してから、OK
をクリックします。
次にフィールドの適用ボタンをクリックし、先ほど作成したフィールドを選択します。モデル上にテクスチャ効果が正しく表示されます。
- 前のステップで示したように、テクスチャは指定されたコントロールケージの境界を越えて広がっています。入力値に基づくと、今のところ、これが正しい動作になります。テクスチャをコントロールケージの範囲内に収めるには、インプリシットモデリングの構築履歴でワープマップを右クリックし、編集する必要があります。編集を選択して、履歴タイムラインをオフセット操作前に戻すか、レシピの編集を選択して、ワープマップを編集しながらオフセットされたテクスチャを表示することができます。
- ワープマップを編集するときは、バックグラウンドチェックボックスを選択します。バックグラウンド値オプションは、コントロールケージの外側にある(したがって選択された2Dイメージ領域の外側にある)すべてのポイントのピクセル値を設定します。この例ではオフセットを適用せず、元のサーフェスをコントロールケージの外側で同じ位置に保持します。イメージピクセル値を[-1, 1]の範囲に正規化しているため、適切なバックグラウンド値は-1となります。これはこの範囲における最小値です。また、先に作成したフィールドに基づけば、この値はオフセットゼロに対応します。この変更により、テクスチャは以下のイメージに示すように、コントロールケージに内に収まります。


- テクスチャはコントロールケージの範囲内に制限されました。ただし、モデルを回転させると、テクスチャ効果が球体全体を貫通し、反対側にも現れていることがわかります。

これを防ぐには、ワープマップコンテキストでクランプWチェックボックスを選択する必要があります。UとVのパラメトリック座標は、コントロールケージを横方向に移動し、W座標は、サーフェス法線のように、コントロールケージに対して常に垂直です。クランプWが選択されている場合、最小Wと最大Wの範囲外となる空間領域はケージの外側とみなされ、バックグラウンド値を受け取ります。この例では、最大外向きオフセットが8mmであると分かっているので、この値を最大Wに使用します。最小Wでは、値をゼロに設定することで、テクスチャ効果をコントロールケージが配置されている元のサーフェスに限定します。つまり、コントロールケージ上のすべての位置でW座標はゼロになります。正しい入力値は以下に示されており、テクスチャが球体を貫通しなくなっていることがわかります。
- 多くの場合、使用するテクスチャサンプルイメージは、モデルに対して適切なサイズになっていないことがあります。この問題を解決するには、繰り返しオプションを使用して、コントロールケージ上でテクスチャをU方向およびV方向にタイル状に配置します。表示したいイメージのコピー数を、U方向の数とV方向の数の設定で入力する必要があります。イメージが目に見える継ぎ目なくタイル状に配置できる場合、繰り返しオプションは最も効果的に機能します。

- 最終的な推奨事項として、一部の領域にのみテクスチャを追加する唐突な処理は、視覚的なアーティファクトを引き起こす可能性があります。これらの多くは、インプリシットモデリングリボンのスムースツールを使用し、ワープマップオブジェクトに適用することで改善できます。このスムージング処理を適用する適切なタイミングは、ワープマップオブジェクト作成直後です。

- この例で説明したプロセスに従うことで、2Dイメージデータをソースとして使用して、3Dモデルにさまざまなサーフェス効果を適用できます。次の例では、Simplex Noiseを含むイメージを、人体の一部にドレープした結果を確認できます。このようなテクスチャは、美的効果だけでなく機能性も備えています。重要なことは、2Dイメージの入力を変更するだけで、設計を更新/反復できることです。これにより、インプリシットモデリングを使用したコンピュテーショナルデザインに新たな可能性が開かれます。

- ワープマップ駆動オフセットを適用したいシーン内のインプリシットボディから始めます。これは、既存のモデルにテクスチャ、ロゴ、あるいはテキストを追加する場合などに使用できます。