LCCObject::setRenderState
LCC モデルの RenderState を設定します。
デプステスト、デプスライト、レンダーパスなどのパラメータが含まれます。
バージョン要件
SDK v0.4.0+
エンジンサポート
CesiumJS
API
LCCObject::setRenderState(renderState: RenderStateParam): void
パラメータ
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
renderState.depthTest | Object | いいえ | - | デプステスト設定。 |
renderState.depthTest.enabled | boolean | いいえ | true | デプステストを有効にするかどうか。 |
renderState.depthTest.func | number | いいえ | - | デプステスト関数。例: Cesium.WebGLConstants.ALWAYS。 |
renderState.depthMask | boolean | いいえ | true | デプスバッファへの書き込みを行うかどうか。 |
renderState.passIndex | number | いいえ | Cesium.Pass.CESIUM_3D_TILE | Cesium レンダーパス。 |
renderState.stencilTest | Object | いいえ | - | ステンシルテスト設定。SDK v0.5.0+ |
戻り値
void
使用例
推奨デプステスト設定(SDK v0.4.0+)
LCC モデルがデプスバッファに書き込み、より高い優先度のパスでレンダリングされます。後続の Cesium オブジェクトでデプステストが有効な場合、正しいオクルージョン関係が実現されます。
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.ALWAYS,
},
depthMask: true,
passIndex: Cesium.Pass.CESIUM_3D_TILE
};
lccObject.setRenderState(renderState);
半透明オブジェクトパス(SDK v0.4.0+)
Pass.TRANSLUCENT を使用する場合、オブジェクト間のオクルージョン関係は、カメラからシーンバウンディングボックスまでの距離に基づくシーン内のすべての透明オブジェクトの Cesium によるソートに依存します。このモードでは、raiseToTop() や lowerToBottom() で期待されるオクルージョン結果と一致しない場合があります。
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.LESS,
},
depthMask: false,
passIndex: Cesium.Pass.TRANSLUCENT
};
lccObject.setRenderState(renderState);
ステンシルテストの使用(SDK v0.5.0+)
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.ALWAYS,
},
depthMask: true,
passIndex: Cesium.Pass.CESIUM_3D_TILE,
stencilTest: Cesium.StencilConstants.setCesium3DTileBit()
};
lccObject.setRenderState(renderState);
注意事項
- このメソッドは
LCCRender.load()の後すぐに同期的に呼び出すことができます。 - バージョン v0.4.0 および v0.4.1 では、
depthTest、depthMask、passIndexパラメータのみサポートされています。 - v0.5.0 以降はすべての RenderState パラメータをサポートし、既存の設定とマージされます。
depthMask: falseを使用する場合、デプスライトが無効になり、LCC モデルと他の透明オブジェクト間のオクルージョン関係は Cesium のソート結果に依存します。
関連 API
LCCObject::lowerToBottom()LCCObject::raiseToTop()