LCCObject::setRenderState
設置 LCC 模型的 RenderState 狀態。
包括深度測試、深度寫入、渲染 Pass 等參數。
版本要求
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 渲染 Pass。 |
renderState.stencilTest | Object | 否 | - | 模板測試配置。SDK v0.5.0+ |
返回值
void
使用示例
推薦的深度測試組合(SDK v0.4.0+)
LCC 模型寫入深度,並在較優先的 Pass 渲染。後續 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()