首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.js不使用.mtl -导出THREE.js文件来呈现THREE.js

THREE.js不使用.mtl -导出THREE.js文件来呈现THREE.js
EN

Stack Overflow用户
提问于 2018-11-22 08:01:59
回答 1查看 219关注 0票数 2

*UPDATE*这必须是文件及其导出方式的问题,我只是不知道这个问题是什么。我已经下载了一些更多的示例模型,它们都呈现得很好。

在加载Three.js和.mtl文件时,我遇到了一个问题。

我有一堆对象和它们对应的从3ds导出的材料文件。我不是导出这些文件的人,我不是3d建模者,但是如果这是文件的问题,我可以要求建模者再次导出它们。

我使用过THREE.js几次,从未遇到过这个问题,我使用以下方法加载.mtl和.obj文件:

代码语言:javascript
复制
mtlLoader.load("stands/objects/Table&Chairs.mtl", function(materials){

            materials.preload();
            var objLoader = new THREE.OBJLoader();
            objLoader.setMaterials(materials);

            objLoader.load("stands/objects/Table&Chairs.obj", function(object){

                scene.add(object);
                object.position.set(-5, 0, 4);
            });

        });

我的问题是对象加载很好,没有错误,但是没有显示。对象没有呈现到场景中。

如果我从其他来源下载一些示例资产并切换正在上载的文件,而不更改其他任何内容,则对象呈现。

这让我相信,这可能是文件导出方式的一个问题。

呈现我的.obj的屏幕显示

显示正在呈现的示例.obj的屏幕

任何可能导致这种情况的帮助都将不胜感激。

我已经上传了这里的对象和材料。

我的是桌椅,示例是Tent_Poles_01文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-22 13:07:48

关于.OBJ文件的伟大之处在于,您可以在您选择的文本编辑器中打开它们,并查看其中的内容。这将给你一个大致的位置和规模的概念:

  • 看看你的帐篷模型中的顶点,它似乎在每个维度中有大约2个单位的大小,中心围绕着原点。
  • 看看桌椅模型中的顶点,它们有几百万个单位的大小,并且在(+6000,0,-2000)附近开始。

换句话说,第一个怀疑是您的模型呈现在可见视点之外的某个地方。

通常,当你和一位3D艺术家一起工作时,你会事先讨论你想要工作的比例,并让他们把模型和原点很好地对齐。

您可以(某种程度上)在代码中纠正这一点,但它将不那么实用。

  1. mesh.geometry.center()将重新计算(0,0,0)周围的几何.但请注意,这通常不是你想要的。例如,一张桌子在它默认的居中位置会在地板的一半处。
  2. 若要将几何缩放到绝对大小,请使用类似(伪代码)之类的方法。 var currentSize =新的THREE.Box3().setFromObject(model).getSize();mesh.geometry.scale( targetWidth / currentSize.X,targetHeight / currentSize.Y,targetDepth / currentSize.Z)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53426294

复制
相关文章

相似问题

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