У меня есть материал шейдера, который работает так, как ожидалось. Этот шейдер имеет прикрепленную текстуру.THREEJS Shader Материал перезаписан
Я хочу создать 2 ячейки, используя этот материал шейдера, с другой текстурой для каждой сетки.
Проблема в том, что если я попытаюсь отобразить мои 2 ячейки в сцене, материал первого объекта каким-то образом переписан и использует тот же материал, что и второй объект.
var dataShader = VJS.shaders.data;
var uniforms = dataShader.parameters.uniforms;
// texture size (2048 for now)
uniforms.uTextureSize.value = stack._textureSize;
// array of 16 textures
uniforms.uTextureContainer.value = textures;
// texture dimensions
uniforms.uDataDimensions.value = new THREE.Vector3(stack._columns, stack._rows, stack._nbFrames);
// world to model
uniforms.uWorldToData.value = stack._lps2IJK; //new THREE.Matrix4();
var sliceMaterial = new THREE.ShaderMaterial({
// 'wireframe': true,
'side': THREE.DoubleSide,
'transparency': true,
'uniforms': uniforms,
'vertexShader': dataShader.parameters.vertexShader,
'fragmentShader': dataShader.parameters.fragmentShader,
});
var slice = new THREE.Mesh(sliceGeometry, sliceMaterial);
// this is an Object3D that is added to the scene
this.add(slice);
Имеет ли смысл? Это ожидаемое поведение? Если да, есть ли хороший способ обойти эту проблему?
Благодаря
Спасибо, да, у меня была ошибка в моем коде в клонировании материала. – Nicolas