Three.js中的3d場(chǎng)景(scene)為無(wú)限大的,我們當(dāng)然不可能去獲取無(wú)限大的信息,在Three.js中封裝了一個(gè)相機(jī)(Camera)的概念,它作為場(chǎng)景的觀察者,獲取有限的指定參數(shù)范圍內(nèi)的信息。
相機(jī)分為兩種:
????1. [endif]正投影相機(jī)(THREE.OrthographicCamera)
????2. [endif]透視相機(jī)(THREE.PerspectiveCamera)

上圖是正投影相機(jī)的取景范圍,相機(jī)只會(huì)取立方體場(chǎng)景以內(nèi)的信息,以外的不會(huì)抓取的,正投影的相機(jī)的特點(diǎn)是視線都是平行的,同樣絕對(duì)大小的物體不會(huì)因?yàn)榫嚯x的遠(yuǎn)近而投影的大小不一,常用于工程建模。

上圖是透視相機(jī)的取景范圍,同樣相機(jī)只會(huì)抓取立方體以內(nèi)場(chǎng)景的信息,透視相機(jī)的特點(diǎn)的所有的視線都會(huì)相較于相機(jī)所在的位置,所以它會(huì)有遠(yuǎn)小近大的特點(diǎn),類似真實(shí)世界的投影成像。
不管是正投影相機(jī)還是透視相近都繼承于相機(jī)類,所以相機(jī)類中包含著一些兩者公有的屬性,想要獲取一塊需求的場(chǎng)景并通過(guò)一定的投影規(guī)則成像在瀏覽器上就必須有如下信息:
????1. [endif]相機(jī)的位置(position),首先相機(jī)的位置決定觀察者所處于的位置。
????2. [endif]相機(jī)的視點(diǎn)(lookAt),相機(jī)的位置確定后,視點(diǎn)就決定了相機(jī)觀察的方向,position與lookAt的連線的矢量是視線的正方面。
????3. [endif]實(shí)例化相機(jī)時(shí)的參數(shù),參數(shù)決定近平面遠(yuǎn)平面夾角之類的信息,至此就可以在場(chǎng)景Scene中通過(guò)相機(jī)的位置(position),視點(diǎn)(lookAt)和實(shí)例化參數(shù)確定一塊空間,并獲取信息。
????4. [endif]相機(jī)的上方向(up),空間是沒(méi)有上下左右,甚至東南西北的概念的,當(dāng)我們獲取了一塊空間時(shí),需要去定義空間的哪個(gè)方向?yàn)樯喜拍艹晒Φ耐队霸跒g覽器上。