這一節先不進行後續,咱們須要對Three.js的一些屬性進行了解。網絡
一、相機spa
經常使用相機除了前一篇博客用到的PerspectiveCamera相機(透視相機), 還有一款名叫正交相機;3d
【a】透視相機:對象
類名:THREE.PerspectiveCamera ,重要參數:fov, near, far,aspect;blog
Fov – 相機的視錐體的垂直視野角 Near – 相機視錐體的近平面 Far – 相機視錐體的遠平面 Aspect – 相機視錐體的長寬比
(圖片來自網絡)圖片
如上圖,當咱們設置相機的屬性,再給相機一個固定的座標(position)和鏡頭朝向(lookAt), 就能夠獲得一個明確的視覺空間,而出如今這個視覺空間的物體就會被渲染出來,就像咱們的眼睛,在咱們所處的世界中咱們的眼睛會有一個相對於世界已知的點,還有面對的方向,這樣咱們的視線就會構成一個視覺範圍,出如今這個視覺範圍的物體就會被咱們看見,而被咱們看見的物體是已經存在的,不會由於咱們看或者不看而存在或者毀滅(我咋感受我開始辨析惟物主義了呢),同理,Three.js經過構建模型在scene中將這個模型渲染出來,無論咱們的camear的方向和位置,這個已經渲染好的模型永遠不會改變(除非認爲修改這個模型的position,手動狗頭)。博客
【b】正交相機it
類名:THREE.OrthographicCamera,重要參數:left : Number, right : Number, top : Number, bottom : Number, near : Number, far : Number io
left - 相機視錐體左平面。 right - 相機平截頭體右平面。 top - 相機平截頭體頂部平面。 bottom - 相機平截頭體底部平面。 near - 近平面距離。 far - 遠平面距離。
在正交投影模式下,不管距離相機(須要設置position和lookAt)的距離如何,渲染圖像中的對象大小都保持不變。ast
(圖片來自網絡)
使用方法:
var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 ); camear.position.set(100, 100, 100); cameat.lookAt(0, 0, 0); scene.add( camera );
二、燈光
【a】環境光
類名:THREE.AmbientLight(hex),參數:環境光顏色(注意是16進制),
這款光線不能直接產生影子,通常用做其餘影子類的基類
【b】平行光
類名:THREE.DirectionalLight(hex),參數:平行光顏色(16進制),平行光咱們能夠看作太陽光。
DirectionalLightShadow :與其餘陰影類不一樣,它使用OrthographicCamera來計算陰影,而不是PerspectiveCamera。這是由於來自DirectionalLight的光線 是平行的
【c】點光源
類名:THREE.PointLight(hex, intensity, distance),參數:hex-點光源顏色,intensity-點光源強度(缺省爲1,即100%,爲最強),distance-光源能照到的最遠距離(缺省爲0)
點光源顧名思義就像燈泡相似的光源,距離燈泡近的地方光線強,距離遠的地方光線弱
從全部方向上的單個點發出的光。一個常見的用例是複製裸燈泡發出的光。
設置屬性 castShadow = true 開啓陰影
【d】聚光燈
類名:THREE.spotLight(),參數:color, intensity, distance, angle, penumbra, decay
color(顏色)- (可選)十六進制顏色的光。默認值爲0xffffff(白色)。 intensity(強度)- (可選)燈光強度/強度的數值。默認值爲1. distance(距離) - 燈光的最大範圍。默認值爲0(無限制)。 angle(角度) - 從其上限爲Math.PI / 2的方向的最大光散射角。 penumbra(半影) - 因爲半影而衰減的聚光錐的百分比。取值介於0和1之間。默認值爲零。 decay(衰變) - 光線沿光線距離變暗的量。
這種光從一個方向的一個點發出,沿着一個圓錐體,它的尺寸越大,離它獲得的光越遠。
和點光源相似設置屬性 castShadow = true 開啓陰影