three.js - 如何访问 Face3 Vector3 Three.js
问题描述
我试图根据 Face3 内任何 Vector3 中的任何顶点是否高于 y 的某个值来更改面颜色。
我无法弄清楚如何访问 Face3 中的顶点数组。
我分别尝试了每一个,看看我是否可以获得 y 值,但它总是说无法读取未定义的属性。
var face1 = new THREE.Face3(b, a, c );
console.log(face1.a[1]);
console.log(face1.a.y);
console.log(face1[0].y)
下面的答案适用于 console.log,但是一旦我确定了我想要的颜色,我似乎无法更改顶点颜色。
var faces = geometry.faces;
var vertices = geometry.vertices;
for ( var i = 0; i < faces.length; i ++ ) {
var face = faces[ i ];
var vertexA = vertices[ face.a ];
var vertexB = vertices[ face.b ];
var vertexC = vertices[ face.c ];
if (vertexA.y > 3.1 ){
vertexA.color = colorPink;
console.log(vertexA);
} else if (vertexB.y > 3.1){
vertexB.color = colorPink;
} else if (vertexC.y > 3.1){
vertexC.color = colorPink;
}}
我没有收到任何控制台错误,但顶点颜色没有改变。我不想改变整个面的颜色,只是匹配的顶点。
解决方案
属性a
和是b
索引。您可以通过以下方式访问顶点值:c
THREE.Face3
var faces = geometry.faces;
var vertices = geometry.vertices;
for ( var i = 0; i < faces.length; i ++ ) {
var face = faces[ i ];
var vertex = vertices[ face.a ];
console.log( vertex.y );
}
推荐阅读
- python - sel.unregister(clt_socket) 不从选择器中删除套接字
- php - 根据集合变量在关联数组中搜索特定值
- c# - 在 linq 查询的 foreach 循环中使用 foreach 循环
- python - Mandelbrot Numba/Numpy 矢量化?
- actions-on-google - 媒体状态未在 google/Actions builder 上提供任何响应操作
- mockito - Mockito 最新版本支持抑制静态块
- java - Android Room 不确定如何处理方法返回类型
- javascript - TensorflowJS 后端 CPU 内核 undefined 已注册
- spring-boot - Spring Boot 日志中的 println()
- node.js - 纱线链接没有获取本地依赖版本更改