簡體   English   中英

THREEJS着色器材質被覆蓋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM