这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战
我也是个初学者,大家就当这是我的笔记看,如果理解不正确请大家指正。首先推荐大家一个学习网站Tress.js中文网。 首先我们需要先引入tree.js
链接:https://pan.baidu.com/s/1SLQL6RChecY8gE7e-Jfn1g
密码:n4h8
<!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>
//根据文件的位置,我放在了跟html文件放到了js的统计目录
<script src="js/three.js"></script>
<script>
//我们主要渲染代码都写到这儿
</script>
</body>
</html>
这张图很重要,或许现在不理解等,读上代码就知道了
我们先往下看。
创建一个场景,我们需要以下几个对象:场景、相机和渲染器
var mesh = new THREE.Mesh(geometry,material);
如图:
我们读段代码看看:效果是一个旋转的正方体
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<script type="text/javascript" src='../js/three.js'></script>
<title></title>
</head>
<body>
<script type="text/javascript">
// 场景
var scene = new THREE.Scene();
// 立方体 参数分别是长宽高
var geometry = new THREE.BoxGeometry(100,100,100);
//材质 MeshLambertMaterial
var material = new THREE.MeshLambertMaterial({
color : 0x0000ff
});
//网格 包括几何体和材质(颜色,材质,透明度)
var mesh = new THREE.Mesh(geometry,material);
//网格 添加到场景
scene.add(mesh);
//
var point = new THREE.PointLight(0xffffff);
point.position.set(400,200,300);
scene.add(point);
//
var ambient = new THREE.AmbientLight(0x444444);
console.log(scene);
// 屏幕的宽
var width = window.innerWidth;
// 屏幕的高
var height = window.innerHeight;
// 屏幕的宽高比
var k = width/height;
var s = 200; //三维场景显示范围控制系数,系数越大,显示的范围越大
//创建一个相机,相机有多种。这里用的是OrthographicCamera
//参数 1--视野角度 2--长宽比根据屏幕长宽 3--远剪切面 4--近剪切面
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);
function render(){
requestAnimationFrame(render);
renderer.render(scene,camera);
mesh.rotation.x +=0.1;
mesh.rotation.y +=0.2;
}
render();
</script>
</body>
</html>
scene:场景,就像拍摄现场的密闭空间,装着演员和摄像机。场景里包含着网格模型,每一个网格模型里有一个几何体,而几何体是不能被渲染的,只有几何体和材质结合成网格才能被渲染到屏幕上。如下代码就是这个意思。
var mesh = new THREE.Mesh(geometry,material);
再分别说一下几何体和材质: 几何体会有形状和尺寸属性,如下代码BoxGeometry是立方体,三个参数分别是长宽高,三个参数不相等就成了长方体了。
var geometry = new THREE.BoxGeometry(100,100,100);
既然有立方体还有什么别的几何体呢?