Javascript Three.js:几何体上的自定义属性

Javascript Three.js:几何体上的自定义属性,javascript,three.js,shader,Javascript,Three.js,Shader,我已经用了一段时间了,但是在过去的几天里我有点被什么东西卡住了。我正在尝试将一个自定义属性传递给我的着色器,我想经常更新它。着色器将作为着色器材质添加到我的网格中。不过,我现在遇到的问题是,我注意到几个版本之前,有三个版本重新定义了它处理属性的方式。它们不是在材质中,而是在几何体上。但据我所知,普通几何体无法处理自定义属性,这让我陷入了一种糟糕的境地,因为我非常依赖它提供的所有便利。我尝试过使用缓冲区几何体,但当我无法将我的UV贴图(我不断更新)正确地添加到它上时,这就导致了混乱和挫折。如果您想

我已经用了一段时间了,但是在过去的几天里我有点被什么东西卡住了。我正在尝试将一个自定义属性传递给我的着色器,我想经常更新它。着色器将作为着色器材质添加到我的网格中。不过,我现在遇到的问题是,我注意到几个版本之前,有三个版本重新定义了它处理属性的方式。它们不是在材质中,而是在几何体上。但据我所知,普通几何体无法处理自定义属性,这让我陷入了一种糟糕的境地,因为我非常依赖它提供的所有便利。我尝试过使用缓冲区几何体,但当我无法将我的UV贴图(我不断更新)正确地添加到它上时,这就导致了混乱和挫折。如果您想要自定义属性,或者(尽管不太理想)一种方法来正确地将我的UV应用到BufferGeometry方法上,是否有其他方法可以替代BufferGeometry方法?普通几何体不能具有自定义属性有什么原因吗?

您可以将几何体转换为缓冲区几何体,然后设置其自定义属性,从而保持两个世界的最佳状态。这将节省您处理缓冲几何体UV的麻烦,正如您所要求的那样。紫外线应该通过

像这样:


var bufferGeometry=new THREE.bufferGeometry().fromGeometry(几何体)

我不知道BufferGeometry也有fromGeometry函数。我以为这是普通几何所独有的。无论如何,我确实忘了提及,但我在每次渲染时都会更新我的UV,所以我认为这不会表现得足够好。你也可以动态更新缓冲几何体的UV。我从一个BoxGeometry创建了一个立方体,然后用它来获得一个BufferGeometry。在animate()函数中:编写UV更新序列并将其应用于右侧顶点。别忘了更新UV。这有帮助吗?虽然这很难实现,但我最终设法弄清楚阵列是如何组合在一起的,并从中设法循环通过所有“面”,分配适当的UV,产生合理的结果。