THREEJS关于多顶点坐标,非单一材质的处理方式

2020-03-02  本文已影响0人  aibinMr

其实学习webgl后不就我就有个疑问,当一个顶点数非常多,颜色却是由几个单色组成的模型,应该如何处理数据呢。无疑用索引或者数组的方式都会造成很多冗余的数据,这时如何处理呢,知道我看到下面threejs的做法时候我才恍然大悟,threejs先判断模型是否包含多个材质,如果包含多个材质就按照材质来拆分顶点索引,把每个材质拆分成小的模型对象逐一渲染,这样数据就不会过多重复冗余。下面时具体的代码,版本r114

//WebGLRenderer.js 
if ( Array.isArray( material ) ) {

    var groups = geometry.groups;

    for ( var i = 0, l = groups.length; i < l; i ++ ) {

        var group = groups[ i ];
        var groupMaterial = material[ group.materialIndex ];

        if ( groupMaterial && groupMaterial.visible ) {

            currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );

        }

    }

} else if ( material.visible ) {

    currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );

}
上一篇 下一篇

猜你喜欢

热点阅读