2015-12-02 114 views
1

我得到一個錯誤:three.js所R73着色材料屬性

THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry THREE.ShaderMaterial: 'attributes' is not a property of this material.

,我想弄清楚到底是怎麼回事。

我用來製作一些具有某些屬性的緩衝區幾何圖形。我從來沒有真正知道爲什麼這是必要的,但我注意到我需要「鍵入」它的種類,讓三個與着色器掛鉤。

{ 
    attributes: { 
     aSomeAttribute:{ 
      type: 'v3', 
      value:null 
     } 
    } 
} 

我想弄清楚什麼是material.prototype.setValues(參數)。從我所看到的需要傳遞給材質的參數({vertexShader:...,uniforms:...}),並在遇到屬性時進入焦距。

回答

1

現在,您只能將自定義屬性應用於從THREE.BufferGeometry繼承的幾何上,例如,如果它是使用THREE.SphereBufferGeometry而不是THREE.SphereGeometry的球體。然後創建你的屬性數組並將其添加到幾何中,這要歸功於THREE.BufferGeometry。之後,您將能夠在着色器中使用您的屬性。你可以找到一個例子here

+0

在源代碼中留下了一些殘留,這些屬性仍然被着色器材質克隆,因此有點令人困惑。我幾乎不改變任何東西,除了從shadermaterial構造函數中刪除屬性:{}。爲什麼首先需要它,我從來沒有想到它,我放在那裏的價值總是空的。 – pailhead

+0

快速somwhat相關的問題。在這個例子中,他們仍然使用loadTexture而不是新的textureLoader。你知道如何在創建shaderMaterial時使用新的textureLoader嗎? –