javascript - 如何从 gltf 对象获取几何图形

标签 javascript three.js

我用three.js通过gltfloader得到一个gltf,我想创建一个粒子系统。我需要获取几何对象,如何获取

function initModel() {

    var planeGeometry = new THREE.PlaneGeometry(100, 100);
    var planeMaterial = new THREE.MeshLambertMaterial({color: 0xaaaaaa, 
    side: THREE.DoubleSide});
    var plane = new THREE.Mesh(planeGeometry, planeMaterial);
    plane.rotation.x = -0.5 * Math.PI;
    plane.position.y = -.1;
    plane.receiveShadow = true; 
    scene.add(plane);

    var loader = new THREE.GLTFLoader();
    loader.load('./../model/scene.gltf', function (gltf) {  
        gltf.scene.scale.set(10,10,10);
        //how to get the geometry?

    });


}

最佳答案

您可以遍历模型来查找网格,或者在知道名称时使用 getObjectByName(MeshName),然后从网格中选取几何体。 有点像

var geometry = getObjectByName('Plane001').geometry;

如果网格名称是Plane001

我有一个简单的辅助方法可以从一个对象中找到一个类型的所有子对象

findType(object, type) {
    object.children.forEach((child) => {
        if (child.type === type) {
            console.log(child);
        }
        this.findType(child, type);
    });
}

然后我会从加载程序调用 findType(gltf.scene, 'Mesh') 打印出模型中的所有网格

关于javascript - 如何从 gltf 对象获取几何图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680582/

相关文章:

javascript - 如何阻止 VS Code 在保存时完全破坏我的代码?

javascript regex - 我非常简单的正则表达式有什么问题吗?

Three.js 无缩放纹理映射

matrix - 将对象的旋转定向到THREE.JS中的样条点切线

javascript - 当具有渲染器的 DOM 元素不在屏幕顶部时移动场景的坐标

javascript - Vue.js "Maximum call stack size exceeded"错误。将数据从 parent 传递给 child 失败

javascript - 为什么我的 div 滚动不工作?

javascript - 如何在 jQuery Mobile 多页面模板结构中将第二页显示为默认页面?

javascript - 在 javascript 中围绕 3D 轴旋转表面

three.js - 地板上的阴影在 Three.js v104 中不起作用,但在 r71 中起作用