第一天:最基础建模知识点
先上代码(转自大佬博客):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
margin: 0;
overflow: hidden;//隐藏body窗口区域滚动条
}
</style>
<!--引入three.js三维引擎-->
<script src="./three.min.js"></script>
</head>
<body>
<script>
/**
* 创建场景对象
*/
var scene=new THREE.Scene();
/**
* 创建网格模型
*/
var box=new THREE.BoxGeometry(50,50,50);//创建一个立方体几何对象
var material=new THREE.MeshLambertMaterial({color:0xff3040});//材质对象
var mesh=new THREE.Mesh(box,material);//网格模型对象
scene.add(mesh);//网格模型添加到场景中
/**
* 光源设置
*/
//点光源
var point=new THREE.PointLight(0xffffff);
point.position.set(100,200,300);//点光源位置
scene.add(point);//点光源添加到场景中
//环境光
var ambient=new THREE.AmbientLight(0x444444);
scene.add(ambient);
/**
* 相机设置
*/
var width = window.innerWidth;//窗口宽度
var height = window.innerHeight;//窗口高度
var k = width/height;//窗口宽高比
var s = 100;//三维场景缩放系数
//创建相机对象
var camera=new THREE.OrthographicCamera(-s*k,s*k, s,-s,1,1000);
camera.position.set(200,300,200);//设置相机位置
camera.lookAt(scene.position);//设置相机方向(指向的场景对象)
/**
* 创建渲染器对象
*/
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>
看一下效果图:
这就是一个最最基础的建模,当然这个正方体也可以换成球形等..
解析一下代码(菜鸡理解):
首先引入three.js,
链接是:www.yanhuangxueyuan.com/threejs/bui…
基础的三步骤:
1.创建场景对象:
①网格模型立方体 ②光源(从哪个地方光照过来)
2.相机
3.创建渲染器渲染操作
1.首先第一步是创建场景对象,就和创建实例对象一样
var scene = new THREE.Scene()
这个场景后面会add添加很多元素,包括模型和光源这些。
场景里需要一个3D模型体,这时候就要用到
var box = new THREE.BoxGeometry(50,50,50)
这相当于创建了一个正方体模型,当然你也可以参照官方API中的 TextGeometry 字体模型 还有 SphereGeometry 球模型等,大家可以去官网看看,还是蛮有意思的, 这里就先用立方体模型,对后面的理解有帮助。
模型中的参数就是尺寸大小,分别代表X轴,Y轴,和Z轴(X轴就是浏览器右手的方向,Y轴是浏览器向上的方向,Z轴是浏览器左手的方向),比如增大第一个参数就会让模型左右宽度增大,第二个参数就会让上下宽度变大
其次是材质对象
var material = new THREE.MeshLambertMaterial({color: 0xff3040,emissive:0x0000ff})
除了最基础的color属性,还有很多例如emissive材质本身发光颜色,贴图等属性
mesh网格模型对象(将3D模和材质放进去)
var mesh=new THREE.Mesh(box,material);
还有就是光源和环境光,光源指从一个点发出光来照亮3D模型,环境光就是模型整体亮度,先构造实例对象
var point = new THREE.PointLight(0xffffff)
参数是光源的颜色,
var ambient = new THREE.AmbientLight(0x444444)
参数是亮度(递增)
然后设置光源的位置
point.position.set(100,200,300)
参数是Y,Z,X轴方向射来光线的位置,像是X轴的值最大,就从X轴方向的光线最强,这个面就越亮,其他面就会越暗
设置好后把他们add添加到场景对象中
scene.add(mesh);//网格模型添加到场景中
scene.add(point);//点光源添加到场景中
scene.add(ambient);//点环境光添加到场景中
var ambient=new THREE.AmbientLight(0x444444);
2.相机(即正事3D模型的视角)
创建相机实例对象
var camera=new THREE.OrthographicCamera( left : Number, right : Number, top : Number, bottom : Number, near : Number, far : Number );
left — 摄像机视锥体左侧面。 right — 摄像机视锥体右侧面。 top — 摄像机视锥体上侧面。 bottom — 摄像机视锥体下侧面。 near — 摄像机视锥体近端面。 far — 摄像机视锥体远端面。
camera.position.set(200,200,200);//设置相机位置 即从哪个位置看3D模型
camera.lookAt(scene.position);//设置相机方向(指向的场景对象)
3.创建渲染器对象,进行渲染操作
var renderer=new THREE.WebGLRenderer();
设置尺寸
renderer.setSize(width,height);
body元素中插入canvas对象
document.body.appendChild(renderer.domElement);
执行渲染操作,render上面的场景和相机
renderer.render(scene,camera);
这样一个最最最简单的3D模型图就建好了,是不是很简单呢(狗头保命)