Three.js:如何合并两个BufferGeometries并保持变换?

时间:2017-07-15 20:14:26

标签: three.js

非缓冲测量法Geometry.merge()在合并时采用矩阵应用于几何体:

.merge ( geometry, matrix, materialIndexOffset )

但是,BufferGeometry.merge()不采用矩阵:

.merge ( bufferGeometry, offset )

我已经确认将两个BufferGeomtries合并在一起不会保留正在合并的对象的转换。

以下是踢球者:我想这样做,无需在任何步骤转换为Geometry。我想在BufferGeometry中完成所有操作。

这可能吗?

2 个答案:

答案 0 :(得分:1)

我们一直在(主要是单个对象)进行sich合并,以维护JSON对象导出的转换。

要进行转换,我们需要运行一个小函数

getFixedMesh = function(geometry) {
    var fixedmesh = null;
    switch (geometry.constructor.name) {
        case 'BufferGeometry':
            var srcmesh = new THREE.Mesh(geometry);
            srcmesh.updateMatrix();
            return THREE.BufferGeometryUtils.mergeBufferGeometries([srcmesh.geometry]);
        default:
            var srcmesh = new THREE.Mesh(geometry);
            srcmesh.updateMatrix();
            fixedmesh = new THREE.Geometry();
            fixedmesh.merge(srcmesh.geometry, srcmesh.matrix);
            return fixedmesh;
    }
}

这适用于许多安排,但LineSegments上还是有一些错误(及其他?)

答案 1 :(得分:0)

BufferGeometry具有.applyMatrix(矩阵)方法,您可以在合并之前将对象“转换”为顶点数据。