赞
踩
vscode,webpack/vite/其他,Live Server
项目开发环境引入:
尽量加上版本号
创建
定义物体:物体大小,外观...
将所定义的物体外观添加进物体里
创建相机对象(四个参数设置)
相机设置(位置,视线...)
创建渲染器对象
执行渲染操作(指名哪个相机,场景)->生成一个html元素Canvas
将生成的Canvas画布添加到页面
物体:
视角/相机:
点光源,平行光,聚光灯光源
基本参数设置:位置,强度...
本质:更改相机参数
请求动画帧
clock
深度冲突(模型闪烁)
renderer.setClearAlpha(0.8);//0~1
stats性能监视器扩展库
dat.gui.js:拖动属性条改变相关属性
点模型
线模型
网格模型:一个个 三角形拼出来
顶点坐标数据
平移,缩放,旋转(translate,,scale)->对位置positon,角度rotate的改变
父类都为Object3D
三维向量Vector3
有xyz三个分量,threejs中会用三维向量Vector3
表示很多种数据(.position缩放.sacle...)
//new THREE.Vector3()实例化一个三维向量对象 const v3 = new THREE.Vector3(0,0,0); console.log('v3', v3); v3.set(10,0,0);//set方法设置向量的值 v3.x = 100;//访问x、y或z属性改变某个分量的值
.positioin改变位置属性
mesh.positioin.set(80,2,11)
.translateX()/.translateY()平移:基于上一次平移位置变换
基本
漫反射
高光
效果更好,但占用资源更多
光照模型
.metalness默认时0.5,0.0到1.0之间的值可用于生锈的金属外观
影响材质反射光的程度
可用于加载环境贴图(3d场景中的6张照片)
环境贴图反射率:近似模拟周围环境对物体表面的影响
三个属性r,g,b 0-1
这俩共享材质,有需要可重新设置材质和几何体属性
更好的管理mesh
有时也用Object3D作为Group使用
递归遍历方法.traverse()
查找某个具体的模型.getObjectByName()
改变子对象的.position
,子对象在3D空间中的坐标会发生改变。
改变父对象的.position
,子对象在3D空间中的位置也会跟着变化,也就是说父对象.position
和子对象.position
叠加才是才是子对象的.position
const mesh = new THREE.Mesh(geometry, material); mesh.position.set(50, 0, 0); const group = new THREE.Group(); group.add(mesh); group.position.set(50, 0, 0);
.remove()把子对象从父对象的.children()
属性中删除。
批量移除: group.remove(mesh1,mesh2);
模型隐藏和显示:.visible
通过纹理贴图加载器TextureLoader
的load()
方法加载一张图片可以返回一个纹理对象Texture
,纹理对象Texture
可以作为模型材质颜色贴图.map
属性的值。
const geometry = new THREE.PlaneGeometry(200, 100); //纹理贴图加载器TextureLoader const texLoader = new THREE.TextureLoader(); // .load()方法加载图像,返回一个纹理对象Texture const texture = texLoader.load('./earth.jpg'); const material = new THREE.MeshLambertMaterial({ // 设置纹理贴图:Texture对象作为材质map属性的属性值 map: texture,//map表示材质的颜色贴图属性 });
直接设置纹理贴图:material.map = texture;
颜色贴图和color属性颜色值会混合如果没有特殊需要,设置了颜色贴图.map,不用设置color的值,color默认白色0xffffff。
自定义顶点geometry.attributes.uv
CircleGeometry
的UV坐标会对颜色纹理贴图.map
进行提取,CircleGeometry
的UV坐标默认提取的就是一个圆形轮廓。
阵列功能+矩形平面几何体
地板瓷砖
// .load()方法加载图像,返回一个纹理对象Texture const texture = texLoader.load('./瓷砖.jpg'); // 设置阵列模式 texture.wrapS = THREE.RepeatWrapping; texture.wrapT = THREE.RepeatWrapping; // uv两个方向纹理重复数量 texture.repeat.set(12,12);//注意选择合适的阵列数量
blender
three..js默认为
导入后的适配
相机属性
“单位”协调统一
几何中心(原点)
手动设置相机控件参数
远裁截面,近裁截面
纹理贴图颜色偏差
在点击位置创建一条射线,用来选中拾取模型对象
扩展库EffectComposer.js
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。