.obj模型和法线

时间:2013-05-15 15:27:42

标签: 3d three.js normals .obj

我一直在为Three.js工作一个月,主要是学习它是如何工作的,我能做些什么。现在,我正试图通过上传汽车的.obj模型来进行汽车博览会。我的问题是,从某些角度来看,汽车的某些面部是不可见的,如图中所示。

我正在使用Maya 2012和Blender 2.5工作模型,无意中试图面对法线或顶点它们,但没有任何作用。 对于上传,我正在使用存储库中的.obj和mtl加载程序。

希望你能提前帮助我。

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

2 个答案:

答案 0 :(得分:0)

请参阅从r49到r50的迁移:

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

我有类似的问题,将flipY设置为false,纹理解决了它。

答案 1 :(得分:0)

问题不在于法线和纹理坐标。目前有一个WebGL的限制,如果你使用gl.DrawElements和OBJMTLLoader的当前实现,你每个绘图调用只能引用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函数,因此您可以查看法线。