01-Three.js 安裝以及介紹

安裝依賴

  npm install three

搭建本地服務器 Node.js server

為什么要搭建一個服務器呢? 當頁面需要加載外部圖片或者模型文件時,控制臺會提示跨域問題,會導致案例無法正常打開;

  npm install http-server -g

  // 在文件目錄下運行,端口號為8000
  http-server . -p 8000

瀏覽器WebGL兼容性檢查 WebGL.js

  if (!THREE.WEBGL.isWebGLAvailable()) {
    var warning = THREE.WEBGL.getWebGLErrorMessage();
    document.getElementById('container').appendChild(warning);
}

// 瀏覽器控制臺輸入此命令,可以查看three.js版本號
THREE.REVISION

介紹

在Three.js中,要渲染物體到網頁中,我們需要3個組建:場景(scene)、相機(camera)和渲染器(renderer)。有了這三樣東西,才能將物體渲染到網頁中去。

  • 場景(scene): 模型、燈光等
  • 相機(camera): 觀察場景的視角
  • 渲染器(renderer): 場景渲染輸出的目標

代碼示例

/**
 * 創建場景對象Scene
 */
var scene = new THREE.Scene();

/**
 * 創建網格模型
 */
// 創建一個立方體幾何對象Geometry
var geometry = new THREE.BoxGeometry(100, 100, 100); 
 // 材質對象Material
var material = new THREE.MeshLambertMaterial({
    color: 0xff1100
});
// 網格模型對象Mesh
var mesh = new THREE.Mesh(geometry, material); 
// 網格模型添加到場景中
scene.add(mesh); 


/**
 * 光源設置
 */
// 點光源 光照強度
var point = new THREE.PointLight(0xffffff);
point.position.set(100, 200, 300); // 點光源位置
// 點光源添加到場景中
scene.add(point); 
// 環境光
var ambient = new THREE.AmbientLight(0x666666);
scene.add(ambient);

/**
 * 相機設置
 */
// 窗口寬度
var width = window.innerWidth; 
// 窗口高度
var height = window.innerHeight; 
// 窗口寬高比
var k = width / height;
// 三維場景顯示范圍控制系數,系數越大,顯示的范圍越大
var s = 200; 

/**
 * 
 * 創建相機對象, 參數對應如下
 * 
 * left — 攝像機視錐體左側面。
 * right — 攝像機視錐體右側面。
 * top — 攝像機視錐體上側面。
 * bottom — 攝像機視錐體下側面。
 * near — 攝像機視錐體近端面。
 * far — 攝像機視錐體遠端面。
 */
var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
camera.position.set(200, 300, 200); // 設置相機位置
camera.lookAt(scene.position); // 設置相機方向(指向的場景對象)

/**
 * 創建渲染器對象
 */
var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height); //設置渲染區域尺寸
renderer.setClearColor(0xb9d3ff, 1); //設置背景顏色
document.body.appendChild(renderer.domElement); //body元素中插入canvas對象

/**
 * 創建鼠標控件對象
 */
var controls = new THREE.OrbitControls(camera, renderer.domElement);

function animate() {
    requestAnimationFrame(animate);
    // 更新控制器
    controls.update();
    renderer.render(scene, camera);
}

animate()
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容