2017-11-27 5 views
0

私はThree.jsでの指向性光と不思議な効果を(それは私のために奇妙に見えますが、私はよく分からない)になってるように見えます。Three.js方向性光は、点光源

enter image description here

ライトセットアップは、簡単で、カメラに取り付けられる。

dirLight = new THREE.DirectionalLight(0xffffff, 1); 
dirLight.position.set(0, 0, 1); 
camera.add(dirLight); 

メッシュ右シーンの原点(0、0、0)に位置します。光のターゲットは同じです。メッシュの 材料は、MTLファイルから来ている:

newmtl mat_1 
Ka 0.140196 0.147059 0.171569 
Kd 0.560784 0.588235 0.686275 
Ks 0.950000 0.930000 0.880000 
Ns 750.000000 

シェーダはデフォルトです。物理的に正しいライトオプションが有効になっている(が、結果は同様に障害者と同じである)標準物質となる

:0から1に

THREE.MeshStandardMaterial({ color: 0x0033ff, roughness: 0.4, metalness: 0.5 }) 

enter image description here

変更粗さ(metalnessがここに0であります):私は光が全P上に均一に分配されなければならないと考え

enter image description here

メッシュのレーン。しかし、それは一点に集中しているように見えます。何が間違っていますか?

私は、次の動作を取得しようとしている: enter image description here

私はこのために私自身のシェーダを書くべきですか?

+0

どのようなタイプの材料ですか?それが 'THREE.MeshStandardMaterial()'なら、あなたは '.roughness'と' .metalness'パラメータの周りで遊ぶことができます。 – prisoner849

+0

@ prisoner849、最初の材料はMTLから来て、OBJローダーに追加されました。 私はまた、デフォルトのOBJローダー材料(他のものは設定していない)と標準的な材料(その写真をポストに添付)で試しました。 いずれの場合も、ライトは同じように見えます。 – Akdez

+0

絶望的なオプションとして、 'THREE.MeshLambertMaterial()'を使用しますが、複数の光源からの影に問題がある可能性があります。 – prisoner849

答えて

0

あなたが透視投影を有すると仮定すると、正常である:光 - 表面ベクトルが表面全体について一定であっても、目に表面ベクトルは常に変化している(それは平行投影で一定であろう)。鏡面反射成分はあなたの材料の主な成分であり、実際にはそれは視線方向を使用します。

関連する問題