javascript - 如何从 gltf 对象获取几何图形
问题描述
我已经使用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')
以打印出模型中的所有网格
推荐阅读
- python - 我可以使用 python VLC 流式传输文件吗?
- android-studio - 为什么我们需要使用 Android Studio 来构建 Flutter 应用?
- batch-file - CMD/Batch 获取活跃的互联网连接名称
- r - 如何通过循环遍历 R 中的垂直数据框来创建多个图?
- typescript - 类型为“this”的函数联合,无参数失败
- python - 空的形式参数
- java - 如何使用 Spring Boot 更新 MongoDB 集合中的子对象?
- sql - 如果找到值,请选择行和标志列
- git - Git 克隆问题 - 生成不可丢弃的更改
- elasticsearch - 是否可以使用 X-Pack 来限制 Kibana 登录尝试?