javascript - 无法使用 Three.js 更改 Material 颜色

标签 javascript three.js rendering webgl

我有一个 obj 文件,其中包含顶点组以及主对象。我正在尝试为通过顶点组标记的每个组分配颜色。我可以发现的是,在 Three.js 中,每个顶点组都是 Object3D 类型,并且没有像 setColor 这样的函数,而是每个这样的子节点有两个 THREE.Mesh 类型的子代,并且它具有通过 Material 属性访问的 setColor 函数。我不清楚这个层次结构。如何为每个顶点组设置颜色。

还有一件事是,早期版本的 Three.js 具有不同的对象子关系层次结构。请给我一些意见。我正在认真寻找解决方案

最佳答案

堆栈上有几个类似的问题溢出可以帮助您,例如 herehere .

为了能够为顶点设置颜色,您需要遍历对象树,直到找到网格几何体的面,然后您可以分配一个vertexColors数组:

var numberOfSides, j, vertexIndex;

for ( var i = 0; i < geometry.faces.length; i++ ) 
{
    face = geometry.faces[ i ];   
    face.color = baseColor;      
    numberOfSides = ( face instanceof THREE.Face3 ) ? 3 : 4;
    for( j = 0; j < numberOfSides; j++ ) 
    {
        vertexIndex = face[ faceIndices[ j ] ];
        face.vertexColors[ j ] = geometry.colors[ vertexIndex ];
    }
}

有关更多详细信息,请查看链接的问题。

关于javascript - 无法使用 Three.js 更改 Material 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556048/

相关文章:

javascript - 使用我网站上的按钮更改 h1/h2/h3 的字体大小(使用本地存储)

javascript - $location的概念

javascript - 如何在 Three.js 中随时间添加/删除对象

javascript - 渲染对象实例中的颜色不正确,我完全不知道整个该死的世界为什么

opengl - 如何在opengl中渲染从一侧开始到另一侧的颜色渐变?

javascript - 在映射下一项之前,异步等待映射不等待异步函数在映射函数内部完成

javascript - 跨 Node.js 模块共享下划线 mixins

javascript - 如何在 Three.js 中设置相机的位置而不使其旋转?

javascript - Three.js 多边形/多面体名称或标题

java - Java 中的矩阵和 vector 数组