【问题标题】:cannot change material color using three.js无法使用three.js更改材质颜色
【发布时间】:2015-04-17 19:50:53
【问题描述】:

我有一个obj 文件,其中包含顶点组和主对象。我正在尝试为通过顶点组标记的每个组分配颜色。我能找到的是,在three.js 中,每个顶点组的类型都是Object3D,并且没有像setColor 这样的函数,而是每个这样的孩子都有两个THREE.Mesh 类型的孩子,并且它访问了setColor 函数通过物质属性。我不清楚这个层次结构。如何为每个顶点组设置颜色。

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

【问题讨论】:

    标签: javascript three.js rendering webgl


    【解决方案1】:

    stackoverflow上有几个类似的问题可以帮助你点赞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 ];
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 2016-08-27
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2017-05-20
      • 2020-09-22
      • 1970-01-01
      相关资源
      最近更新 更多