This is the documentation for Enlighten.
7.11.1.5. 頂点ベイク
導入
一部のケースでは、頂点ベイクを使用するメリットがあります。テクスチャと UV マップを作成するのではなく、モデルの各頂点のライティングをベイクし、頂点間に補間します。モデルに十分詳細なテッセレーションが行われていた場合、ライティングは標準のテクスチャ出力と見分けがつきません。このメリットの 1 つは、頂点ベイクを使用したオブジェクトにはライトマップ UV の展開が不要であることですが、大きな三角を持つモデルはこのタイプの出力に適していません。
HLBS シーン マークアップ
ベイクの paramset では、以下のように outputType
パラメーターを vertex
に設定する必要があります。
scene_default.bp
<bakeParams name="128x128_vertex" resolution="128 128" outputType="vertex"/>
頂点ベイクが行われた出力を使用する場合、一部のシーン構成に交差オブジェクトが生じ、AO 出力でのエイリアシングの原因となることがあります。
出力 UV
ベイク ステップで得られる BakeUVStream
出力は、レンダリングのために適切な頂点バッファの設定が可能な、出力ライトマップでの頂点出力の位置を示します。ピクセルが高密度にパックされているため、正しくピクセルをルックアップする際には注意が必要です。UV では、DirectX の UV 規約 (http://msdn.microsoft.com/en-us/library/windows/desktop/bb147229%28v=vs.85%29.aspx) が適用されます。[ 0.0, 1.0 ]
の範囲 (包括的) の浮動小数点数のテクスチャ座標は、[ - 0.5, n - 0.5]
の範囲の整数テクセル空間値にマッピングされます。n
はテクスチャの既定のディメンションにおけるテクセルの数です。テクスチャ座標の UV は、浮動小数点精度によるあいまいさを避けるため、ピクセルの「中間」を参照しています。浮動小数点数 UV の整数へのマッピングは以下のとおりです。
int u = int(floor(uv.U*resolutionU)); int v = int(floor(uv.V*resolutionV));
頂点ベイクを適用したシーン例
このシーンでは左側の 2 つの球体がテクスチャ ベイクされており、右側の 2 つの球体は頂点ベイクされています。
シーンの説明
このシーンは 2 対の球体を規定しており、それぞれが固有のライトマップ (合計4 つのライトマップ) を有しています。
uboxVertex.scene
<?xml version="1.0" encoding="utf-8"?> <scene name="uboxVertex" version="1"> <instance name="sphere_vertex_A" systemId="1" paramSet="Interior" geometry="regular_whitesphere" type="Static Set Dressing" lmName="VERTEX_A" lmType="128x128_vertex" position="-780.912 310.003 150.0" rotation="0.0 0.0 0.0 1.0" /> <instance name="sphere_vertex_B" systemId="1" paramSet="Interior" geometry="regular_whitesphere" type="Static Set Dressing" lmName="VERTEX_B" lmType="128x128_vertex" position="-780.912 310.003 410.0" rotation="0.0 0.0 0.0 1.0" /> <instance name="sphere_texture_A" systemId="1" paramSet="Interior" geometry="regular_whitesphere" type="Static Set Dressing" lmName="TEXTURE_A" lmType="128x128_texture" position="-1082.912 310.003 150.0" rotation="0.0 0.0 0.0 1.0" /> <instance name="sphere_texture_B" systemId="1" paramSet="Interior" geometry="regular_whitesphere" type="Static Set Dressing" lmName="TEXTURE_B" lmType="128x128_texture" position="-1082.912 310.003 410.0" rotation="0.0 0.0 0.0 1.0" /> <instance name="ubox_left" systemId="2" paramSet="Interior" geometry="ubox_left" type="Radiosity" lmName="B" lmType="512x512" position="-1000.0 0.0 0.0" rotation="0.0 0.0 0.0 1.0" /> <instance name="ubox_right" systemId="1" paramSet="Interior" geometry="ubox_right" type="Radiosity" lmName="A" lmType="512x512" position="1000.0 0.0 0.0" rotation="0.0 0.0 0.0 1.0" /> <instance name="Box" systemId="1" paramSet="Interior" geometry="Box" type="Static Set Dressing" lmName="SSD" lmType="128x128_pack" position="1084.85 -384.894 35.3984" rotation="0.0 0.0 0.0 1.0" /> <volume name="Probes" probesParamSet="Cull_L1"> <resolution x="15" y="10" z="5" /> <size x="3400.0" y="2400.0" z="1000.0" /> <position x="-1700.0" y="-1200.0" z="5.0" /> <basis> <U x="1.0" y="0.0" z="0.0" /> <V x="0.0" y="1.0" z="0.0" /> <N x="0.0" y="0.0" z="1.0" /> </basis> </volume> </scene>
ベイク パラメーター
ベイク パラメーターは、2 つの球体のテクスチャ ベイクと後の 2 つの球体の頂点ベイクを指定しています。
uboxVertex_default.bp
<?xml version="1.0" encoding="utf-8"?> <bakeParamsList version="1"> <bakeParams name="128x128_texture" resolution="128 128" packUVs="true" outputType="texture"> <direct maxAASamples="8" maxLightSamples="256"/> </bakeParams> <bakeParams name="128x128_vertex" resolution="128 128" packUVs="true" outputType="vertex"> <direct maxAASamples="8" maxLightSamples="256"/> </bakeParams> <bakeParams name="128x128_pack" resolution="128 128" packUVs="true" outputType="texture"> <direct maxAASamples="8" maxLightSamples="256"/> </bakeParams> <bakeParams name="512x512" resolution="512 512" packUVs="false"> <direct maxAASamples="8" maxLightSamples="256"/> </bakeParams> </bakeParamsList>
頂点ベイクとファイナル ギャザー
実装の制限があるのため、頂点ベイクはファイナル ギャザーとの組み合わせでは機能しません。頂点ベイクされたオブジェクトが見えるオブジェクトではすべて、ファイナル ギャザーを無効にする必要があります。