从Blender获取一些3D对象以正确渲染到Three.js中我遇到了一些问题。
这是Blender中的对象: (我认为对象看起来很不错)
这是Three.js中的对象(使用THREE.SceneLoader()加载):
(注意孔周围的奇怪表面)。
此外,在放大时,我可以看到正面朝向相机的部分物体。
有人可以让我知道一个良好的工作流程,以便从Three.js中正确呈现的搅拌器中获取对象吗?
这是因为着色器还是网格导入/导出问题?
我正在使用样本中的场景(地面,天空,阴影),并使用从Blender导出的JSON文件中的sceneLoader加载我的网格。
如果我导出与.obj相同的对象并使用OBJLoader将它加载到Three.js中,那么它看起来很好。
问题是我需要创建一个更复杂的场景,我需要对象是交互/可点击的。如果我将场景保存为.OBJ,这是否可行?
答案 0 :(得分:2)
使用平面着色,例如material.shading = THREE.FlatShading; 有关材料属性,请参阅此示例: http://mrdoob.github.io/three.js/examples/webgl_materials.html 您正在寻找一个刻面球体。它在three.js中看起来很难看,因为它平滑了顶点/面法线。
关于你的第二点。检查导入对象的大小和场景大小。如果在放大时对象被“切割”,则必须将近平面处的摄像机更改为较小的值。与缩小时对象消失的情况相同,您必须将摄像机远平面更改为更远(增加值)。 希望这有帮助,祝你好运:)