ブレンダーからエクスポートした単純な屋内シナリオがあります。天井に 3 つの球体がある部屋があり、その中にそれぞれの光源があります。ライトはそれぞれ単独ではうまく機能しますが、すべてをシーンに挿入すると、そのうちの 1 つだけが機能します。2 つで動作することもありますが、3 つで動作することはありません。ライトのコードは次のとおりです。
luz_sala1 = new THREE.PointLight(0xFFFFFF,0.5, 50.0);
luz_sala1.position = new THREE.Vector3(16.14323,2.52331,13.93375);
scene.add(luz_sala1);
luz_sala2 = new THREE.PointLight(0xFFFFFF, 0.5, 50.0);
luz_sala2.position = new THREE.Vector3(27.70114,2.52331,-6.20571);
scene.add(luz_sala2);
luz_sala3 = new THREE.PointLight(0xFFFFFF, 0.5, 50.0);
luz_sala3.position = new THREE.Vector3(21.50580,3.10719,-27.82775);
scene.add(luz_sala3);
距離を 0 に設定するとうまくいきますが、これらのライトが存在する領域のみに影響を与える必要があります。 THREE.Spotlight(0xFFFFFF,0.5,50.0,Math.PI, 0) でも試しましたが、同じ結果です。なんとなく距離が同じだと打ち消し合っているように見えませんか?
助けてください、これは非常に紛らわしいです。
編集: また、部屋の別のセクションにいくつかのスポットライト モデル (約 4 つある) がありますが、これらの 4 つのスポットライトをシーンに追加すると、シェーダー コンパイル エラーが発生します。問題を検索した後、レンダラーで maxLights プロパティを設定する必要があることがわかりました。10 に設定しましたが、まだ問題が発生します。シーンに 4 つを超えるライトを配置することはできません。他にできることはありますか?
編集2:ここにいくつかの画像があります。参考までに、テレビに近い方が「luz_sala1」、真ん中が「luz_sala2」、遠い方が「luz_sala3」です。
これは上記のコード (3 つのライトすべて) を使用したものですが、強度は 0.8 です。 http://www.mediafire.com/view/?s85qr4rplhort29
これは 2 と 3 をオンにしたものです ("scene.add(luz_sala1);" にコメント): http://www.mediafire.com/view/?83qbbua9f8ee3b4
ご覧のとおり、2 つのポイント ライトはうまく連携しますが、3 つあると最初のライトに「足し合わせる」ように見えますか?