Javascript Three.js OBJLoader.obj模型不投射阴影
我正在进行一个项目,希望允许从OBJLoader.js加载的.OBJ模型从聚光灯投射阴影。灯光将投射来自其他普通对象的阴影,但.OBJ似乎不会投射阴影 故障的可能症状如下: 当在地板上单击时创建这些普通对象时,它们将被输入到数组对象[]中,从而使它们可以单击以在自身顶部添加对象。.OBJ模型也被添加到这个数组中,但是我不能单击它在上面添加模型;好像光线投射器没有检测到它 我将包含所有代码,因为问题可能存在于不可预见的地方 工作链接可用 尝试在地板上单击以查看其他对象如何投射阴影 有人有什么想法吗?杜布先生?你在外面吗?:) ps:我不知道为什么在我的浏览器中,我留下的链接指向一个名为“4safe.in”的恶意软件网站。尝试复制和粘贴链接,我想 以防万一-下面是一段代码,其中包含了可能导致问题的大部分原因Javascript Three.js OBJLoader.obj模型不投射阴影,javascript,three.js,webgl,Javascript,Three.js,Webgl,我正在进行一个项目,希望允许从OBJLoader.js加载的.OBJ模型从聚光灯投射阴影。灯光将投射来自其他普通对象的阴影,但.OBJ似乎不会投射阴影 故障的可能症状如下: 当在地板上单击时创建这些普通对象时,它们将被输入到数组对象[]中,从而使它们可以单击以在自身顶部添加对象。.OBJ模型也被添加到这个数组中,但是我不能单击它在上面添加模型;好像光线投射器没有检测到它 我将包含所有代码,因为问题可能存在于不可预见的地方 工作链接可用 尝试在地板上单击以查看其他对象如何投射阴影 有人有什么想法
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' );
renderer.shadowMapEnabled=true;//////////////渲染器//对象的每个子网格必须将castShadow
设置为true
newModel.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material.map = texture;
child.castShadow = true;
}
} );
var intersects = raycaster.intersectObjects( objects, true );
要获取raycaster.intersectObjects()
以处理对象,需要将递归标志设置为true
newModel.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material.map = texture;
child.castShadow = true;
}
} );
var intersects = raycaster.intersectObjects( objects, true );
three.js r.57非常感谢!在我茫然地盯着屏幕看了一天之后,这首歌第一次完美地发挥了作用。非常感谢。(现在我只需要弄清楚这些变化到底意味着什么!)