このドキュメントはベータ版です。記載されている情報は正確ですが、詳細の改善作業中です。
導入
このドキュメントでは、よく使用される問題解決方法と、より高度な解決方法の一部を、例プロジェクトを用いて説明します。
自動環境マップ生成
先ほど説明したように、Aximmetry内でキューブマップを生成できます。デフォルトでは、これはロード時に一度だけ実行されますが、シーンの変更を許可しないため、この動作を回避したい場合があります。そのために、必要に応じて生成するロジックを設定できます。
例として、Auto EnvMap Gen.xcompというシーンを使用します。このシーンを使用して、この機能の設定方法を説明します。
例プロジェクトを開きます。
読み込みが完了すると、色付きの部屋にウサギが表示されます:
ウサギには金属マテリアルが適用されており、壁の色を反射しています。
ダッシュボードには2つの色プロパティと生成トリガーがあります:
色を変更するか、生成トリガーを押すと、環境マップが再生成されます。
ウサギ用に新しいEnv map generatorを追加し、その信号を専用のトンネルに接続しました:
次に、そのIndexを2に変更しました:
このステップが重要な理由については後で説明します。
ジェネレーターをウサギの内部に移動しました:
このトンネルはウサギのシェーダーに接続されています:
Changed と Changer
これらの2つのコンパウンドは、新しいEnv Mapを生成するタイミングを決定します。
Changed
これはオプションです。入力のどれかが変更された場合にブール信号を送信します。
他のパラメーターを変更したい場合は、このモジュールを適切に拡張する必要があります。
Changer
Changed入力がtrueの場合、Env Mapsが再生成されます。
Changedコンパウンドがある場合は、そのChanged出力をここに接続する必要があります。
Changed モジュールがない場合、Env Maps を再生成するには Generate トリガーを押す必要があります。
Changer を正常に動作させるために、いくつかの設定が必要です。
- Iteration Number - この数値は Env Map を生成する回数を設定します。デフォルトでは 3 に設定されており、この値は変更しないことを推奨します。
- Generator Number - この数値は生成するEnv Mapsの数を設定します。この値はシーン内の最後のEnvmap generatorのIndexに一致する必要があります。チュートリアルでは2に設定されています。
Running Generatorの出力は、Env Map generatorのRunning入力に接続されます:
先ほど述べたように、Bunny用に追加した新しいEnvmap generatorのIndexを変更する必要があります。
これは、Changerが1つのEnvmapを次々と生成するためです。
追加のEnvmap generatorを追加する際には、以下の設定が必要です:
- Indexを変更する
- ChangerコンパウンドのGenerator Numberプロパティを増やす。一般的には、Generator Number = 最後のEnvmap generatorのIndexです。
- そのビデオを新しいトンネルに接続します。
ベイクされたライトの色付け
先ほど述べたように、ベイクされたライトは静的で、ベイクされると変更できません。ただし、特定のライトの色と照らす領域の色を変更するワークアラウンドがあります。
このためのチュートリアルプロジェクトも用意しています: Colorizing Baked Light.xcomp これを使用して手順を説明します。
開くと、立方体の中に発光する球体が見えます:
ダッシュボードにはColorプロパティがあり、これを変更すると、球体とそれによって照らされる領域の色が変更されます:
チュートリアルプロジェクトには、このシーンの設定手順を説明するメモがありますが、ここでも説明します。
ライトマップの作成
これを行うには、ボックス用に2つの異なるライトマップが必要です:
- 1. すべての光源をオンにしたライトマップ(球体を除く)
- 2. 球体のみをオンにし、その他のすべての光源をオフにしたライトマップ。
- - 球体は白色光を放射し、そのパワーは1に設定されていることが非常に重要です。
ライトマップの着色
球体のみをオンにしたライトマップはフィルターノードを通過します:
フィルターノードはテクスチャを着色します。
Copy Colorノードをフィルターに接続し、Sphereによって照らされる部分のカラーを変更できるようにします。
カラー化された「Only Sphere」ライトマップと「No Sphere」ライトマップを、Blenderノードを使用して合成します。
BlenderノードのBlending ModeをAdd(5)に設定します。
結果は、ボックスのシェーダーのLightmap入力に接続できます。
この方法は数学的に正しい結果を得られます。
Sphereの色付け
ライトマップを色付けした後、Sphereの色も変更する必要があります。
Solid Colorノードを追加します。
Copy ColorノードをSolid Colorノードに接続します。
Solid ColorノードをSphereのシェーダーのEmissive Map入力に接続します:
変更時のみ保持
先ほど述べたように、これらのテクスチャ変更は計算コストが高いため、各フレームで計算したくありません。各フレームで生成されないようにするには、Pass on Change Holderコンパウンドを使用します。
次のように設定します:
私たちの場合、エミッシブ スフィアの色のみを変更したいので、そのパラメーターを使用してPass on Change Holderに計算を実行するタイミングを指示します。
これを、Pass on Change HolderのParam X入力のいずれかに接続します。
この設定は例です。このコンパウンドは、任意のテクスチャ計算後に使用できます。
テクスチャ属性の変更
テクスチャファイルをロードする際、それらに関連する多くの属性を変更できます。
テクスチャがシーンにロードされた際に属性が適用される点に注意が必要です。
ロードされたテクスチャの属性を変更するには:
依存関係マネージャーで:
選択したテクスチャを右クリックし、「属性表示/変更」をクリックします:
またはテクスチャのプロパティで:
2つの方法には重要な違いがあります:
- 依存関係マネージャーで属性を変更すると、そのテクスチャのすべての使用先が同じ属性を継承します。
- テクスチャ自体で属性を変更すると、そのテクスチャのインスタンスのみに属性が適用されます。
「属性表示/変更」または「三角形」ボタンをクリックすると、新しいウィンドウが表示されます:
ここで以下の属性を調整できます:
- No premul - デフォルトではAximmetryはPremultiplied alphaを使用します。No Premulをオンにすると、この機能をオフにします。
- Color Space - Keep - Aximmetryはテクスチャを変換しません。
- - sRGB to Linear - AximmetryはsRGB画像をLinearに変換します。注:この変換は、AximmetryがLinearモードの場合に自動的に行われます。
- - Linear to sRGB - AximmetryはLinear画像をsRGBに変換します。注:この変換は、AximmetryがsRGBモードの場合に自動的に行われます。
- Crop - このプロパティを使用して、画像の端をトリミングできます。
- リサイズ - 画像のサイズを変更できます。
- キューブ - 2Dレイアウトにキューブテクスチャがある場合、ここで設定できます。
- ボリューム - 2Dレイアウトにボリュームテクスチャがある場合、列と行を指定してここで設定できます。
- アレイ - 2Dレイアウトにアレイテクスチャがある場合、列と行を指定してここで設定できます。
- Normal - 高さマップをノーマルマップに変換するために使用できます。
- Irradiance env - ノーマルキューブマップをイラディエーションキューブマップに変換できます。
- Specular env - ノーマルキューブマップをスペキュラキューブマップに変換できます。
- Mipmaps - 2Dテクスチャにミップマップを生成するために使用できます。最高の結果を得るにはBicubicを使用してください。ミップマップを追加すると、テクスチャのメモリ使用量が倍になりますが、処理速度が向上します。
- 変換 - 指定された形式に画像を変換できます。
- レイヤー - 画像ファイルからレイヤーを選択できます。
DDS にベイク
先ほど説明したように、属性は読み込み時に適用されます。
DDS にベイク機能を使用すると、これらの設定を新しい .dds ファイルに保存できます。