Threes.js入門篇之7 - 場景光照
Three.js 主要支援四種光源模式,分別是 環境光、點光源、平行光 和 聚光燈。另外有半球光源、面光源等,本節暫不涉及。
一. 環境光
Ambient Light:所有物件的整體光照模型,控制整個場景的明暗。
- var ambientLight = new THREE.AmbientLight(ambiColor); // 環境光顏色
- scene.add(ambientLight);
二. 點光源
Point Light:所有方向發射光線,是應用最多的光源。
- var pointColor = "#ccffcc";
- var pointLight = new THREE.PointLight(pointColor);
- pointLight.distance = 100; // 距離,決定了光線可以照射多遠
- pointLight.intensity = 1; // 強度
- scene.add(pointLight);
通常點光源不用來做陰影,主要是因為投射方向用陰影圖來描述比較困難,我們看到的陰影主要是 Spot Light 來實現。
三. 平行光
Directional Light:又稱方向光,通常用來模擬太陽光(近似平行光源)。
- var pointColor = "#FFFFFF";
- var directionalLight = new THREE.DirectionalLight(pointColor);
- directionalLight.position.set(-40, 60, -10);
- directionalLight.castShadow = true;
- directionalLight.shadowCameraNear = 2;
- directionalLight.shadowCameraFar = 200;
- directionalLight.shadowCameraLeft = -50;
- directionalLight.shadowCameraRight = 50;
- directionalLight.shadowCameraTop = 50;
- directionalLight.shadowCameraBottom = -50;
- directionalLight.distance = 0;
- directionalLight.intensity = 0.5; // 光強度,預設為1
- directionalLight.shadowMapHeight = 1024; // 陰影圖尺寸
- directionalLight.shadowMapWidth = 1024;
四. 聚光燈
Spot Light:聚光燈與手電筒類似,與相機視角很接近,常用作陰影圖的產生。
- var spotLight = new THREE.SpotLight(pointColor);
- spotLight.position.set(-40, 60, -10);
- spotLight.castShadow = true; // 產生陰影
- spotLight.shadowCameraNear = 2; // 從距離光源的哪一點開始生成陰影
- spotLight.shadowCameraFar = 200; // 從距離光源哪一點開始停止生成陰影
- spotLight.shadowCameraFov = 30; // 形成陰影的視場
- spotLight.target = plane; // 光照照向地面
- spotLight.distance = 0; // 距離target的距離
- spotLight.angle = 0.4; // 光源照射出來的光柱有多寬
相關文章
- Threes.js入門篇之6 - 場景漫遊JS
- Threes.js入門篇之3 - 場景與相機JS
- Threes.js入門篇之5 - 場景操縱器TrackballJS
- Threes.js入門篇之9 - 全景圖JS
- Threes.js入門篇之2 - Hello WorldJS
- Threes.js入門篇之4 - World View ProjectionJSViewProject
- Threes.js入門篇之8 - 材質與紋理JS
- Nginx入門到實戰(2)場景實現篇Nginx
- 用場景去理解函式柯里化(入門篇)函式
- EF7建立模型入門篇模型
- unity入門—資源匯入與場景建立Unity
- MQMQ的快速入門+應用場景MQ
- node之tcp篇入門理解TCP
- 效能測試之入門篇
- Elasticsearch 7.x 之文件、索引和 REST API 【基礎入門篇】Elasticsearch索引RESTAPI
- Android 自定義 View 之入門篇AndroidView
- Flink 入門篇之 寫個WordCount
- WindowsServerVersion1709管理之入門篇WindowsServer
- 一、Ansible基礎之入門篇
- 深入理解Java SPI之入門篇Java
- 入門設計模式之彙總篇設計模式
- 踩坑指南:入門OpenTenBase之部署篇
- 入門篇-其之七-Java運算子Java
- Java反射詳解:入門+使用+原理+應用場景Java反射
- openresty前端開發入門三之JSON篇REST前端JSON
- openresty前端開發入門四之Redis篇REST前端Redis
- openresty前端開發入門五之Mysql篇REST前端MySql
- Three.js入門篇之1 - WebGL on HTMLJSWebHTML
- 踩坑指南:入門OpenTenBase之監控篇
- WebSocket系列之基礎知識入門篇Web
- js入門(7)JS
- llvm入門篇LVM
- Redis 入門篇Redis
- Spark入門篇Spark
- 7-2 算術入門之加減乘除
- 爬蟲不得不學之 JavaScript 入門篇爬蟲JavaScript
- 快速入門Redis呼叫Lua指令碼及使用場景介紹Redis指令碼
- 超圖GIS入門iserver搭建,前端呼叫iserver載入三維場景demoServer前端