Estoy creando 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, configuré renderer.outputEncoding = THREE.sRGBEncoding y esto funciona muy bien PERO también ajusta la iluminación de mi THREE.VideoTexture de mi Video en directo. ¿Hay alguna manera de codificar solo el GLTF pero preservar la codificación lineal? del resto de la escena. Cualquier ayuda es muy apreciada.
He aquí un ejemplo de lo que quiero decir:
El fondo es más claro de lo que se supone que debe ser porque también se está codificando.
La codificación de salida es una configuración a nivel de renderizador y no se puede cambiar para objetos o materiales específicos. Debido a que solo puede tener un renderer.outputEncoding , es necesario que se ciña constantemente a un flujo de trabajo gamma o a un flujo de trabajo lineal ( lectura en segundo plano ).
THREE.GLTFLoader configura materiales y texturas asumiendo que está usando un flujo de trabajo lineal y eso requiere renderer.outputEncoding = THREE.sRGBEncoding (o procesamiento posterior equivalente). Parece que el resto de su escena está configurada para un flujo de trabajo gamma. Para que sean consistentes, probablemente querrá recorrer toda la escena (incluidos los glTF y cualquier otro modelo/textura) y configurar el espacio de color de las texturas relevantes.
scene.traverse((object) => { if (object.isMesh) { const material = object.material; if (material.map) material.map.encoding = THREE.sRGBEncoding; if (material.emissiveMap) material.emissiveMap.encoding = THREE.sRGBEncoding; if (material.sheenColorMap) material.sheenColorMap.encoding = THREE.sRGBEncoding; if (material.specularColorMap) material.specularColorMap.encoding = THREE.sRGBEncoding; } }); Con esos cambios, la codificación de salida sRGB para un "flujo de trabajo lineal" se verá correcta. También puede hacer lo contrario, cambiar estas texturas a THREE.LinearEncoding , si desea utilizar la codificación de salida lineal para un "flujo de trabajo gamma". Eso podría ser más fácil si tiene muchos otros contenidos en la escena.