老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

three.js中文文檔學習之創建場景

什么是Three.js?

創新互聯主要從事成都網站設計、成都網站制作、網頁設計、企業做網站、公司建網站等業務。立足成都服務華安,十余年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:18982081108

如果你正在讀這篇文章,你可能對Three.js有一定的了解,那我們來簡單地介紹下Three.js是什么.
Three.js是一個庫,使得WebGL的3D效果在瀏覽器中運用很容易。而在原始的WebGL中一個簡單的立方體會變成數百Javascript和著色器代碼的行,而一個Three.js只需要一點點代碼.

本節目標是為 three.js 做簡介。我們從使用旋轉立方體來搭建場景開始。如果遇到困難需要幫助,頁面底部有可參考的源碼。

一個場景至少需要的三種類型組件

  • 相機/決定哪些東西將在屏幕上渲染
  • 光源/他們會對材質如何顯示,以及生成陰影時材質如何使用產生影響
  • 物體/他們是在相機透視圖里主要的渲染隊形:方塊、球體等

開始前

在計算機中保存如下 HTML 代碼,并在 js 目錄下包含 three.js,然后在瀏覽器中打開


 
 
 My first three.js app
 
 
 
 
 
 

接下來的代碼都會下載 script 標簽中

創建示例場景

為了利用three.js來進行展示,我們需要三種元素:場景,攝像機,渲染器,以便來渲染攝像機中的場景。

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

讓我們花點時間來解釋發生了什么。我們現在創建了場景,攝像機和渲染器。

在 three.js 中有幾種攝像機。我們暫時用的是 PerspectiveCamera (透視攝像機)

它的第一個屬性是視圖角(FOV),它 是能看見的視圖范圍,其值表示角度大小。

第二個屬性是寬高比。大多數情況你想要使用被高除過之后的寬度,不然會發生像在寬屏電視上放舊電影的情況 —— 圖像看起來被壓扁了。

后面兩個屬性是近景面和遠景面。只會渲染這兩個面之間的區域。目前你不必關心這些,使用這些參數能提高性能。

接下來談談渲染器。這便是神奇之處。除了我們這里用的 WebGLRenderer 外, three.js 還提供一些渲染器用在不支持 WebGL 的老舊瀏覽器上。

除了創建渲染器實例,我們也需要設置應用渲染的尺寸。推薦使用填充整個應用的寬高 —— 本例中是瀏覽器窗口的寬高。對于性能優先的應用,你能使用 setSize 來設置更小的值,比如 window.innerHeight/2, window.innerWidth/2,會渲染一半的尺寸。

如果你想低分辨率地渲染整個尺寸,你可以設置 setSize 的第三個參數 — uodateStyle 為 false ,如果 canvas 元素寬高都為 100%,則會以 1/2 分辨率渲染應用。

再爾,我們需要在 HTML 中添加被渲染的元素。渲染器通過 canvas 來給我們展示場景。

“都很好,但之前說的立方體呢” 讓我們現在添加。

var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );

camera.position.z = 5;

我們需要 BoxGeometry來創建立方體。這個對象包含立方體所有的點(頂點)和填充(面)。我們以后會討論。

除了幾何體外,我們還需要材質為其上色。three.js 提供了一些材質,但我們暫且使用 MeshBasicMaterial。所有材質接受并應用一個包含所有屬性的對象。為簡單起見,我們僅僅提供一個顏色屬性: 綠色 —— 0x00ff00 。和 CSS 和 PS 里的一樣采用十六進制的顏色。

我們需要的第三個要素是 Mesh。 mesh 是一個將材質應用到幾何體上的對象,然后我們能將其放入場景中,并自由移動。

當我們調用 scene.add() ,我們添加的會默認顯示在坐標(0,0,0,)處。這會導致攝像機和立方體內部重疊。為了避免這點,我們簡單地把攝像機往外移一點。

渲染場景

如果你在 HTML 文件中復制了如上代碼,屏幕不會顯示東西。因為我們還沒渲染場景。所以我們需要調用渲染器或者動畫循環。

function animate() {
 requestAnimationFrame( animate );
 renderer.render( scene, camera );
}
animate();

這會創建一個讓渲染器每秒繪制一幀的循環。如果你對網頁游戲編程不了解,你可能會說“為什么不 寫setInterval 函數呢?”事實上,我們可以,但是 requestAnimationFrame 好處更多。最重要的好處是當瀏覽器切換到另一個標簽頁時,requestAnimationFrame 會暫停渲染,因此不會浪費寶貴的處理能力和電池壽命。

讓立方體動起來

如果你插入了我們剛剛創建的代碼,你應該會看見一個綠色的立方體。讓它旋轉起來不至于單調。

在animate 函數中的 renderer.render 上添加如下代碼:

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

它會按幀運行(每秒60幀),并賦予立方體優雅的動畫。基本上,應用運行時,你想移動或改變任何元素,必須通過動畫循環。你當然在此處能調用其他函數,以免animate函數上百行代碼結尾。

結果

恭喜!你現在創建好了第一個 three.js 應用。很簡單,但總得突破。

完整代碼參考如下。琢磨一下并深刻理解其工作機理


 
 My first three.js app
 
 
 
 
 
 

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對創新互聯的支持。


文章題目:three.js中文文檔學習之創建場景
分享地址:http://www.xueling.net.cn/article/iiphic.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲sm另类一区二区三区 | 国产福利片在线观看 | 亚洲av日韩av无码大全 | 欧美精品一产区二产区 | 成人在线色视频 | 午夜免费国产 | 感官之火在线观看 | 超碰一区二区三区 | 免费观看激色视频网站在线观看 | 一本一道av无码中文字幕麻豆 | 国产精品久久亚洲不卡 | 亚洲欧美日本国产专区一区 | 影音先锋中文字幕亚洲资源站 | av2014天堂网 | 国产成人私拍pans大尺度 | 久久综合给合久久97色 | 日日婷婷夜日日天干A片 | 天天操天天操天天操天天 | 99久久www | 中日韩毛片 | 老司机aⅴ在线精品导航 | 亚洲精品无码一区二区卧室 | 国产精品不卡顿 | 1000部精品久久久久久久久 | 91插插插影库永久免费 | 亚洲Av无码专区国产乱码4 | 人人妻人人澡AV天堂香蕉 | 亚洲高清国产拍精品26u | 国产精品久久久久久久久久久丝袜 | 久久亚洲色WWW成人 91porny国产 | 最近中文字幕完整视频高清 | 精品亚洲欧美视频在线观看 | 国产高清在线精品 | 人妻少妇无码专视频在线 | 最近手机中文字幕大全 | 久操视频在线免费观看 | av免费播放网址 | 亚色在线 | 国产中文综合免费 | 日韩欧美在线视频一区 | 亚洲日本欧美天堂在线手机版 |