2014-01-19 115 views
5

那麼我剛開始學習three.js,這對我來說完全是全新的。所以我寫這系列的Hello World還挺scrips.Well的我寫了下面的腳本來生成與MeshBasicMaterial立方體(嗯,這是在博客中給出教程只是一個精確副本)使用three.js渲染圖形時不會生成網格lambert材質的對象

 var scene = new THREE.Scene(); 
     var camera = new THREE.PerspectiveCamera(75, 640/340, 0.1, 1000); 
     var renderer = new THREE.WebGLRenderer(); 

     renderer.setSize(640, 340); 
     document.body.appendChild(renderer.domElement); 

     var geometry = new THREE.CubeGeometry(1,1,1); 
     var material = new THREE.MeshBasicMaterial({color: 0xD43001}); 
     var cube = new THREE.Mesh(geometry, material); 


     scene.add(cube); 
     camera.position.z = 5; 

     var render = function(){ 

       requestAnimationFrame(render); 

       cube.rotation.x += 0.1; 
       cube.rotation.y += 0.1; 

       renderer.render(scene, camera); 

      }; 

      render(); 

上面的腳本生成時,我立方體的材料改變從

var material = new THREE.MeshBasicMaterial({color: 0xD43001}); 

var material = new THREE.MeshLambertMaterial({color: 0xD43001}); 

沒有獲取連續顯示現在旋轉的立方體。我真的很想念?

UPDATE

所以我不得不增加一個光源以顯示我加了點光得到了顯示的對象由脫離齧合朗伯material.When的對象。

回答

4

這是因爲MeshBasicMaterial不響應照明,但具有恆定的顏色。

A MeshLambertMaterial然而,確實反應照明,所以沒有光線,你看不到它! MeshPhongMaterial也是如此。

+0

MeshLambertMaterial取決於光線,MeshPhongMaterial取決於光線以及相機 – kishore