Javascript 如何在THREE.js中使用AMFLoader中的几何体?

Javascript 如何在THREE.js中使用AMFLoader中的几何体?,javascript,three.js,Javascript,Three.js,我正在使用STLLoader和AMFLoader在场景中加载模型。当文件为STL文件时,我加载该文件并计算边界框以及我自己用于计算体积和表面积的函数: var loader = new THREE.STLLoader(); loader.load('file.stl'', function ( geometry ) { var material = new THREE.MeshLambertMaterial( { color: 0xeaeaea/*, s

我正在使用STLLoader和AMFLoader在场景中加载模型。当文件为STL文件时,我加载该文件并计算边界框以及我自己用于计算体积和表面积的函数:

        var loader = new THREE.STLLoader();
    loader.load('file.stl'', function ( geometry ) {

        var material = new THREE.MeshLambertMaterial( { color: 0xeaeaea/*, specular: 0x111111, shininess: 100*/ } );
        geometry.computeBoundingBox(geometry);
        bBox = geometry.boundingBox;
        geometry.computeVertexNormals();

        // convert buffergeometry to geometry so attributes can be used to calculate volume and area
        var calcGeometry = new THREE.Geometry().fromBufferGeometry(geometry);
        // calculate Volume
        modelVolume = calculateVolume(calcGeometry);
        // calculate Surface Area
        modelArea = calculateArea(calcGeometry);

        meshMain = new THREE.Mesh( geometry, material );

        meshMain.position.set( 0, 0, 0 );
        meshMain.rotation.set( 0, - Math.PI / 2, 0 );
        meshMain.scale.set( 1, 1, 1 );

        // center the rotational pivot point on center of geometry
        meshMain.translation = geometry.center();

        // bounding box info
        showBoundingBox = new THREE.BoxHelper(meshMain, bBoxColor);

        meshMain.castShadow = true;
        meshMain.receiveShadow = true;

        scene.add( meshMain );

    });
但是,AMFLoader似乎会返回网格。如何处理返回网格的几何体?这就是我尝试过的:

        var loader = new THREE.AMFLoader();
    loader.load( 'file.amf', function ( amfobject ) {
        console.log(amfobject.geometry); // undefined

        scene.add( amfobject );
    } );
编辑

这就是我试图做的:

        amfobject.children.forEach(function (child) {
            child.geometry.computeFaceNormals();
            child.geometry.computeVertexNormals();
            child.geometry.computeBoundingBox();
        });

但是它说child.geometry没有定义。

试试
console.log(amfobject)
看看它有什么类型。它可能是
THREE.Group()
,并且具有
THREE.Mesh()数组的
子属性
是的,它是一个组。但是我尝试了这个,发现
amfobject.children.geometry
没有定义。我在上的特定模型似乎有一个子几何体,几何体位于此处:
amfobject.children[0]。children[0]。几何体