您的位置:首页 > Web前端 > JavaScript

ThreeJs:二、简单立方体

2017-11-08 16:42 375 查看

前言

在第一节中,我们介绍了创建一个三维对象所需要的基本要素。下面我们就要开始尝试做一个旋转的立方体了。

准备工作

引入three.js的库文件



创建场景(Scene)

创建一个场景,并且获取浏览器屏幕的宽高。



创建照相机(Camera)

这里创建的是一个远景相机(PerspectiveCamera),为什么选择远景相机进行投影呢?,因为远景投影也称之为透视投影。这个是我们人眼观察世界的模式。

构造器介绍:
PerspectiveCamera( fov, aspect, near, far )
fov - 从上往下的观察角度
aspect - 宽高比
near - 相机近裁剪面
far  - 相机远裁剪面




设置物理材质

物理材质相当于物体表面的颜色,花纹等特征。

基础物体材料(MeshBasicMaterial):一个以简单着色(平面或线框)方式来绘制几何形状的材料。

图示:





创建物体(Mesh)



构造器介绍:
Mesh( geometry, material )
geometry - 一个几何模型的实例。
material - 一个材料的实例,用来定义对象的外观。




创建渲染器(Render)

方法介绍:
setSize
调整输出canvas尺寸(宽度,高度),要考虑设备像素比,并且设置视口(viewport)以匹配该尺寸。
render ( scene, camera, renderTarget, forceClear )
使用相机渲染一个场景。




进行渲染





效果图



代码预览:

/* eslint-disable */
(function() {
// 创建场景
var scene = new THREE.Scene();

var width = window.innerWidth;
var height = window.innerHeight;
// 相机
var camera = new THREE.PerspectiveCamera(40, 800/ 600, 1, 1000);
camera.position.set(200,200,200);
camera.lookAt(scene.position);
// 材质
var geometry = new THREE.CubeGeometry(100,100,100);
var material = new THREE.MeshBasicMaterial({color: 0xfff00a});

// 物体
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 灯光
var light = new THREE.PointLight({color:0xf00fff});
light.position.set(300,400,200);
scene.add(light);
// 渲染器
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800, 600);
document.body.appendChild(renderer.domElement);

renderer.render(scene, camera);
// 动画旋转
function render() {
requestAnimationFrame(render);
cube.rotation.x += 0.1;
cube.rotation.y += 0.1;
renderer.render(scene, camera);
}
// render();
})();


资源网站

threejs源码地址:https://github.com/mrdoob/three.js

threejs API文档:https://hypnosnova.github.io/

threejs中文教程:http://techbrood.com/threejs/docs/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息