我正在做一个项目,我希望允许从 OBJLoader.js 加载的 .OBJ 模型从聚光灯下投射阴影。灯光会从其他普通对象投射阴影,但 .OBJ 似乎不会投射阴影。
该问题的一个可能症状如下:当这些普通对象在单击地板时创建时,它们被输入到数组 Objects[] 中,这反过来又使它们可以单击以将对象添加到自身之上。.OBJ 模型也被添加到这个数组中,但是我不能点击它来在它上面添加模型;好像光线投射器没有检测到它。
我将包含所有代码,因为问题可能出在无法预料的地方。
这里有一个工作链接
http://www.powertrooper.com/3D/demos/issues/OBJShadows
尝试单击地板以查看其他对象如何投射阴影。
有人有想法么?杜布先生?你在外面吗?:)
ps:我不知道为什么在我的浏览器中,我留下的链接指向一个名为“4safe.in”的恶意软件站点。尝试复制并粘贴我猜的链接...
以防万一-这是一段代码,其中包含可能导致问题的大部分内容。
renderer.shadowMapEnabled = true;///////////////////////////////////////////// RENDERER /// <------------Renderer and lights set up to cast shadows
light.castShadow = true;
light.shadowDarkness = 1;
renderer.shadowMapSoft = true;
floor.receiveShadow = true;
var texture = new THREE.Texture();
var loader = new THREE.ImageLoader();
loader.addEventListener( 'load', function ( event ) {
texture.image = event.content;
texture.needsUpdate = true;
} );
loader.load( 'modeltest/ash_uvgrid01.jpg' );
// model
var loader = new THREE.OBJLoader();
loader.addEventListener( 'load', function ( event ) {
var newModel = event.content;
newModel.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material.map = texture;
}
} );
newModel.position.set (200,30,0);
newModel.castShadow = true;///////////////////////////// <------ This doesn't seem to be working.
scene.add( newModel );
objects.push( newModel );/////////////////////////////// <------ The other HINT: because of this, the raycaster SHOULD allow us to click the model and create a new block. But we can't.
});
loader.load( 'modeltest/male02.obj' );