javascript - 更改使用 face3 创建的网格的颜色
问题描述
我使用面 3 和三个 js 创建了一个网格。但是所需的颜色没有反映在网格上。这是我使用的代码。
var geometry = new THREE.Geometry();
var f = 0;
for (var i = 0; i < data.real.length; i++, f += 4) {
var o2 = i == data.real.length - 1 ? 0 : i + 1;
var tl = data.real[i];
var tr = data.real[o2];
var bl = data.zeroAxis[i];
var br = data.zeroAxis[o2];
geometry.vertices.push(tl, tr, br, bl);
geometry.faces.push(new THREE.Face3(f, f + 1, f + 2));
face.materials = [ new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) ];
geometry.faces.push(new THREE.Face3(f, f + 3, f + 2));
}
var material = new THREE.MeshPhongMaterial({
color : new THREE.Color(0x008000),
side : THREE.DoubleSide,
transparent : true,
opacity : 0.5
});
var object = new THREE.Mesh(geometry, material);
object.position.set(0, 0, 0);
this.plot = object;
this.tb.scene.add(object);
this.tb.render();
解决方案
以下行不正确:
face.materials = [ new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) ];
如果您想为每张脸应用颜色,请这样做:
var faces = geometry.faces;
for ( var i = 0, l = faces.length; i < l; i ++ ) {
var face = faces[ i ];
face.color = new THREE.Color( Math.random() * 0xffffff );
}
同时将vertexColors
相应材质的属性设置为THREE.FaceColors
。查看以下现场演示,查看完整示例:https ://jsfiddle.net/f2Lommf5/8539/
推荐阅读
- javascript - (MongoDB) Data submitted from user A is being sent into User B's document
- javascript - Can I use a
7
(number in a paragraph) as a value in JavaScript? - android - Triggering Skype call via Android app - 'Start Call' pop-up doesn't go away when call starts
- spring - Spring 5 with Spring-social reports java.lang.NoSuchMethodError: org.springframework.web.util.WebUtils.extractFullFilenameFromUrlPath
- docker - How do I test my Fluentd config in combination with Elasticsearch?
- java - ArrayBlockingQueue+synchronized in java
- reactjs - react-native(或仅反应)的非线性向导组件
- django - 如何将 django 连接到 kubernetes 中的 postgres?
- java - 识别 Java 字符串字符的小写或大写
- parallel-processing - 当测试作业从 fastlane fastfile 运行时,如何在 Circle CI 中实现并行性?