【问题标题】:three.js r73 shader material attributes三.js r73着色器材质属性
【发布时间】:2016-03-07 03:27:29
【问题描述】:

我收到一个错误:

THREE.ShaderMaterial:现在应该在 THREE.BufferGeometry 中定义属性 三.ShaderMaterial: 'attributes' 不是这个材质的属性。

我正试图弄清楚发生了什么。

我曾经用一些属性制作缓冲区几何图形。我从来没有真正弄清楚为什么需要这样做,但我确实注意到我需要“键入”它,让三个人将它与着色器挂钩。

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

我试图弄清楚 material.prototype.setValues(parameter) 的作用。据我所知,它采用传递给材质的参数({vertexShader:...,uniforms:...}),并在遇到属性时变得疯狂。

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您现在只能对从 THREE.BufferGeometry 继承的几何应用自定义属性,例如,如果它是一个球体,则使用 THREE.SphereBufferGeometry 而不是 THREE.SphereGeometry。然后通过 THREE.BufferGeometry 创建您的属性数组并将其添加到几何图形中。之后,您将能够在着色器中使用您的属性。你可以找到一个例子here

    【讨论】:

    • 在源代码中留下了一些杂乱无章的东西,这些属性仍在使用着色器材质进行克隆,因此有点混乱。除了从 shadermaterial 构造函数中删除属性:{} 之外,我几乎什么都没有改变。为什么首先需要它,我从来没有弄清楚,我放在那里的值总是空的。
    • 快速 somwhat 相关问题。在示例中,他们仍然使用 loadTexture 而不是新的 textureLoader。你知道如何在创建 shaderMaterial 时使用新的 textureLoader 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2012-11-20
    • 2019-03-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多