LCCObject::setRenderState
Setzt den RenderState des LCC-Modells.
Umfasst Tiefentest, Tiefenschreiben, Render-Pass und weitere Parameter.
Versionsanforderung
SDK v0.4.0+
Engine-Unterstützung
CesiumJS
API
LCCObject::setRenderState(renderState: RenderStateParam): void
Parameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
renderState.depthTest | Object | Nein | - | Tiefentest-Konfiguration. |
renderState.depthTest.enabled | boolean | Nein | true | Ob der Tiefentest aktiviert ist. |
renderState.depthTest.func | number | Nein | - | Tiefentest-Funktion, z. B. Cesium.WebGLConstants.ALWAYS. |
renderState.depthMask | boolean | Nein | true | Ob in den Tiefenpuffer geschrieben wird. |
renderState.passIndex | number | Nein | Cesium.Pass.CESIUM_3D_TILE | Cesium Render-Pass. |
renderState.stencilTest | Object | Nein | - | Stencil-Test-Konfiguration. SDK v0.5.0+ |
Rückgabewert
void
Verwendungsbeispiel
Empfohlene Tiefentest-Konfiguration (SDK v0.4.0+)
Das LCC-Modell schreibt in den Tiefenpuffer und rendert in einem höherprioritären Pass. Wenn nachfolgende Cesium-Objekte den Tiefentest aktiviert haben, werden korrekte Verdeckungsbeziehungen erreicht.
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.ALWAYS,
},
depthMask: true,
passIndex: Cesium.Pass.CESIUM_3D_TILE
};
lccObject.setRenderState(renderState);
Transluzenter Objekt-Pass (SDK v0.4.0+)
Bei Verwendung von Pass.TRANSLUCENT hängen die Verdeckungsbeziehungen zwischen Objekten von Cesiums Sortierung aller transparenten Objekte in der Szene ab, basierend auf dem Abstand von der Kamera zur Szenen-Bounding-Box. In diesem Modus stimmen die Verdeckungsergebnisse möglicherweise nicht mit den Erwartungen von raiseToTop() oder lowerToBottom() überein.
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.LESS,
},
depthMask: false,
passIndex: Cesium.Pass.TRANSLUCENT
};
lccObject.setRenderState(renderState);
Verwendung des Stencil-Tests (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);
Hinweise
- Diese Methode kann sofort nach
LCCRender.load()synchron aufgerufen werden. - Versionen v0.4.0 und v0.4.1 unterstützen nur die Parameter
depthTest,depthMaskundpassIndex. - v0.5.0+ unterstützt alle RenderState-Parameter und führt sie mit bestehenden Einstellungen zusammen.
- Bei Verwendung von
depthMask: falseist das Tiefenschreiben deaktiviert, und Verdeckungsbeziehungen zwischen dem LCC-Modell und anderen transparenten Objekten hängen von Cesiums Sortierungsergebnissen ab.
Verwandte APIs
LCCObject::lowerToBottom()LCCObject::raiseToTop()