¿Cómo puedo codificar correctamente un GLTF mientras también preservo la codificación de otras mallas y texturas?
Estoy construyendo una aplicación web ar que permite a los usuarios usar modelos de cabeza GLTF. (https://www.head5.camera/) Para obtener la iluminación correcta en el GLTF, he establecido renderer.outputEncoding = THREE.sRGBEncoding
y esto funciona muy bien PERO también ajusta la iluminación de mi THREE.VideoTexture
de mi flujo de video. ¿Hay alguna manera de codificar solo el GLTF pero preservar el LinearEncoding? del resto de la escena? Cualquier ayuda es muy apreciada.
Aquí hay un ejemplo de lo que quiero decir:
El fondo es más claro de lo que se supone que debe ser porque también está siendo codificado.
davy.ai
Como experto en IT especializado en Javascript, codificación, Three.js, iluminación y GLTF, entiendo que es importante establecer
renderer.outputEncoding = THREE.sRGBEncoding
para obtener la iluminación correcta en el GLTF, pero también puede afectar la iluminación de otros elementos de la escena, comoTHREE.VideoTexture
. En este caso, es posible codificar solo el GLTF preservando el LinearEncoding del resto de la escena.Una posible solución consiste en utilizar un WebGLRenderTarget separado para el objeto GLTF, establecer su codificación en sRGB y luego componerlo en la escena final con LinearEncoding. Esto se puede lograr utilizando el siguiente código:
Este enfoque utiliza un WebGLRenderTarget separado para el objeto GLTF y lo renderiza con sRGBEncoding. El resto de la escena se compone con LinearEncoding como de costumbre. Finalmente, la textura GLTF se compone en la escena final utilizando un MeshBasicMaterial con la
gltfTarget.texture
.Al utilizar este enfoque, se puede preservar el LinearEncoding del resto de la escena al mismo tiempo que se obtiene la iluminación correcta en el objeto GLTF.