首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OBJ文件加载到Three.js的过程

将OBJ文件加载到Three.js的过程
EN

Stack Overflow用户
提问于 2015-08-09 08:50:19
回答 1查看 634关注 0票数 1

我正在尝试使用可爱的Three.js上传两个OBJ及其相关的MTL文件到WebGL场景中。

我刚刚提出了一个问题,我找不到理由。我在代码中添加了一些全局变量,用于监控加载OBJ和MTL文件时发生的情况。尽管它只是一组文件,但"obj“变量来自"Group”类型,并且它确实有两个“子文件”。正如console.log()所说,它本身不是mesh的实例,而是它的子实例。然而,当我检查孩子的内部时,第一个--由geo测量--只包含顶点,"faces“数组是空的。然而,第二个子节点--通过geo1测量--拥有所有的顶点和面。当你使用obj时,仅仅使用geo1来获得相同的场景就足够了。

我关心的是这背后的逻辑。为什么对于一组OBJ和MTL文件,我们有一个带有两个子对象的对象,其中第一个子对象只有顶点,第二个子对象又有顶点和面。

这对我来说很重要,因为我想要在顶点和面上工作,以获得体素化的体积,这需要在场景对象上进行直接操作。

代码语言:javascript
复制
scapula = new THREE.OBJMTLLoader();
scapula.load('obj/scapulaTWO.obj', 'obj/scapulaTWO.mtl', function (object) {
    // var material = new THREE.MeshFaceMaterial(materials);
    var material = new THREE.MeshLambertMaterial({
        color: 0xFFFF66
    });
    obj = object; //group

    object.traverse(function (child) {
        if (child instanceof THREE.Mesh) {
            console.log(child instanceof THREE.Mesh)

            geo[i] = child; //mesh
            // apply custom material
            child.material = material;

            // enable casting shadows
            child.castShadow = true;
            child.receiveShadow = true;

            i = i + 1;
        }
    });

    scene.add(geo[1]);
});
EN

回答 1

Stack Overflow用户

发布于 2015-08-09 09:27:57

在被加载程序解析后,您将在对象中找到的内容是由您的模型生成的。

你可以用文本编辑器打开你的*.obj,自己查看群组等。这不像three.js撕开顶点并将它们放在一个单独的组中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31899954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档