文章目录
一、Three.js 是什么?
1.介绍
Three.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多、使用最广泛的三维引擎。
2.环境配置
js作为一个跨端语言,可作为IDE的软件有很多,笔者这里使用的是 websotrm,它的好处是改动一处便可直接显示。
在此给出Three.js的官方GitHub库,[Three.js-GitHub](https://github.com/mrdoob/three.js),请提前下载
3.WebGL和Three.js学习顺序?
引用自Three教程
如果你急于要实现一个Web3D功能,时间有限,也没有图形学基础,个人建议直接学习先Three.js即可,以后想深入掌握,可以学习原生WebGL和图形学相关知识。
如果时间比较充足,又希望有更大的成长空间,学习底层原生WebGL肯定是必要的,可以WebGL和Threejs结合着学习,顺序也不是非常重要。
二、麻雀虽小而五脏俱全的例子
1.引入资源包
<head>
<meta charset="UTF-8">
<title>第一个three.js文件_WebGL三维场景</title>
<style> body {
margin: 0; overflow: hidden; /* 隐藏body窗口区域滚动条 */ } </style>
<!-- 引入three.js三维引擎-->
<script src="./three.js-r95/build/three.js"></script>
<!-- 引入OrbitControls.js鼠标操作三维场景-->
<script src="./three.js-r95/examples/js/controls/OrbitControls.js"></script>
</head>
2.创建场景和添加2个以上的3D对象
/** * 创建场景对象Scene */
var scene = new THREE.Scene();
/** * 创建网格模型,并添加到场景 */
var geometry = new THREE.BoxGeometry(25, 50, 50); //创建一个立方体几何对象Geometry
var material = new THREE.MeshLambertMaterial({
color: 0xff00ff, //颜色 16进制
opacity:0.9, //透明度 0-1
transparent:true, //开启透明度,默认关闭
wireframe:false //线框,默认关闭
}); //材质对象Material
var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
scene.add(mesh); //网格模型添加到场景中
var geometry2 = new THREE.BoxGeometry(25, 50, 50); //创建一个球体几何对象
var material2 = new THREE.MeshLambertMaterial({
color: 0xffffff,
opacity:0.9, //透明度 0-1
transparent:true //开启透明度
}); //材质对象Material2
var mesh2 = new THREE.Mesh(geometry2,material2)
mesh2.translateX(-100);
mesh2.translateZ(-30);
// mesh2.translateY(30); //球体网格模型沿Y轴正方向平移
scene.add(mesh2)
(可选)3.添加辅助坐标系
/** * 辅助坐标系 参数1000表示坐标系大小 */
var axisHelper = new THREE.AxisHelper(1000);
scene.add(axisHelper)
4.光源和相机设置
/** * 光源设置 */
//点光源
var point = new THREE.PointLight(0xfffffff);
point.position.set(100, 100, 100); //点光源位置
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);
var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
camera.position.set(200, 0, 0); //设置相机位置
camera.lookAt(scene.position); //设置相机方向(指向的场景对象)position
5.渲染得到结果
/** * 创建渲染器对象 */
var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);//设置渲染区域尺寸
renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
document.body.appendChild(renderer.domElement); //body元素中插入canvas对象
function render() {
console.log(camera.position)
renderer.render(scene,camera);//执行渲染操作
}
render();
var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象
controls.addEventListener('change', render);//监听鼠标、键盘事件
结果图如下:
总结及完整源码
以上就是今天要讲的内容,本文仅仅简单介绍了Three.js的使用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>第一个three.js文件_WebGL三维场景</title>
<style> body {
margin: 0; overflow: hidden; /* 隐藏body窗口区域滚动条 */ } </style>
<!-- 引入three.js三维引擎-->
<script src="./three.js-r95/build/three.js"></script>
<!-- 引入OrbitControls.js鼠标操作三维场景-->
<script src="./three.js-r95/examples/js/controls/OrbitControls.js"></script>
</head>
<body>
<script> /** * 创建场景对象Scene */ var scene = new THREE.Scene(); /** * 创建网格模型,并添加到场景 */ var geometry = new THREE.BoxGeometry(25, 50, 50); //创建一个立方体几何对象Geometry var material = new THREE.MeshLambertMaterial({
color: 0xff00ff, //颜色 16进制 opacity:0.9, //透明度 0-1 transparent:true, //开启透明度,默认关闭 wireframe:false //线框,默认关闭 }); //材质对象Material var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh scene.add(mesh); //网格模型添加到场景中 var geometry2 = new THREE.BoxGeometry(25, 50, 50); //创建一个球体几何对象 var material2 = new THREE.MeshLambertMaterial({
color: 0xffffff, opacity:0.9, //透明度 0-1 transparent:true //开启透明度 }); //材质对象Material2 var mesh2 = new THREE.Mesh(geometry2,material2) mesh2.translateX(-100); mesh2.translateZ(-30); // mesh2.translateY(30); //球体网格模型沿Y轴正方向平移 scene.add(mesh2) /** * 辅助坐标系 参数1000表示坐标系大小 */ var axisHelper = new THREE.AxisHelper(1000); scene.add(axisHelper) /** * 光源设置 */ //点光源 var point = new THREE.PointLight(0xfffffff); point.position.set(100, 100, 100); //点光源位置 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); var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 ); camera.position.set(200, 0, 0); //设置相机位置 camera.lookAt(scene.position); //设置相机方向(指向的场景对象)position /** * 创建渲染器对象 */ var renderer = new THREE.WebGLRenderer(); renderer.setSize(width, height);//设置渲染区域尺寸 renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色 document.body.appendChild(renderer.domElement); //body元素中插入canvas对象 function render() {
console.log(camera.position) renderer.render(scene,camera);//执行渲染操作 } render(); var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象 controls.addEventListener('change', render);//监听鼠标、键盘事件 </script>
</body>
</html>
今天的文章three.js入门指南_js基础知识大全[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79178.html