0

我已经在 Three.js 上工作了一个月,主要是学习它是如何工作的以及我能做什么。现在,我正在尝试通过上传汽车的 .obj 模型来举办汽车博览会。我的问题是,从某些角度看,汽车的某些面孔是不可见的,例如这张图片。

我同时使用 Maya 2012 和 Blender 2.5 来处理模型,试图面对法线或使其顶点化,但没有任何效果。对于上传,我在存储库中使用 .obj 和 mtl 加载器。

希望你能帮助我,在此先感谢。

https://f.cloud.github.com/assets/3899568/507362/4e3a7bf0-bd6e-11e2-8a54-47b1949bba69.jpg

4

2 回答 2

0

请参阅从 r49 到 r50 的迁移:

纹理坐标不再在几何图形中翻转,而是纹理具有 flipY 属性(默认为 true);所有模型都需要重新导出/重新转换(工具也已更新)。解决方法: uv.v = 1 - uv.v;

我有一个类似的问题,将flipY设置为false来解决它。

于 2013-05-16T08:35:56.967 回答
0

问题不在于法线,也不在于纹理坐标。如果您使用 gl.DrawElements 并且 OBJMTLLoader 的当前实现确实如此,则当前 WebGL 存在一个限制,即每次绘制调用只能引用 65k 个顶点。所以你的汽车模型(顺便说一句很棒的模型)不能被视为原样。你需要把它分开。您可以查看three.js/utils/converters/obj/split_obj.py。但是脚本存在问题,记录在https://github.com/mrdoob/three.js/issues/2397中。所以你将无法看到材料。因此,从 Maya 或 Blender 中导出许多模型,并确保生成的 obj 的面索引不大于 65535。否则再次拆分。

同样在下一个版本(three.js r59)中,我相信会有一个 NormalHelper 功能,因此您将能够查看您的法线。

于 2013-05-16T20:09:21.310 回答