2012-07-31 2 views
1

Dans mon projet, j'ai ajouté plusieurs modèles et d'autres objets géométriques, et je pouvais déplacer la caméra pour scanner la scène, mais quand j'ai ajouté des lumières comme ci-dessous, le modèle ne s'est pas montré tel quel. Comment dois-je ajouter des lumières appropriées pour bien s'adapter aux modèles de la scène.Comment ajouter de la lumière appropriée dans la scène?

var ambientLight = new THREE.AmbientLight(0x222222); 
scene.add(ambientLight); 

// add directional light source 
var directionalLight = new THREE.DirectionalLight(0xffffff,2); 
directionalLight.position.set(1, 1, 1).normalize(); 
scene.add(directionalLight); 

var directionalLight1 = new THREE.DirectionalLight(0xffffff); 
directionalLight1.position.set(-1, -1, -1).normalize(); 
scene.add(directionalLight1); 
+2

Peut-être qu'il serait plus approprié de poster ceci dans la branche gamedev du débordement de pile: http://gamedev.stackexchange.com –

Répondre

1

Cela va être une lumière ambiante assez sombre. Je recommanderais une valeur quelque part plus haut, plus proche de 0x555555 ou plus. De plus, vous ajoutez la lumière directionnelle à votre scène, mais vous placez les positions de vos lumières directionnelles très près de l'origine de la scène.

Vous voyez directionalLight.position est un objet THREE.Vector3 et vous appelez la méthode .set() de l'objet vectoriel, puis simplement en normalisant le résultat. Votre objet est plus grand qu'une unité ou plus? Et est-ce à l'origine? Si c'est le cas, je parie que votre lumière directionnelle est à l'intérieur de votre objet. Un modèle 3D ne va pas bien paraître avec seulement l'éclairage ambiant. Au lieu de cela, je vous recommande de faire quelque chose comme ceci:

 var originVector = new THREE.Vector3(0,0,0); 
     var ambLight = new THREE.AmbientLight(0x555555); 
     scene.add(ambLight); 

     var dirLight = new THREE.DirectionalLight(0xFFFFFF); 
     dirLight.position.x = -200; 
     dirLight.position.y = 200; 
     dirLight.position.z = 150; 
     dirLight.lookAt(originVector); 
     scene.add(dirLight); 

Si vous avez besoin d'ombres, je vous renvoie à cette question, je l'ai déjà répondu au sujet Enabling Shadows in Three.JS. Et voici une démo que j'ai faite il y a quelques temps qui devrait vous montrer le résultat du code d'éclairage ci-dessus: Lighting Cube Acceleration Demo.

+0

salut, je ne peux pas trouver des docs à ce sujet comme je sais directionLight mais où obtenez-vous position, méthode nomralize() (ailleurs je l'ai vu) ... J'aimerais trouver des docs de style jquery quelque part. –

+0

La position est un objet THREE.Vector3 et normalize() appartient à cette classe (ou Vector2, Vector4). Il y a une pléthore de docs, juste besoin de le chercher. http://threejs.org/docs/ – Hobbes

Questions connexes