摘要:和使用的坐標(biāo)系是右手坐標(biāo)系。與都是指到照相機(jī)位置在深度平面的位置,而照相機(jī)不應(yīng)該拍攝到其后方的物體,因此這兩個值應(yīng)該均為正值。
Three.js是一個3D JavaScript庫。Three.js封裝了底層的圖形接口,使得程序員能夠在無需掌握繁冗的圖形學(xué)知識的情況下,也能用簡單的代碼實(shí)現(xiàn)三維場景的渲染。
一個典型的Three.js程序至少要包括渲染器(Renderer)、場景(Scene)、照相機(jī)(Camera),以及你在場景中創(chuàng)建的物體。
渲染器(Renerer)渲染器將和Canvas元素進(jìn)行綁定,在HTML中手動定義了id為mainCanvas的Canvas元素,那么Renderer可以這樣寫:
var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById("mainCanvas") });
將背景色(用于清除畫面的顏色)設(shè)置為黑色:
renderer.setClearColor(0x000000);場景(Scene)
在Three.js中添加的物體都是添加到場景中的,因此它相當(dāng)于一個大容器。一般說,場景里沒有很復(fù)雜的操作,在程序最開始的時候進(jìn)行實(shí)例化,然后將物體添加到場景中即可。
var scene = new THREE.Scene();照相機(jī)(Camera)
我們使用Three.js創(chuàng)建的場景是三維的,而通常情況下顯示屏是二維的,那么三維的場景如何顯示到二維的顯示屏上呢?照相機(jī)就是這樣一個抽象,它定義了三維空間到二維屏幕的投影方式。
WebGL和Three.js使用的坐標(biāo)系是右手坐標(biāo)系。
var camera = new THREE.OrthographicCamera(-5, 5, 3.75, -3.75, 0.1, 100); //我們把 camera 放在 XYZ 坐標(biāo)為 (50, 50, 50) 的位置上,并且朝向坐標(biāo)原點(diǎn)。 camera.position.set(50, 50, 50); camera.lookAt(new THREE.Vector3(0, 0, 0)); scene.add(camera);
正交投影照相機(jī)(Orthographic Camera)的構(gòu)造函數(shù)是:
THREE.OrthographicCamera(left, right, top, bottom, near, far)
這六個參數(shù)分別代表正交投影照相機(jī)拍攝到的空間的六個面的位置,這六個面圍成一個長方體,我們稱其為視景體(Frustum)。只有在視景體內(nèi)部(下圖中的灰色部分)的物體才可能顯示在屏幕上,而視景體外的物體會在顯示之前被裁減掉。
為了保持照相機(jī)的橫豎比例,需要保證(right - left)與(top - bottom)的比例與Canvas寬度與高度的比例一致。
near與far都是指到照相機(jī)位置在深度平面的位置,而照相機(jī)不應(yīng)該拍攝到其后方的物體,因此這兩個值應(yīng)該均為正值。為了保證場景中的物體不會因?yàn)樘蛱h(yuǎn)而被照相機(jī)忽略,一般near的值設(shè)置得較小,far的值設(shè)置得較大,具體值視場景中物體的位置等決定。
在定義了場景中的物體,設(shè)置好的照相機(jī)之后,渲染器就知道如何渲染出二維的結(jié)果了。這時候,我們只需要調(diào)用渲染器的渲染函數(shù),就能使其渲染一次了。
renderer.render(scene, camera);
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88125.html
摘要:學(xué)習(xí)學(xué)習(xí)筆記介紹是一種繪圖協(xié)議,它把和結(jié)合在一起,通過增加的一個綁定,可以為提供硬件加速渲染。環(huán)境搭建為了以后的學(xué)習(xí)方便,首先是搭建一個萬能框架,所有的開發(fā)都可以在此框架上進(jìn)行。 WebGL學(xué)習(xí)----Three.js學(xué)習(xí)筆記(1) webgl介紹 WebGL是一種3D繪圖協(xié)議,它把JavaScript和OpenGL ES 2.0結(jié)合在一起,通過增加OpenGL ES 2.0的一個Ja...
摘要:自定義頂點(diǎn)建立幾何體與克隆本身已經(jīng)有很多的網(wǎng)格模型,基本已經(jīng)夠我們的使用,但是如果我們還是想自己根據(jù)頂點(diǎn)坐標(biāo)來建立幾何模型的話,也是可以的。并且不僅要更新頂點(diǎn),還要更新線條的連接方式,否則是沒有效果的。 自定義頂點(diǎn)建立幾何體與克隆 Three.js本身已經(jīng)有很多的網(wǎng)格模型,基本已經(jīng)夠我們的使用,但是如果我們還是想自己根據(jù)頂點(diǎn)坐標(biāo)來建立幾何模型的話,Three.js也是可以的。 基本效果...
摘要:對象是所有不同對象的容器,也就是說該對象保存所有物體光源攝像機(jī)以及渲染所需的其他對象。對象又是被稱為場景圖,它不僅僅是一個對象數(shù)組,還包含了整個場景圖樹形結(jié)構(gòu)中的所有節(jié)點(diǎn)每個添加到場景的對象,甚至包括本身都是繼承自一個名為的對象。 THREE.Scene THREE.Scene 對象是所有不同對象的容器,也就是說該對象保存所有物體、光源、攝像機(jī)以及渲染所需的其他對象。 THREE.S...
摘要:構(gòu)造函數(shù)分別是長寬高是對應(yīng)長寬高的分段,在使用線模式進(jìn)行渲染的時候,可以看到效果如下。長寬高分別被截為段,段,段。球體構(gòu)造函數(shù)球體半徑水平方向和垂直方向上分段數(shù)。最小值為,默認(rèn)值為。構(gòu)造函數(shù)形狀數(shù)組可選的參數(shù)對象,可配置參數(shù)。 Geometry api Geometry var geometry = new THREE.Geometry(); 立方體(BoxGeometry) 老版本...
摘要:環(huán)境光的位置對呈現(xiàn)的效果無任何效果環(huán)境光的構(gòu)造函數(shù)只有一個參數(shù)進(jìn)制的顏色值。半球光點(diǎn)光源點(diǎn)光源的光線來自同一點(diǎn),并向外發(fā)射。點(diǎn)光源的構(gòu)造函數(shù)有三個參數(shù),比平行光多了一個距離參數(shù),光會從光源經(jīng)過的距離一路衰減為。 Lightapi 光源的基類。 Light( color, intensity ) color 光源顏色的RGB數(shù)值 intensity 光源強(qiáng)度的數(shù)值。 看到的顏色 使...
閱讀 4727·2021-11-18 13:23
閱讀 905·2021-09-22 15:24
閱讀 1929·2021-09-06 15:00
閱讀 2634·2021-09-03 10:30
閱讀 1289·2021-09-02 15:15
閱讀 2079·2019-08-30 15:54
閱讀 3038·2019-08-30 15:44
閱讀 1460·2019-08-29 15:12