LCCObject::setRenderState
Establece el RenderState del modelo LCC.
Incluye prueba de profundidad, escritura de profundidad, paso de renderizado y otros parámetros.
Requisito de versión
SDK v0.4.0+
Compatibilidad de motor
CesiumJS
API
LCCObject::setRenderState(renderState: RenderStateParam): void
Parámetros
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
renderState.depthTest | Object | No | - | Configuración de prueba de profundidad. |
renderState.depthTest.enabled | boolean | No | true | Si se habilita la prueba de profundidad. |
renderState.depthTest.func | number | No | - | Función de prueba de profundidad, p. ej., Cesium.WebGLConstants.ALWAYS. |
renderState.depthMask | boolean | No | true | Si se escribe en el búfer de profundidad. |
renderState.passIndex | number | No | Cesium.Pass.CESIUM_3D_TILE | Paso de renderizado de Cesium. |
renderState.stencilTest | Object | No | - | Configuración de prueba de stencil. SDK v0.5.0+ |
Valor de retorno
void
Ejemplo de uso
Configuración recomendada de prueba de profundidad (SDK v0.4.0+)
El modelo LCC escribe en el búfer de profundidad y se renderiza en un paso de mayor prioridad. Cuando los objetos posteriores de Cesium tienen la prueba de profundidad habilitada, se logran relaciones de oclusión correctas.
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.ALWAYS,
},
depthMask: true,
passIndex: Cesium.Pass.CESIUM_3D_TILE
};
lccObject.setRenderState(renderState);
Paso de objeto translúcido (SDK v0.4.0+)
Al usar Pass.TRANSLUCENT, las relaciones de oclusión entre objetos dependen del ordenamiento de Cesium de todos los objetos transparentes en la escena, basado en la distancia de la cámara a la caja delimitadora de la escena. En este modo, los resultados de oclusión pueden no coincidir con las expectativas de raiseToTop() o lowerToBottom().
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.LESS,
},
depthMask: false,
passIndex: Cesium.Pass.TRANSLUCENT
};
lccObject.setRenderState(renderState);
Uso de prueba de stencil (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);
Notas
- Este método puede llamarse de forma síncrona inmediatamente después de
LCCRender.load(). - Las versiones v0.4.0 y v0.4.1 solo soportan los parámetros
depthTest,depthMaskypassIndex. - v0.5.0+ soporta todos los parámetros de RenderState y los fusiona con la configuración existente.
- Cuando se usa
depthMask: false, la escritura de profundidad está deshabilitada, y las relaciones de oclusión entre el modelo LCC y otros objetos transparentes dependen de los resultados de ordenamiento de Cesium.
APIs relacionadas
LCCObject::lowerToBottom()LCCObject::raiseToTop()