1.第一章1小節(jié) 運(yùn)行簡(jiǎn)單的例子

以下文章即Learn Threejs 第三版英文翻譯學(xué)習(xí)記錄,可以到正版書店購(gòu)買對(duì)應(yīng)書籍蒜危。

這章內(nèi)容內(nèi)容中,你將學(xué)到睹耐,創(chuàng)建場(chǎng)景辐赞、添加對(duì)象、添加相機(jī)疏橄。常見的對(duì)象有Plane(面)占拍、Cube(立方體)略就、Sphere(球體)、Camera(相機(jī))晃酒、Axes(坐標(biāo)軸表牢,其中X坐標(biāo)軸為紅色,Y坐標(biāo)軸為綠色贝次,Z坐標(biāo)軸為藍(lán)色)崔兴;

下面我將帶你運(yùn)行代碼,查看效果:

? ? //創(chuàng)建場(chǎng)景和攝像機(jī)

? ? // const scene = new THREE.Scene();

? ? // //創(chuàng)建攝像機(jī) *視角范圍 180 (45) *窗口的長(zhǎng)寬比 *攝像機(jī)位置 默認(rèn)0.1? *攝像頭從那里結(jié)束渲染 默認(rèn) 1000

? ? // const camera = new THREE.PerspectiveCamera("75",window.innerWidth/window.innerHeight,"0.1","1000");

? ? // //創(chuàng)建渲染器

? ? // const renderer = new THREE.WebGLRenderer();

? ? // //設(shè)置渲染器場(chǎng)景的大小

? ? // renderer.setSize(window.innerWidth,window.innerHeight);

? ?// renderer.setClearColor(new THREE.Color(0x000000));

以上代碼蛔翅,我們將創(chuàng)建了Scene(場(chǎng)景)敲茄,Camera(相機(jī)),Renderer(渲染器)山析,場(chǎng)景對(duì)象是一個(gè)容器堰燎,用于存放和渲染的所有對(duì)象、以及各種燈光效果笋轨。沒有這個(gè)場(chǎng)景對(duì)象秆剪,Threejs將無法渲染任何對(duì)象。更多相關(guān)場(chǎng)景內(nèi)容在第二節(jié)呈現(xiàn)爵政。這些對(duì)象代碼將創(chuàng)建一個(gè)Threejs程序示例仅讽。如何渲染一個(gè)球體、立方體對(duì)象钾挟,然后將這些對(duì)象加入到場(chǎng)景中洁灵,接下來介紹。

第一部分掺出,我們將創(chuàng)建一個(gè)Camera對(duì)象徽千, 這個(gè)Camera對(duì)象旨在向我們說明,將什么對(duì)象渲染到場(chǎng)景里蛛砰。在第二小節(jié)的例子中罐栈,你可以學(xué)到關(guān)于相機(jī)的一些參數(shù)。

接下來泥畅,我們定義了Render荠诬,這個(gè)Render對(duì)象負(fù)責(zé)將Camera看到的內(nèi)容計(jì)算并渲染出來。

我們通過WebGLRenderer創(chuàng)建出一個(gè)Render位仁,它將會(huì)渲染出樣例中的結(jié)果柑贞。

如果你查看了官網(wǎng)提供的例子,你就會(huì)注意到有很多不同于WebGLRender的renderers提供給我們使用聂抢,有基于畫布的渲染器钧嘶、基于CSS的渲染器(CSS2DRenderer/CSS3DRenderer)、基于SVG的渲染器(SVGRenderer)琳疏,可是即使他們能夠渲染一些簡(jiǎn)單的場(chǎng)景有决,我也不建議你們使用闸拿,開發(fā)人員已經(jīng)不在維護(hù)。(無法應(yīng)用于密集型CPU程序书幕、未能更好的支持材質(zhì)陰影等)

我們給渲染器設(shè)置一個(gè)背景色/渲染器的尺寸,使用window.winnerwidth,這些尺寸的意思是我要加載一個(gè)像瀏覽器尺寸大小的渲染器新荤。

這樣我們就創(chuàng)建出一個(gè)簡(jiǎn)單的Screen、Render台汇、Camera苛骨。可是什么東西都沒有苟呐,接下來將為您介紹如何添加一個(gè)Axes痒芝、Plane:

var axes = new THREE.AxesHelper(20); scene.add(axes);

var planeGeometry = new THREE.PlaneGeometry(60, 20);

var planeMaterial = new THREE.MeshBasicMaterial({ color: 0xAAAAAA ? });

var plane = new THREE.Mesh(planeGeometry, planeMaterial);

plane.rotation.x = -0.5 * Math.PI;

plane.position.set(15, 0, 0);

scene.add(plane);

正如你所見,我們創(chuàng)建了一個(gè)坐標(biāo)系類(傳入的20表示各坐標(biāo)軸的長(zhǎng)度)牵素,使用screen.add方法严衬,我們將axis添加到Scene中去,下一步两波,創(chuàng)建一個(gè)平面瞳步,首先我們定義了這個(gè)plane的尺寸闷哆,這里60是width腰奋。同樣,我們需要告訴這個(gè)plane的外觀抱怔,比如顏色和透明度劣坊,在Threejs中 ,我們定義了一個(gè)Material的對(duì)象,它用來給Plane等設(shè)置顏色或者貼圖屈留。示例中我們創(chuàng)建了一個(gè)簡(jiǎn)單的顏色貼圖局冰,我們使用Plane和Material創(chuàng)建出一個(gè)Mesh對(duì)象,(此處Mesh作者個(gè)人理解Match,component,然后mask類似的一個(gè)概念)灌危,在我們將這個(gè)Plane添加到Scene之前康二,我們還需要給這個(gè)Plane設(shè)置正確的位置,順便將X軸做了90度旋轉(zhuǎn)勇蝙。如果您對(duì)這里的相關(guān)屬性感興趣沫勿,可以查看第二小節(jié)的示例。這個(gè)示例將為您提供各種旋轉(zhuǎn)味混,位置等屬性的介紹〔ⅲ現(xiàn)在我們有了Plane,就可以將Plane添加到Scene中翁锡,就像我們添加Axes一樣的道理蔓挖。

立方體和球體對(duì)象的添加和這個(gè)是相同的道理,但是如果wireframe屬性設(shè)置為true馆衔,我們看到的是一個(gè)線性圖像瘟判,并不是一個(gè)實(shí)體對(duì)象怨绣,讓我們繼續(xù)進(jìn)行下一步,

camera.position.set(-30, 40, 30);?

camera.lookAt(scene.position);

document.getElementById("webgl-output").appendChild(renderer.domElement);?

renderer.render(scene, camera);

以上拷获,我們將所有的對(duì)象都加入到了Scene中梨熙,并且給Plane設(shè)置的位置,randerer也可以將camera的內(nèi)容渲染出來刀诬。在這一小部分代碼中咽扇,我們調(diào)用了camera.position.set方法,使得Camera陕壹,X方向移動(dòng)-30质欲,Y方向移40,Z方向移動(dòng)了30(看到了從上到下的俯視效果) 糠馆,確保我們的camera可以看到我們創(chuàng)建的對(duì)象嘶伟,我們使用camera.lookat方法將相機(jī)的焦點(diǎn)注意到場(chǎng)景的正中央,默認(rèn)是(0又碌,0九昧,0)點(diǎn)位。所有的這些通過div標(biāo)簽元素輸出到頁面上毕匀。

在下一節(jié)的課程中铸鹰,我們將介紹場(chǎng)景燈光、陰影和更多的材料皂岔,還有事件動(dòng)畫蹋笼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市躁垛,隨后出現(xiàn)的幾起案子剖毯,更是在濱河造成了極大的恐慌,老刑警劉巖教馆,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逊谋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡土铺,警方通過查閱死者的電腦和手機(jī)胶滋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舒憾,“玉大人镀钓,你說我怎么就攤上這事《朴兀” “怎么了丁溅?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)探遵。 經(jīng)常有香客問我窟赏,道長(zhǎng)妓柜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任涯穷,我火速辦了婚禮棍掐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拷况。我一直安慰自己作煌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布赚瘦。 她就那樣靜靜地躺著粟誓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪起意。 梳的紋絲不亂的頭發(fā)上鹰服,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音揽咕,去河邊找鬼悲酷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亲善,可吹牛的內(nèi)容都是我干的设易。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逗爹,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼亡嫌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掘而,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎于购,沒想到半個(gè)月后袍睡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肋僧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年斑胜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫌吠。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡止潘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辫诅,到底是詐尸還是另有隱情凭戴,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布炕矮,位于F島的核電站么夫,受9級(jí)特大地震影響者冤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜档痪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一涉枫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腐螟,春花似錦愿汰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锯仪,卻和暖如春泵督,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庶喜。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工小腊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人久窟。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓秩冈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親斥扛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子入问,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容