本人英语水平有限,只限个人兴趣爱好翻译此文档,欢迎各位网友拍砖和指点,本翻译未经雕琢,仅凭感觉弄出第一稿,可以肯定这不会是第一稿,如需了解three.js的HTML5 3D类库的资料文档,大家可以到git去下载,地址是https://github.com/mrdoob/three.js
1.创建一个场景(scene)
本节的目的是为了给Three.js简要介绍。我们将建一个旋转立方体的场景。如果你被还不明白,我们将提供了一个的例子以供你参考;
Three.js是什么?
如果你正在读这篇文章,估计你之前对Three.js有一些了解还有它能帮助你做些什么,但还是让我们简单介绍一下它。
Three.js是一个库,使得WebGL-3D在浏览器中展示非常容易。举个例子,我们使用原生态的WebGL语法来描述一个立方体,我们需要写几百行Javascript和着色器代码,但是如果用
three.js的话,我们只需要很小部分就可以达到这种效果,因为这个类库已经帮你封装好了函数。
(1)开始之前
在开始学习之前,你可以把下面这段代码保存起来并且运行它
************************
<html> <head> <title>My first Three.js app</title> <style>canvas { width: 100%; height: 100% }</style> </head> <body> <script src="https://rawgithub.com/mrdoob/three.js/master/build/three.js"></script> <script> // Our Javascript will go here. </script> </body> </html>
************************
我们添加的代码都放在script标签里面
(2)建立一个场景(scene)
为了能够使用tree.js来展示效果,我们需要做三件事情:创建场景(scene),视角(camera),渲染器(renderer);
********************************
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 );
********************************
让我们来看这段代码,我们已经建立场景,视角,渲染器,在我们的类库中有几种不同的视角cameras,我们将在后面章节里面讲解;现在我们就以其中的一个类
perspectiveCamera作为我们的camera视角,它的第一个属性是视角,第二个是宽高比;很多时候我们都使用元素的宽度除以高度;最后的两个属性是near和far对页面裁剪的属
性,如果一个对象远离视角比这个far值还大,或者比near值还小就可能不会被显示,不过你不用担心,你也可以使用其他值从而获得更好的展示效果;
下一步是展示,这是奇迹发生的地方,此外还有一点要说的是我们除了创建渲染器实例,还要设置我们应用程序的大小,我们使用浏览器的宽和高来填充我们游戏屏幕的宽和高,
但是对于性能要求紧张的游戏,你可能需要设置小一点的值,比如1/2的高度和宽度,还有减少一部分分辨率,但这并不表示你的游戏只能填满窗口的一半,只是看起来模糊了一点
;
接下来我们要在HTML里面展示我们的元素,<canvas>元素将通过场景进行渲染;
好了,我们一切都准备好了,那么我们的立方体在哪里呢?好,现在让我们把他给加上去
***************************
var geometry = new THREE.CubeGeometry(1,1,1); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5;
*************************************
为了建立一个立体型我们需要一个cubeGeometry 这个对象包含所有点(vertices)和面(fill), 我们将在后面章节中更详细描述;
除了几何图形我们还需要材质颜色,three.js为我们配备几种材质,但我们这里使用MeshBasicMaterial ,所有的材质都
应用到一个对象的属性,为了使事情变得简单,我们只用到颜色的属性0x00ff00 它表示绿色,同样的方式我们也在css和photoshop里面使用。
第三件事我们需要网格Mesh 一个网格对象是一个场景包含着材质的几何图形并且能够进行移动;
默认情况下,我们会调用scene.add()方法,我们添加的东西将被添加到coordinates(0,0,0)坐标上去,这可能会使相机camera和立方体相互覆盖,为了避免
这种情况发生,我们需要移动我们camera视角;
(3)渲染场景
如果你拷贝之前的代码,你看不到任何效果,这是因为我们没有渲染任何东西,为此,我们需要调用render循环渲染
******************
function render() { requestAnimationFrame(render); renderer.render(scene, camera); } render();
*******************
这将创建一个循环来渲染场景(每分钟六十次),如果你是第一次写浏览端网页游戏的话,你可能会问为什么不用setInterval函数呢
这函数也可以实现,但是使用requestAnimationFrame 有很多好处;但是最重要的是,它会停止资源占用,当用户导航到另一个浏览器“选项卡的时候,因此不会浪费CUP处理能力和相关资源。
立方体动画
如果你将上面代码插入之前的HTML文件,你可以看到一个绿色盒子,现在我们使立方体运转起来;
在render函数的render调用添加以下代码
******************
cube.rotation.x += 0.1; cube.rotation.y += 0.1;
******************
他将运转每帧一分钟六十次,这就产生一个漂亮的旋转立方体动画;通常上来说,你都需要通过render渲染循环调用来实现游戏和应用程序的
运转动作,比如改变移动;当然你也可以调用其他函数。
运行结果
恭喜你,你可以完成你第一个trhee.js的应用程序,非常简单,你可以运行在任何地方,全部完整代码都在下面,运行它并且了解他的工作
原理;
*******************************
<html> <head> <title>My first Three.js app</title> <style>canvas { width: 100%; height: 100% }</style> </head> <body> <script src="three.min.js"></script> <script> 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); var geometry = new THREE.CubeGeometry(1,1,1); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var cube = new THREE.Mesh(geometry, material); scene.add(cube); camera.position.z = 5; var render = function () { requestAnimationFrame(render); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); </script> </body> </html>
********************************
相关推荐
在本项目中,我们主要探讨的是如何利用three.js和photo-sphere-viewer.js库来创建一个全景图场景切换的应用。这个应用旨在提供一种沉浸式的360度视角体验,让用户能够在不同的全景图之间自由切换,同时具备前进和...
1. 场景构建:创建一个Three.js应用,首先需要初始化一个Scene对象,然后添加相机、光源和模型到场景中。 2. 相机设置:Camera是观察3D世界的窗口,Three.js提供透视相机(PerspectiveCamera)和正交相机...
基于three.js和photo-sphere-viewer生成720全景图项目源码.zip基于three.js和photo-sphere-viewer生成720全景图项目源码.zip基于three.js和photo-sphere-viewer生成720全景图项目源码.zip基于three.js和photo-sphere...
首先,`three.js`是一个流行的JavaScript 3D库,它为浏览器中的3D图形渲染提供了强大的支持。它允许开发者在网页上创建复杂的3D模型、动画和交互,而无需依赖Flash或其他插件。通过three.js,我们可以构建一个360度...
"three.js"是一个流行的JavaScript库,专门用于在浏览器中进行3D图形渲染,而"photo-sphere-viewer.js"则是一个与three.js结合使用的插件,用于展示全景图像和场景。下面将详细解释这两个技术以及如何在实际项目中...
适合初学者 three.js webgl three.js入门 three.js教程 webgl开发
本篇文章将深入探讨名为"Three.js-experiments-pool-master.zip"的压缩包内容,它包含了一系列Three.js的实验性项目,旨在帮助我们更好地理解和应用Three.js库进行3D特效制作。 Three.js是基于WebGL的,WebGL是一种...
1. **场景(Scene)**:所有3D对象都包含在一个场景中,场景是3D世界的容器,可以通过`THREE.Scene`类来创建。 2. **相机(Camera)**:相机决定了观察场景的角度和方式,`THREE.PerspectiveCamera`和`THREE....
three.js是JavaScript的一个框架,它为WebGL提供了一个高级接口,允许在浏览器中创建复杂的3D场景。这份资源包含了多个章节的代码实例,覆盖了从基础到进阶的多个主题,对于学习和掌握three.js有着极高的价值。 ...
three.js-dev.zip,three.js-dev.zip,three.js-dev.zip,three.js-dev.zip,three.js-dev.zip,three.js-dev.zip,three.js-dev.zipthree.js-dev.zipthree.js-dev.zip,three.js-dev.zip
Three.js,作为WebGL库的领头羊,为JavaScript开发者提供了一种简单而强大的方式,用于在浏览器中创建三维图形和交互式体验。本次我们将深入剖析Three.js的r141版本,揭示其核心概念、关键功能和应用场景。 一、...
1. **场景(Scene)**:3D世界的容器,所有物体、光源和相机都放置在场景中。 2. **几何体(Geometry)**:定义3D形状,如立方体、球体、平面等。 3. **材质(Material)**:赋予几何体外观,可以设置颜色、纹理、...
构建的three.js3D场景编辑器。支持场景导入,导出。自定义配置。 导出的文件支持https://www.npmjs.com/package/scene-view。解析器解析渲染。 目前为纯前端单机版。 当前文件为打包后文件,可自己启动服务进行查看...
Three.js是JavaScript的一个库,专用于创建和展示3D图形,它极大地简化了WebGL编程,使得在网页上构建复杂的3D场景变得易如反掌。 贴花是一种在3D场景中添加二维图像或纹理的技术,可以用于模拟表面损伤、标记或...
import './three.js-master/build/three.js' import './three.js-master/examples/js/loaders/OBJLoader.js' import './three.js-master/examples/js/loaders/MTLLoader.js' import './three.js-master/examples/js/...
【标题】"three.js-VR展厅.zip"是一个包含使用JavaScript库three.js创建的虚拟现实(VR)展览厅的资源包。这个项目展示了如何利用WebGL技术构建沉浸式3D环境,让用户通过浏览器体验互动式的虚拟展示空间。 【描述】在...
Three.js是一个强大的JavaScript库,专门用于在Web浏览器中创建和展示3D图形。它充分利用WebGL API,使开发者无需深入理解底层复杂的图形编程,就能便捷地构建出引人入胜的3D场景。在这个项目中,Three.js用于构建...
在三维可视化领域,Three.js是一个非常流行的JavaScript库,它允许开发者在Web浏览器中创建和展示复杂的3D模型。本资源是关于使用Three.js处理PCD(Point Cloud Data)模型文件的,这是一种常见的3D点云数据格式。在...
AR.js是一个基于Web的AR解决方案,它结合了流行的JavaScript 3D库three.js,使得开发者可以在网页上创建AR应用。aframe则是一个用于构建虚拟现实(VR)和增强现实(AR)应用的开源框架,它基于WebGL,并且简化了与...