[英]THREEJS Shader Material overwritten
我有一個可以按預期工作的着色器材料。 此着色器具有附着的紋理。
我想使用此着色器材質創建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);
是否有意義? 這是預期的行為嗎? 如果是這樣,是否有繞過此問題的好方法?
謝謝
您需要使用相同的着色器創建材質的兩個實例,並為每個實例分配適當的紋理/均勻度。
編輯
復制制服有點棘手。 我認為復制材料時會失去參考,因此您可能要小心管理它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.