二、 创建3D场景的一般步骤
2017-12-28 00:00
274 查看
1、创建三大组建
在Three.js中,要渲染物体到网页中,我们需要3个组建:场景(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); //将画布添加到body当中,在页面上显示 |
var scene = new THREE.Scene();
场景是所有物体的容器,如果要显示一个苹果,就需要将苹果对象加入场景中。
2、相机
另一个组建是相机,相机决定了场景中那个角度的景色会显示出来。相机就像人的眼睛一样,人站在不同位置,抬头或者低头都能够看到不同的景色。场景只有一种,但是相机却又很多种。和现实中一样,不同的相机确定了呈相的各个方面。比如有的相机适合人像,有的相机适合风景,专业的摄影师根据实际用途不一样,选择不同的相机。对程序员来说,只要设置不同的相机参数,就能够让相机产生不一样的效果。
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); |
3、渲染器
最后一步就是设置渲染器,渲染器决定了渲染的结果应该画在页面的什么元素上面,并且以怎样的方式来绘制。这里我们定义了一个WebRenderer渲染器,代码如下所示:var renderer = new THREE.WebGLRenderer(); |
renderer.setSize(window.innerWidth, window.innerHeight); |
document.body.appendChild(renderer.domElement); |
4、添加物体到场景中
那现在,我们将一个物体添加到场景中: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); |
CubeGeometry(width, height, depth, segmentsWidth, segmentsHeight, segmentsDepth, materials, sides) |
height:立方体y轴的长度
depth:立方体z轴的深度,也就是长度
想一想大家就明白,以上3个参数就能够确定一个立方体。
5、渲染
渲染应该使用渲染器,结合相机和场景来得到结果画面。实现这个功能的函数是renderer.render(scene, camera);
渲染函数的原型如下:
render( scene, camera, renderTarget, forceClear )
各个参数的意义是:
scene:前面定义的场景
camera:前面定义的相机
renderTarget:渲染的目标,默认是渲染到前面定义的render变量中
forceClear:每次绘制之前都将画布的内容给清除,即使自动清除标志autoClear为false,也会清除。
6、渲染循环
渲染有两种方式:实时渲染和离线渲染 。function render() { |
cube.rotation.x += 0.1; |
cube.rotation.y += 0.1; |
renderer.render(scene, camera); |
requestAnimationFrame(render); |
} |
10、场景,相机,渲染器之间的关系
Three.js中的场景是一个物体的容器,开发者可以将需要的角色放入场景中,例如苹果,葡萄。同时,角色自身也管理着其在场景中的位置。相机的作用就是面对场景,在场景中取一个合适的景,把它拍下来。
渲染器的作用就是将相机拍摄下来的图片,放到浏览器中去显示。他们三者的关系如下图所示:
相关文章推荐
- css3-3d场景创建
- 创建触发器的一般步骤
- java 3D API官方教程:1.4 编写Java3D程序的一般步骤
- C# windows服务:创建Windows服务(Windows Services)的一般步骤
- 使用MyEclipse创建JSP页面的一般步骤
- QT创建一般步骤
- 使用WTL+OGRE编写3D程序(3) - 场景的创建和渲染
- p3d创建仪表的步骤
- 第一章 用three.js创建你的第一个3D场景
- unity 3D学习日记:创建一个小场景并编写简单C#移动脚本
- 3D场景的制作步骤
- 使用PB创建CEPC的一般步骤
- 创建一个普通用户一般步骤
- unity 3D 创建场景——地形
- ObjectARX 学习笔记007:创建模态对话框的一般步骤
- window api创建窗体的一般步骤
- Genesis-3D学习手册——4.创建场景
- Solr笔记四之Solrj创建索引和搜索的一般步骤
- Three-js 创建第一个3D场景
- 创建Qt对话框一般步骤