Threes.js入門篇之3 - 場景與相機
Three.js 的場景
THREE.Scene 執行場景樹管理,場景的建立只需要一句話:
- var scene = new THREE.Scene();
場景常用操作包含:
1.scene.add(obj); // 在場景中新增物體
2.scene.remove(obj); // 在場景中移除物體
3.scene.children(); // 獲取場景中所有子物件的列表
4.scene.getChildByName(); // 通過Name獲取場景中某個物件
5.Scene.traverse(function); // 遍歷場景物件執行回撥函式
擴充套件操作包括:
6.scene.fog // 對應兩種型別fog
- a)scene.fog = new THREE.Fog(0xFFFFFF,0.01,100) // Params: 霧的顏色,近端係數,遠端系統
- b)scene.fog = new THREE.FogExp2(0xFFFFFF,0.015) // Params: 霧的顏色,濃度
7.背景圖、屬性原型
- if ( scene.background.isColor ) // 判斷是否為顏色
- …// clear color
- scene.prototype = Object.create( Object3D.prototype ); // 屬性原型
8.自動更新、材質覆蓋
- if ( scene.autoupdate === true )
- scene.updateMatrixWorld(); // 自動更新場景圖
- scene.overrideMaterial= new THREE.MeshLambertMaterial( {color:0xFFFFFF} );
• Three.js 的相機
Three.js 提供了兩種相機模式,透視投影 和 正交投影,這和其他的三維引擎並沒有區別。
> 透視投影:
Perspective Camera 特點在於滿足近大遠小,模擬人眼成像特點,真實感比較強。
呼叫函式:PerspectiveCamera( fov, aspect, near, far )
@fov > Camera frustum vertical field of view 垂直方向張角
@aspect > Camera frustum aspect ratio 寬高比
@near > Camera frustum near plane 近裁剪面
@far > Camera frustum far plane 遠裁剪面
- var camera = new THREE.PerspectiveCamera(50, 16/9, 0.1, 1000);
> 正交投影:
Orthographic Camera,正交投影 是指平行投影成像,主要用在二維地圖上或者鏡面反射等應用上。
呼叫函式:OrthographicCamera( left, right, top, bottom, near, far )
@left > Camera frustum left plane 左平面
@right > Camera frustum right plane 右平面
@top > Camera frustum top plane 上平面
@bottom > Camera frustum bottom plane 下平面
@near > Camera frustum near plane 近裁剪面 - 與上面一致
@far > Camera frustum far plane 遠裁剪面 - 與上面一致
- var camera = new THREE.OrthographicCamera(-8, 8, 4.5, -4.5, 0.1, 1000)
> 相機設定:
相機初始化完成後,需要對相機進行設定,上面建構函式 已經定義了攝像機的內引數,接下來需要明確的是攝像機的姿態和方向。
預設的相機是在原點位置,朝向為Z軸負方向(螢幕內側),上方向為Y軸。
- camera.position.set(5, 0, 10); // Position
- camera.up.set(0, 1, 0); // up方向 - Y軸
- camera.lookAt(new THREE.Vector3(0, 0, 0)); // Target
- scene.add(camera)
Camera包含以下幾個屬性:
matrixWorldInverse - 世界座標矩陣的逆
projectionMatrix - 投影矩陣(成像)
projectionMatrixInverse - 投影矩陣的逆矩陣
實際上,World - View - Projection 矩陣一起構成了三維成像體系,這個會在後面講到。
相關文章
- Threes.js入門篇之7 - 場景光照JS
- Threes.js入門篇之6 - 場景漫遊JS
- Threes.js入門篇之5 - 場景操縱器TrackballJS
- Threes.js入門篇之8 - 材質與紋理JS
- Threes.js入門篇之9 - 全景圖JS
- Threes.js入門篇之2 - Hello WorldJS
- Threes.js入門篇之4 - World View ProjectionJSViewProject
- unity入門—資源匯入與場景建立Unity
- Nginx入門到實戰(2)場景實現篇Nginx
- 用場景去理解函式柯里化(入門篇)函式
- MQMQ的快速入門+應用場景MQ
- python入門與進階篇(八)之Pythonic與Python雜記Python
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- node之tcp篇入門理解TCP
- 效能測試之入門篇
- Android 自定義 View 之入門篇AndroidView
- Flink 入門篇之 寫個WordCount
- WindowsServerVersion1709管理之入門篇WindowsServer
- 一、Ansible基礎之入門篇
- 雜篇-之裸眼3D渲染相機及畫面矯正3D
- 【計算機圖形學】入門Three.js,並搭建你的第一個3D場景計算機JS3D
- D3js之入門JS
- gRPC入門與實操(.NET篇)RPC
- Three.js入門-相機控制器JS
- 深入理解Java SPI之入門篇Java
- 入門設計模式之彙總篇設計模式
- 踩坑指南:入門OpenTenBase之部署篇
- 入門篇-其之七-Java運算子Java
- Flink 入門篇之 在 Linux 上搭建 Flink 的單機環境Linux
- Java反射詳解:入門+使用+原理+應用場景Java反射
- 3. 入門並實踐STL——string篇
- (3) MasaFramework 入門第三篇,使用MasaFrameworkFramework
- Python 3 快速入門 3 —— 模組與類Python
- React入門系列 - 3 state與propsReact
- openresty前端開發入門三之JSON篇REST前端JSON
- openresty前端開發入門四之Redis篇REST前端Redis
- openresty前端開發入門五之Mysql篇REST前端MySql
- Three.js入門篇之1 - WebGL on HTMLJSWebHTML