私は、OBJLoader.js からロードされた .OBJ モデルがスポットライトから影を落とすことを許可したいプロジェクトに取り組んでいます。ライトは他の通常のオブジェクトから影を落としますが、.OBJ は影を落としないように見えます。
この問題の考えられる症状は次のとおりです。床をクリックしたときにこれらの通常のオブジェクトが作成されると、オブジェクトは配列 Objects[] に入力されます。これにより、オブジェクトがクリック可能になり、その上にオブジェクトが追加されます。.OBJ モデルもこの配列に追加されますが、クリックしてその上にモデルを追加することはできません。あたかもレイキャスターがそれを検出していないかのように。
問題は予期しない場所にある可能性があるため、すべてのコードを含めます。
作業リンクはこちらから入手できます
http://www.powertrooper.com/3D/demos/issues/OBJShadows
床をクリックして、他のオブジェクトがどのように影を落としているかを確認してください。
誰にもアイデアはありますか?ドゥーブさん?あなたはそこにいますか?:)
追伸: ブラウザに残したリンクが「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' );