Как только вы загрузите OBJ, возьмите ручку на сетку:
el.addEventListener('object3dset', () => {
var mesh = el.getObject3D('mesh');
});
Затем вы можете применить свой собственный ShaderMaterial:
mesh.material = new THREE.ShaderMaterial({
uniforms: {
texture: { type: 't', value: 0, texture: new THREE.TextureLoader().load( 'texture.jpg' ) }
},
vertexShader: document.getElementById( 'vertexShader' ).textContent,
fragmentShader: document.getElementById( 'fragmentShader' ).textContent
});
В вершинном шейдере у вас есть доступвершина нормальная.https://threejs.org/docs/#api/en/renderers/webgl/WebGLProgram
attribute vec3 position;
attribute vec3 normal;
attribute vec2 uv;
Вершинный шейдер запускается первым;он получает атрибуты, вычисляет / манипулирует положением каждой отдельной вершины и передает дополнительные данные (вариации) в шейдер фрагмента.
В фрагментном шейдере вы можете сэмплировать текстуру:
texture2D(texture, vec2(0, 0));
https://threejs.org/docs/#api/en/materials/ShaderMaterial