初始项目前,先引入three.js,引入方式请看上一篇文章CSDNhttps://mp.csdn.net/mp_blog/creation/editor/134052424
引入three.js完成,那就正式开启three.js之旅吧!
1.初始化场景
var scene = new THREE.Scene();
2.创建一个模型
var geometry = new THREE.BoxGeometry(100, 100, 100); //创建一个立方体几何对象Geometry
3.添加材质对象Material
var material = new THREE.MeshLambertMaterial({
color: 0x00ff00,
});
4.添加网格模型对象Mesh
var mesh = new THREE.Mesh(geometry, material);
5.网格模型添加到场景中
scene.add(mesh); //网格模型添加到场景中
【注意:光源的设置需要在渲染之前!】
6.点光源
var point = new THREE.PointLight(0x444444); //创建了一个点光源对象
point.position.set(400, 200, 300); //点光源位置
scene.add(point);//点光源添加到场景中
7.环境光
var ambient = new THREE.AmbientLight(0x444444);
scene.add(ambient);//环境光添加到场景中
8.初始化相机
var width = window.innerWidth; //窗口宽度
var height = window.innerHeight; //窗口高度
var k = width / height; //窗口宽高比
var s = 150;//类似于相机的缩放距离
//创建相机对象
var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
camera.position.set(200, 300, 200); //设置相机位置
camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
9.初始化渲染器
var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height); //设置渲染区域尺寸
renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
document.body.appendChild(renderer.domElement); //body元素中插入canvas对象
10.执行渲染器
renderer.render(scene, camera);
按照以上步骤,实现了这样一个立体的四方体:
案例源码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>1.初始化</title>
<style>
body {
margin: 0;
overflow: hidden;
/* //取消滚动条 */
}
</style>
<!-- //引入three.js -->
<script src="http://www.yanhuangxueyuan.com/threejs/build/three.min.js"></script>
</head>
<body>
<script>
//【1.初始化场景】
var scene = new THREE.Scene();
//【2.创建一个模型】
var geometry = new THREE.BoxGeometry(100, 100, 100); //创建一个立方体几何对象Geometry
// 列如:
//(1)长方体 参数:长,宽,高
// var geometry = new THREE.BoxGeometry(100, 100, 100);
//(2)球体 参数:半径60 经纬度细分数40,40
// var geometry = new THREE.SphereGeometry(60, 40, 40);
//(3) 圆柱 参数:圆柱面顶部、底部直径50,50 高度100 圆周分段数
// var geometry = new THREE.CylinderGeometry(50, 50, 100, 25);
//(4)正八面体
// var geometry = new THREE.OctahedronGeometry(50);
//(5)正十二面体
// var geometry = new THREE.DodecahedronGeometry(50);
//(6) 正二十面体
// var geometry = new THREE.IcosahedronGeometry(50);
//【3.材质对象Material】
var material = new THREE.MeshLambertMaterial({
color: 0x00ff00,
});
// 【4.网格模型对象Mesh】
var mesh = new THREE.Mesh(geometry, material);
// 【5.网格模型添加到场景中】
scene.add(mesh); //网格模型添加到场景中
// 【注意:光源的设置需要在渲染之前!】
// 【6.点光源】
var point = new THREE.PointLight(0x444444); //创建了一个点光源对象
point.position.set(400, 200, 300); //点光源位置
//【6.点光源添加到场景中】
scene.add(point);
// 【7.环境光】
var ambient = new THREE.AmbientLight(0x444444);
scene.add(ambient);
// 【8.初始化相机】
var width = window.innerWidth; //窗口宽度
var height = window.innerHeight; //窗口高度
var k = width / height; //窗口宽高比
var s = 150;
//创建相机对象
var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
camera.position.set(200, 300, 200); //设置相机位置
camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
//【9.初始化渲染器】
var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height); //设置渲染区域尺寸
renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
document.body.appendChild(renderer.domElement); //body元素中插入canvas对象
//执行渲染器
renderer.render(scene, camera);
</script>
</body>
</html>
如果直接看上面的代码不太理解,第一次接触会比较陌生,可以尝试更改代码的参数看看有什么效果,代码的功能都有注释, 看着注释也能大概猜出一个参数的含义。通过修改代码,同时刷新浏览器查看效果形成一个互动来提高自己学习的驱动力。