当我加载目标文件Wavefront obj file时,未正确计算法线,因此模型的阴影是错误的。我加载* .obj模型的代码是从loader / obj示例的原始项目修改的,从下面可以看出我在将模型添加到场景之前缩放模型,通常在那些类型的转换之后必须调用{ {1}},dirtyDisplayList
或UpdateModel
- 类似于强制模型反映对模型所做的当前更改的函数。在threejs中,最可能的函数是RecalculateNormals
和geometry.computeFaceNormals();
但在我的情况下,如果我调用geometry.computeVertexNormals( true );
和geometry.computeFaceNormals();
,那么模型完全消失,控制台报告:TypeError:geometry.computeFaceNormals不是函数OBJ_Loader.html:102
我在这里做错了什么?
geometry.computeVertexNormals( true );
答案 0 :(得分:1)
刚才有人问过,但我现在会尝试回答。
回调函数采用具有属性几何的参数Object3D。 最重要的是,对象可能包含多个孩子。 您可以使用遍历函数来获取每个子项并在那里修改几何。 所以你的函数函数(几何){...}可能如下所示:
function(object){
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.geometry.scale.set(10, 10, 10);
child.geometry.rotation.x = 3.1415/2;
child.geometry.position.z =-0;
child.geometry.position.x =0;
child.geometry.position.y =0;
child.geometry.computeFaceNormals();
child.geometry.computeVertexNormals( true );
scene.add( child );
}
}
}