1. 首页
  2. three.js

three.js网格着色器在不同面上具有不同的不透明度

three.jsn我有一个缓冲几何体,并想设置随机不透明度不同的脸。如果我理解正确,我需要将自定义属性传递给制服,以便片段着色器可以将不透明度“链接”到正确的面。我无法让它工作,也许有人能给我一个提示:n这是新的三、ShaderMaterial({制服:这是我的制服,顶点着色器:此.vertexShaderWireframe(),碎片着色器:此.fragmentShaderWireframe(),/=真;这个。场景。添加(网格);n顶点着色器:nuniform float timeSpeed;uniform float displacementHeight;varying vec3 vNormal;void>nand the fragment shader:nvarying vec2 vUv;varying vec3 vNormal;void main()>nfor now I\”m only coloring by the normals:Bildschirmfoto 2019-07-16 um 20.19.41.jpg1112×1080 97.1 KBnI would pass it something likengeometry.addAttribute(\”opacity\”, new THREE.BufferAttribute(tubeDirections32, 3));n?n非常感谢!n为什么不与您的代码共享实例9?n在任何情况下,使用自定义缓冲区属性都是正确的方法。请记住,顶点着色器始终适用于顶点数据。因此,如果要为每个面指定一个不透明度值,则需要为每个面顶点存储一个值。vin ni:n我需要向制服传递一个自定义属性,n我担心这句话没有意义。我猜您想说您需要向着色器传递一个附加属性。vin ni:ngeometry.addAttribute(“不透明”,新三、缓冲属性(管道方向32,3);n这是错误的。不透明度的项目大小为1而不是3n Mesh Shader different opacity on different facesn

three.js网格着色器在不同面上具有不同的不透明度 为WP2原创文章,链接:https://www.wp2.cn/three-js/three-js%e7%bd%91%e6%a0%bc%e7%9d%80%e8%89%b2%e5%99%a8%e5%9c%a8%e4%b8%8d%e5%90%8c%e9%9d%a2%e4%b8%8a%e5%85%b7%e6%9c%89%e4%b8%8d%e5%90%8c%e7%9a%84%e4%b8%8d%e9%80%8f%e6%98%8e%e5%ba%a6/