Three.js前端三维图形开发案例|自定义光源绘造立方体

2周前 (02-13 03:05)阅读1回复0
路人甲
路人甲
  • 管理员
  • 注册排名2
  • 经验值131755
  • 级别管理员
  • 主题26351
  • 回复0
楼主

WebGL是一种三维绘图原则,该绘图原则容许把Java和OpenGL ES 2.0连系在一路,如许Web开发人员就能够借助硬件在阅读器中更顺畅地展现三维场景和模子,以创建复杂的导航和数据视觉化。Three.js是一款基于原生WebGL的三维引擎框架(库),该框架在WebGL的API根底上以简单、曲看的体例封拆了三维图形的常用对象,因而大大削减了法式员在Web前端开发三维图形利用的工做量,Three.js还利用了良多图形引擎的高级身手,极大地进步了利用性能。

跟着WebGL手艺和5G手艺的继续妥帖,各类产物的在线三维展现将会变得越来越普及,关于如今比力火爆的VR产物、AR产物,对WebGL手艺的妥帖,也是一个好动静。VR与Web3D手艺的连系天然就衍生出一个新的概念WebVR,也就是基于Web实现的VR内容,即通过三维拍照机对室内空间停止拍摄,即可在Web端以全景图的体例预览室内效果。Three.js对此也停止了封拆。

本文下面那个实例演示了在场景中自定义光源绘造立方体。

01

实例功用

此实例次要通过利用THREE.PointLight、THREE.Scene、THREE.OrthographicCamera、THREE.WebGLRenderer、THREE.BoxGeometry、THREE.MeshLambertMaterial、THREE.Mesh等,实如今场景中绘造自定义光源照射的立方体。当阅读器展现页面时,将在场景中绘造自定义光源照射的红色立方体,如图1所示。

展开全文

■ 图1

02

实现代码

!DOCTYPE html html head metacharset= "UTF-8"

src= "ThreeJS/three.js" /

src= "ThreeJS/jquery.js" /

/ head

body centerid= "myContainer" / center

varmyRenderer = newTHREE.WebGLRenderer; //创建衬着器

varmyWidth = 480; //设置窗口宽度

varmyHeight = 320; //设置窗口高度

myRenderer.setSize(myWidth, myHeight); //设置衬着区域

myRenderer.setClearColor( "white", 1); //设置清空颜色

$( "#myContainer").append(myRenderer.domElement);

varmyScene = newTHREE.Scene; //创建场景

varmyLight = newTHREE.PointLight( "red"); //创建红色光源

myLight.position.set( 400, 800, 300); //设置光源位置

myScene.add(myLight); //在场景中添加光源

vark = myWidth / myHeight; //计算窗口宽高比

vars = 120; //三维场景展现范畴掌握系数

varmyCamera = newTHREE.OrthographicCamera(-s * k,

s * k, s, -s, 1, 1000); //创建相机

myCamera.position.set( 400, 300, 200); //设置相机位置

myCamera.lookAt(myScene.position);

varmyGeometry = newTHREE.BoxGeometry( 100, 100, 100); //创成立方体

varmyMaterial =

newTHREE.MeshLambertMaterial({ color: 0xFFBF00}); //创建材量

varmyMesh = newTHREE.Mesh(myGeometry, myMaterial); //创建网格

myScene.add(myMesh); //在场景中添加网格(立方体)

myRenderer.render(myScene, myCamera); //衬着立方体

/ / body / html

03

代码阐明

在上面那段代码中,myGeometry=new THREE.BoxGeometry(100,100,100)语句用于创建一个立方体(几何体),三个“100”别离代表立方体的长、宽、高。myLight=new THREE.PointLight ("red")语句用于创建一个红色的点光源,red 也能够利用颜色代码取代,如myLight=new THREE.PointLight(0xff0000)。myLight.position.set(400,800,300)语句用于设置光源的位置,myScene.add(myLight)用于将光源添加参加景中。一般情状下,利用Three.js绘造一个三维图形需要下面那些步调(或元素)。

(1) 创建衬着器,如new THREE.WebGLRenderer;

(2) 指定衬着器在何处闪现,如$("#myContainer").append(myRenderer.domElement);

(3) 创建场景,如new THREE.Scene;

(4) 创建相机,如new THREE.OrthographicCamera(-s*k,s*k,s,-s,1,1000);

(5) 在衬着器中指定场景和相机,如myRenderer.render(myScene,myCamera);

(6) 创建光源,如new THREE.PointLight("red");

(7) 在场景中添加光源,如myScene.add(myLight);

(8) 创建几何体,如new THREE.BoxGeometry(100,100,100);

(9) 创建材量,如new THREE.MeshLambertMaterial({color:0xffbf00});

(10) 根据几何体和材量创建网格,如new THREE.Mesh(myGeometry,myMaterial);

(11) 在场景中添加网格,如myScene.add(myMesh);

(12) 起头衬着,如myRenderer.render(myScene,myCamera)。

在Web前端中,利用Three.js开发三维图形利用需要添加three.js文件(库),假设在利用中利用了jQuery代码,则还应添加jquery.js文件(库)。本系列所有Three.js的源代码如无特殊阐明,均利用了上述两个文件,因而其他实例的纸量文字阐明不再录进那些内容,只供给在body标签中的源代码。

04

填补阐明

本系列所有Three.js代码(版本号r119)在IntelliJ IDEA情况编写完成,在最新版的Firefox阅读器或Google Chrome阅读器测试胜利。因而定见读者在上述情况或前提下利用源代码。所有源代码不需要下载Three.js的其他文件,在利用时连结收集通顺即可。此外需要重视:Three.js版本更新较快,因而在开发利用本书的源代码时特殊需要重视版本问题。

05

源代码下载

“Three.js代码001” 下载链接为:

06

参考册本

《Three.js前端三维图形开发案例集锦》

ISBN:978-7-302-58956-3

罗帅 罗斌 编著

订价:128.00元

扫码优惠购书

0
回帖

Three.js前端三维图形开发案例|自定义光源绘造立方体 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息