`

three.js文档翻译-----第一篇 场景scene

 
阅读更多

本人英语水平有限,只限个人兴趣爱好翻译此文档,欢迎各位网友拍砖和指点,本翻译未经雕琢,仅凭感觉弄出第一稿,可以肯定这不会是第一稿,如需了解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 全景图场景切换

    在本项目中,我们主要探讨的是如何利用three.js和photo-sphere-viewer.js库来创建一个全景图场景切换的应用。这个应用旨在提供一种沉浸式的360度视角体验,让用户能够在不同的全景图之间自由切换,同时具备前进和...

    three.js-dev-examples-models.zip

    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-viewer生成720全景图项目源码.zip基于three.js和photo-sphere...

    h5:three.js+photo-sphere-viewer.js 全景场景切换,全景家居

    首先,`three.js`是一个流行的JavaScript 3D库,它为浏览器中的3D图形渲染提供了强大的支持。它允许开发者在网页上创建复杂的3D模型、动画和交互,而无需依赖Flash或其他插件。通过three.js,我们可以构建一个360度...

    three.js+photo-sphere-viewer.js 全景场景切换,全景家居,全景图效果预览

    "three.js"是一个流行的JavaScript库,专门用于在浏览器中进行3D图形渲染,而"photo-sphere-viewer.js"则是一个与three.js结合使用的插件,用于展示全景图像和场景。下面将详细解释这两个技术以及如何在实际项目中...

    Three.js入门指南-中文基础教程

    适合初学者 three.js webgl three.js入门 three.js教程 webgl开发

    Three.js-experiments-pool-master.zip

    本篇文章将深入探讨名为"Three.js-experiments-pool-master.zip"的压缩包内容,它包含了一系列Three.js的实验性项目,旨在帮助我们更好地理解和应用Three.js库进行3D特效制作。 Three.js是基于WebGL的,WebGL是一种...

    three.js开发指南-代码部分

    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.zip,three.js-dev.zipthree.js-dev.zipthree.js-dev.zip,three.js-dev.zip

    three.js-r133.zip

    1. **场景(Scene)**:所有3D对象都包含在一个场景中,场景是3D世界的容器,可以通过`THREE.Scene`类来创建。 2. **相机(Camera)**:相机决定了观察场景的角度和方式,`THREE.PerspectiveCamera`和`THREE....

    three.js-master-R126.zip

    1. **场景(Scene)**:3D世界的容器,所有物体、光源和相机都放置在场景中。 2. **几何体(Geometry)**:定义3D形状,如立方体、球体、平面等。 3. **材质(Material)**:赋予几何体外观,可以设置颜色、纹理、...

    Three.js内部实例-贴花

    Three.js是JavaScript的一个库,专用于创建和展示3D图形,它极大地简化了WebGL编程,使得在网页上构建复杂的3D场景变得易如反掌。 贴花是一种在3D场景中添加二维图像或纹理的技术,可以用于模拟表面损伤、标记或...

    Three.js3D场景编辑器(vue3版本)

    构建的three.js3D场景编辑器。支持场景导入,导出。自定义配置。 导出的文件支持https://www.npmjs.com/package/scene-view。解析器解析渲染。 目前为纯前端单机版。 当前文件为打包后文件,可自己启动服务进行查看...

    three.js前端使用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-PCD模型文件,用于three.js显示pcd文件

    在三维可视化领域,Three.js是一个非常流行的JavaScript库,它允许开发者在Web浏览器中创建和展示复杂的3D模型。本资源是关于使用Three.js处理PCD(Point Cloud Data)模型文件的,这是一种常见的3D点云数据格式。在...

    分享一个three.js 3d demowx-torus3d.zip

    1. **three.js**:three.js是一个基于WebGL的JavaScript库,用于在Web浏览器中创建3D图形。它简化了WebGL的复杂性,让开发者能够轻松地构建交互式的3D应用。在这个项目中,three.js被用来创建和管理3D模型,例如环面...

    Three.js-webgl物联网粮仓3D可视化

    Three.js是一个强大的JavaScript库,专门用于在Web浏览器中创建和展示3D图形。它充分利用WebGL API,使开发者无需深入理解底层复杂的图形编程,就能便捷地构建出引人入胜的3D场景。在这个项目中,Three.js用于构建...

    threejs-inspector, 用于调试 three.js的Chrome devtool扩展.zip

    threejs-inspector, 用于调试 three.js的Chrome devtool扩展 Three.js-检查器three.js 检查器是 Chrome devtool的扩展名。 它允许你在网页中查看 Three.js 场景。 你可以从 Chrome 网上商店安装 Three.js Inspector ...

Global site tag (gtag.js) - Google Analytics