Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js Threejs:根据BufferGeometry上的属性应用材质_Three.js - Fatal编程技术网

Three.js Threejs:根据BufferGeometry上的属性应用材质

Three.js Threejs:根据BufferGeometry上的属性应用材质,three.js,Three.js,我知道可以根据Face3对象上的某些值指定多个材质,例如: var materialA=new THREE.MeshLambertMaterial({color:0x00ccee}); var materialB=new THREE.MeshLambertMaterial({color:0xFF0000,map:buildingTexture}); var材料=[材料,材料B]; geometry.materials=[materialA,materialB]; 分配UV(几何); 对于(变量

我知道可以根据
Face3
对象上的某些值指定多个材质,例如:

var materialA=new THREE.MeshLambertMaterial({color:0x00ccee});
var materialB=new THREE.MeshLambertMaterial({color:0xFF0000,map:buildingTexture});
var材料=[材料,材料B];
geometry.materials=[materialA,materialB];
分配UV(几何);
对于(变量i=0;i=0.99){
geometry.faces[i].materialIndex=0;
}否则{
geometry.faces[i].materialIndex=1;
}
}

var对象=新的三个网格(几何体、材质)我实现的解决方案是为该几何体创建一个面数相同的缓冲区。然后,我用所需的值填充缓冲区,然后使用缓冲区中的值来决定应用于每个面的材质。

您可能正在寻找着色器。着色器可以查看顶点属性的值,并更改相关片段的颜色(以及更多!)。这个例子是一个简单的平面,有一个着色器,它使用时间作为输入来更新绘制到平面上的颜色。我刚刚意识到我的链接是一个糟糕的例子。演示(以非常基本的方式)如何访问
THREE.BufferGeometry
位置
颜色
属性。嘿,谢谢。我知道着色器是什么;)可能我没有正确地解释自己。我正在寻找一种方法,根据存储在Float32Array中的每个顶点的值,将材质(threejs内置着色器,如MeshStandardMaterial)指定给几何体。事实证明,只需为每个面创建一个包含值的缓冲区就更容易了。