THREEJS - 获取场景中模型数据

在一些场景中,我们需要展示场景内的模型数据,如模型的数量、面片数以及顶点数等,下面给大家提供的就是对应的统计函数,在场景加载结束后,传入对应的scene即可:

/**
 * 获取场景内模型数量、顶点数及面片数
 * @param {*} view :需要计算的场景视图即scene
 */
function getSceneModelFaceNum(view) {
    let scene = view;
    let objects = 0; // 场景模型对象
    let vertices = 0; //模型顶点
    let triangles = 0; // 模型面片

    for (let index = 0; index < scene.children.length; index++) {
        let object = scene.children[index];
        object.traverseVisible(function (object) {
            objects++;
            if (object instanceof THREE.Mesh) {
                let geometry = object.geometry;
                if (geometry instanceof THREE.Geometry) {
                    vertices += geometry.vertices.length;
                    triangles += geometry.faces.length;
                } else if (geometry instanceof THREE.BufferGeometry && geometry.attributes.position) {
                    vertices += geometry.attributes.position.count;
                    if (geometry.index !== null) {
                        triangles += geometry.index.count / 3;
                    } else {
                        triangles += geometry.attributes.position.count / 3;
                    }
                }
            }
        });
    }
    console.log('模型对象数量: ' + objects, '模型顶点数: ' + vertices, '模型面片数: ' + triangles);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值