Javascript 混合器导出到OBJ并加载到Three.js中,网格法线和面错误
我将我的搅拌机模型导出到OBJ,并将其加载到Three.jsJavascript 混合器导出到OBJ并加载到Three.js中,网格法线和面错误,javascript,three.js,blender,Javascript,Three.js,Blender,我将我的搅拌机模型导出到OBJ,并将其加载到Three.js 对于车轮,法线似乎向内 对于轨迹,仅显示网格,并且未正确映射 我在blender中重新导入了OBJ,它似乎显示正确,因此在Three.js中似乎是个问题 我需要改造车轮和轨道吗?或者有没有办法在Three.js中修复它?问题是为什么导出到obj会翻转面法线 我唯一的猜测是你的物体上有一个负比例。因此,您必须应用缩放和旋转shift-a快捷方式。然后你应该仔细检查你的法线是否仍然朝外。看看我的答案 在Three.js中,您还可以
- 对于车轮,法线似乎向内李>
- 对于轨迹,仅显示网格,并且未正确映射
我需要改造车轮和轨道吗?或者有没有办法在Three.js中修复它?问题是为什么导出到obj会翻转面法线 我唯一的猜测是你的物体上有一个负比例。因此,您必须应用缩放和旋转
shift-a
快捷方式。然后你应该仔细检查你的法线是否仍然朝外。看看我的答案
在Three.js中,您还可以通过使用material.side
值来解算翻转的法线
有双面,背面和正面
你的轮子的刻度是否为负值?你能分享你的搅拌机文件吗?不知何故,即使我创建了新的圆筒,它也有同样的问题。显然,只有当我将“Cap Fill Type”从“Ngon”更改为“Triangle Fan”时,它才正确地导出到OBJ。这解决了我的汽缸问题。对于轨道,我仍然需要解决上述问题。我通过创建一个圆柱体,移除盖面来模拟轨迹。。然后挤出外表面。对其进行建模并正确导出的最佳方法是什么?
var material = new THREE.MeshLambertMaterial({ color: 0xcc8729 });
//Loader for the model
var loader = new THREE.OBJLoader();
var geometry = loader.parse(getObjFileAsString());
geometry.position.set(0, 0, 0);
geometry.castShadow = true;
geometry.receiveShadow = true;
geometry.traverse(child => {
if (child instanceof THREE.Mesh) {
child.material = material;
}
});
scene.add(geometry);
node.material.side = THREE.DoubleSide;