Para empezar, soy nuevo en ShaderMaterial y GLSL. Leí el Manual de GLSL y miré algunos ejemplos encontrados en mis búsquedas de Google, y estoy probando esto para crear algunos efectos de textura en mis proyectos. En este momento, solo estoy tratando de poner una textura en una superficie como si solo estuviera usando MeshBasicMaterial . Las piezas de código se ven así:
<script type="x-shader/x-vertex" id="vertexskyshader"> varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } </script> <script type="x-shader/x-fragment" id="fragskyshader"> varying vec2 vUv; uniform sampler2D material; void main() { gl_FragColor = texture2D(material, vUv); } </script> <script type="module"> import * as THREE......... for(f = 0; f < lvlfaces.length; f++) { var facemat = new THREE.ShaderMaterial({ vertexColors: THREE.VertexColors, transparent: lvlfaces[f].adjmode, depthWrite: !lvlfaces[f].adjmode, depthTest: !lvlfaces[f].adjmode, uniforms: { texture: { value: matTable[lvlfaces[f].mat] } }, vertexShader: document.getElementById("vertexskyshader").textContent, fragmentShader: document.getElementById("fragskyshader").textContent }); Las lvlfaces se cargan desde un archivo y son una matriz de objetos que contienen información sobre la superficie (como el nombre del archivo de textura .mat , los vértices utilizados, las coordenadas uv, etc.). matriz matTable donde los elementos reciben el nombre de los nombres de los archivos de textura y contienen los datos de textura reales (cargados desde THREE.TextureLoader() ). El problema que tengo es que cuando me muevo por el objeto, las texturas que se muestran cambian a una textura diferente en matTable . No solo eso, sino que otro objeto que usa este mismo bucle pero se le asignan diferentes texturas muestra exactamente las mismas texturas y cambios que el objeto que estoy moviendo.
animación demasiado grande para importar
Tengo la sensación de que hay un conflicto en algún lugar aquí, pero no tengo idea de cuál sería la solución.