Threejs开发笔记之四材质

材质介绍:材质就像物体的皮肤,可以决定物体的质感,透明度,线框。

名称描述
MeshBasicMaterial为几何设置简单颜色
MeshDepthMaterial摄像机敏感材质:作逐渐消失效果
MeshNormalMaterial法线敏感材质,根据法线设置颜色
MeshFaceMaterial为每个面设置材质颜色
MeshLambertMaterial光源敏感材质,根据光做暗淡光亮效果
MeshPhongMaterial光源敏感材质,根据光做高亮效果
ShaderMaterial高级自定义着色器材质
LineBasicMarterial线几何体特殊材质
LineDasheMaterial线几何体特殊材质,定义线段样式

共有属性

//基本属性(比较常用)
id //唯一标识
name//材质名称
opacity//透明度,与transparent一起使用,取值范围0~1
transparent//是否透明,透明开关true
overdraw//过度描绘
visible//是否可见
side//侧面,指定某个面THREE.FrontSide(BackSide,DoubleSide)
needsUpdate//是否刷新,更改材质之后是否刷新,默认为true

//融合属性(与环境的关系)
blending//融合,融合的方式,一般是NormalBlending
blendsrc//融合源,如何融合,默认SrcAlphaFactor,使用透明通道融合
blenddst//融合的目标,如何使用背景,默认是OneMinusSRCAlphaFactor
blendinggequation//融合公式。如何指定blendsrc和blenddst的值,默认AddRquation即相加。

//高级(不常用)
depthTest//深度测试
depthWrite//深度缓存
pougonOffset//
alphTest//

MeshBasicMaterial-简单颜色表面

var meshMaterial = new THREE.MeshBasicMaterial({color: 0x7777ff});//实例化(颜色)
meshMaterial.opacity;//透明度
meshMaterial.transparent;//是否透明
meshMaterial.overdraw;//是否过度描绘
meshMaterial.visible;//是否可见
meshMaterial.side = THREE.DoubleSide;//侧面渲染方式 两面
meshMaterial.side = THREE.FrontSide;
meshMaterial.side = THREE.BackSide;

meshMaterial.fog//是否 雾化
meshMaterial.wireframe;//是否设为线框模式
meshMaterial.wireframeLinewidth;//线框的宽度(还有其他设置属性)

MeshDepthMaterial-深度着色

使用场景:就是结合其他材质,创造出逐渐消失的效果

wireframe //是否显示线框
wireframeLinewidth//线框的宽度

//可以通过控制相机进而控制消失的边界
camera.near
camera.far

同时使用多个材质的方法

var cube = new THREE.Mesh(cubeGeometry, [MeshBasicMaterial,MeshDepthMaterial]);
//通过数组的方式传入多种材质

MeshNoralMaterial-计算法向颜色

意思:就是通过计算每个面的法向量的值来计算颜色的多少(也就是面的朝向决定面的颜色),效果某个空间的面颜色不会变,

var meshMaterial = new THREE.MeshNormalMaterial({color: 0x7777ff});

MeshFaceMaterial-为每个指定材质

 var mats = [];
mats.push(new THREE.MeshBasicMaterial({color: 0x009e60}));
mats.push(new THREE.MeshBasicMaterial({color: 0x009e60}));
mats.push(new THREE.MeshBasicMaterial({color: 

var faceMaterial = new THREE.MeshFaceMaterial(mats);//实例化传入数组
var cube = new THREE.Mesh(cubeGeom, faceMaterial);//匹配上去

MeshLambertMaterial-对光有反应的材质

var meshMaterial = new THREE.MeshLambertMaterial({color: 0x7777ff});//实例化

meshMaterial.ambient = new THREE.Color(e)//环境色与AmbientLight相乘,默认是白色
meshMaterial.emissive = new THREE.Color(e)//反射出来的颜色,默认黑色

var sphere = new THREE.Mesh(sphereGeometry, meshMaterial);//使用

MeshPhongMaterial-用于亮表面

//在上面的材质的基础上增加了镜面和高光
meshMaterial.specular = new THREE.Color(e) //高光镜面的颜色,越贴近物体的颜色越想金属,灰色越接近塑料
meshMaterial.shininess = e //高光的亮度 默认30 0~200...

ShaderMaterial-创建自己的着色器

就是自己搞一个材质的着色器。

特定几何体(线段的材质)

//几何体
THREE.Line

var material = new THREE.LineBasicMaterial({
            opacity: 1.0,//透明度
            linewidth: 1,//宽度
            vertexColors: THREE.VertexColors//指定颜色
);

var material = new THREE.LineDashedMaterial({
vertexColors: true,
color: 0xffffff,//颜色
dashSize: 2,//短划线的长度
gapSize: 2,//间隔长度
scale: 0.1//缩放比例
});

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值