首先,这里是我所描述的一个例子"奇怪的阴影对角线"。
这是在Maya中构建的表的顶部,导出为.obj
。它加载如下:
let mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( './assets/' );
mtlLoader.load( 'table.mtl', ( materials ) => {
materials.preload();
let objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( './assets/' );
objLoader.load( 'table.obj', ( object ) => {
if ( child instanceof THREE.Mesh ) {
let _color = child.material.color;
if ( _color.r === 0 && _color.g === 0 && _color.b === 0 ) {
child.material.color.r = 0.65;
child.material.color.g = 0.65;
child.material.color.b = 0.65;
}
child.castShadow = true;
child.receiveShadow = true;
child.material.shading = THREE.FlatShading;
}
scene.add( object );
animate();
}
}
此场景中只有一个灯光,这是产生它的代码。
SpotLight_1 = new THREE.SpotLight( 0xffffff, 1 );
SpotLight_1.position.set( 60, 90, 60 );
SpotLight_1.castShadow = true;
SpotLight_1.shadow.mapSize.width = 2048;
SpotLight_1.shadow.mapSize.height = 2048;
scene.add( this.three.SpotLight_1 );
这部分可能会让那些对我有更多3D网格和三个j经验的人明白这个问题...如果我设置SpotLight_1.shadow.mapSize.width = 128
设置mapSize.height
等于128好吧,线条跨越桌子的整个内表面。这是一张照片。
内部网格材质类型为phong,如果相关则边界为lambert。
我认为它与光线撞击反射表面的角度有关。 Y轴上的光为@ 60,表的总高度为30.5。当相机旋转使得桌子位于灯光和相机之间时,效果会很明显。
非常感谢任何见解。如果需要任何其他信息,我将很乐意提供。