Three.js 中文手册-创建场景
2016-09-10 15:19
627 查看
Three.js 中文手册
介绍
创建一个场景
这个章节的目的是大概介绍下Three.js,我们从一个含有旋转的立方体场景开始,在页面的底部有示例代码可供参考。
安装准备
你需要在某一处运行Three.js,复制以下代码到一个HTML文件中然后用浏览器打开.
<!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>My first Three.js app</title> <style> body { margin: 0; } canvas { width: 100%; height: 100% } </style> </head> <body> <script src="js/three.js"></script> <script> // Our Javascript will go here. </script> </body> </html>
创建场景
如果想通过Three.js显示3D动画,我们必须三样东西:一个场景、一个相机,和一个我们渲染相机和场景的渲染器。
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 );
我们先来解释下这些代码的含义。我们首先设置了一个场景,我们的相机和渲染器。在Three.js里面包含不同的相机,目前我们暂且先用一个透视相机(PerspectiveCamera)。相机的第一个属性是视野范围(度数),第二个参数是视野纵横比(aspect ratio)。我们经常使用页面元素的宽度和高度的比值作为纵横比,否则画面会感觉被压扁,后面的两个参数代表可以看到最近和最远的距离。
接下来就是神奇的渲染器。除了创建渲染器实例,我们还要设置渲染器的大小,如果你渲染的图像分辨率小于渲染器的大小,那么你可以使用 setSize(the third arugment). For example, setSize(window.innerWidth/2, window.innerHeight/2, false),这个方法的第三个参数代表是否(updateStyle)
那么说好的立方体呢,下面就添加它.
var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5;
我们需要一个BoxGeometry来创建一个立方体,这是一个包含了所有顶点和面的立方体,后面我们回去解释。另外对于这个几何体,我们需要材质去装饰它,Three.js里有一些材质,目前我们使用MeshBasicMaterial 。所有材质都有相对于的属性,简单起见,我们仅仅应用了一个颜色为绿(0x00ff00)的属性。
第三件事是我们需要一个网格(Mesh),网格是一个可以容纳带有材质的几何体的对象,可以被插入到场景当中去,并且可以自由走动。
默认情况下,当我们使用scene.add()这个方法时,网格会被添加到坐标(0,0,0)上,这将导致相机和立方体是彼此内部。为了避免这一点,我们只是简单地将相机移动一点。
渲染场景
如果你复制上面的html代码到浏览器运行,你看不到任何东西,那是因为你还没有真正开始渲染,为此,我们需要运行一个渲染循环如下。
function render() { requestAnimationFrame( render ); renderer.render( scene, camera ); } render();
让立方体动起来
让我们做一点小小的改动可以让立方体动起来,代码如下:
cube.rotation.x += 0.1; cube.rotation.y += 0.1;
这两行代码一秒钟会运行60次,那么就会出现立方体旋转的效果。
结论
恭喜,你已经完成了第一个Three.js应用程序。完整代码如下:
<html>
<head>
<title>My first Three.js app</title>
<style>
body { margin: 0; }
canvas { width: 100%; height: 100% }
</style>
</head>
<body>
<script src="js/three.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.BoxGeometry( 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中文文档学习之创建场景
- 【three.js】创建一个场景
- -Three.js开发指南---用three.js创建你的第一个三维场景(第一章)
- Three-js 创建第一个3D场景
- 49 Three.js使用THREE.TextGeometry创建三维文本解决中文乱码的问题
- three.js学习点滴(1) — 创建场景
- Three.js创建一个场景(Creating a scene)
- 【three.js练习程序】创建简单物理场景
- three.js第二篇【场景创建】
- Three.js / DOC (一) 创建一个场景
- 第一章 用three.js创建你的第一个3D场景
- Three.JS提升学习1:创建场景并渲染三维对象
- js prototype中文手册
- prototype.js教程及prototype中文手册
- Express.js 中文入门指引手册
- Express.js 中文入门指引手册
- Express.js 中文入门指引手册
- Express.js 中文入门指引手册
- THREE.JS入门教程(4)创建粒子系统
- Express.js 中文入门指引手册