three.js使用总结(一)
程序员文章站
2024-01-08 12:43:52
...
three.js使用总结
(这里项目使用的是vue.js)
1、引入需要的文件
import './three.js-master/build/three.js'
import './three.js-master/examples/js/loaders/OBJLoader.js'
import './three.js-master/examples/js/loaders/MTLLoader.js'
import './three.js-master/examples/js/loaders/DDSLoader.js'
import './three.js-master/examples/js/controls/OrbitControls.js'
2、要在前端页面中展示3d模型,我们需要的几个组成元素:
(1)场景
场景是所有物体的容器。我们要做的就是把模型装入到这个容器里面。
this.scene = new THREE.Scene()
(2)相机
相机决定了场景中那个角度的景色会显示出来。
我们可以将相机理解为眼睛,眼睛的位置决定你看的角度。
this.camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000)
(3)渲染器
通过渲染器将我们要展示的东西渲染到domElement元素(以下是container )的画布上面。
this.renderer = new THREE.WebGLRenderer()
this.renderer.setClearColor(0x101d2c);//颜色
this.renderer.setSize(window.innerWidth, window.innerHeight);//范围,大小
let container = document.getElementById('container')
container.append(this.renderer.domElement)
(4)物体(灯光、模型等)
1、使用three.js的几何模型
this.geometry = new THREE.CubeGeometry(1,1,1); //模型(three.js几何体)
this.material = new THREE.MeshBasicMaterial({color: 0x00ff00});//材质
this.cube = new THREE.Mesh(geometry, material); //Mesh模型对象
this.scene.add(cube);//将模型加入到场景中
2、自定义模型的导入(.obj模型文件 .mtl材质文件)
let suidaoobj = new THREE.OBJLoader();
let suidaomtl = new THREE.MTLLoader();
suidaomtl.load(url, function (materials) { //加载材质mtl文件
materials.preload();
suidaoobj.setMaterials(materials);
suidaoobj.load(url, function (obj) { //加载模型obj文件
obj.position.set(-40,0,30) //坐标
obj.scale.set(1, 1, 1) //缩放
this.scene.add(obj);
})
3、灯光
光源分为点光源、环境光、平行光等等。这里使用的是平行光。
let DirectionalLight = new THREE.DirectionalLight(0xffffff,3); //光源颜色及强度
DirectionalLight.position.set(-5000,5000,5000); //光源位置
3、渲染
this.render( this.scene, this.camera)
循环渲染
renderScene: function () {
requestAnimationFrame(this.renderScene)
this.renderer.render(this.scene, this.camera)
},
上一篇: Three.js 设置控制器作用范围
推荐阅读
-
Redis 使用总结
-
Oracle OWB介绍系列一之简介及使用流程
-
Oracle第一次使用Navicat链接报错的解决办法
-
mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享
-
给定两个int a和b,不使用if-else等比较和判断运算符,请返回较大的一个数。若两数相同则返回任意一个
-
sublime使用技巧总结
-
详解CSS3阴影 box-shadow的使用和技巧总结
-
【PHP代码审计】那些年我们一起挖掘SQL注入-8.全局防护盲点的总结下篇
-
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法,getdate数组_PHP教程
-
记录自己关于web做过的一些实践(使用表单实现注册界面)