探索three.js中的各种材质之共有属性

探索three.js中的各种材质 之共有属性

这里写图片描述

共有属性又分基础属性、融合属性、高级属性

1.基础属性:这些属性是最常用到的。

.id:Integer标识符
用来标识材质,在创建时赋值

.uuid:String UUID
材质实例的UUID。这会自动分配,因此不应编辑。

.name:String名称
可以通过这个属性赋予材质名称

.isMaterial是否为材质
用于检查此类或派生类是否为材质。默认为true。
不应该更改它,因为它在内部用于优化。

.type:String类型
值是字符串’Material’。这不应该更改,并且可以用于在场景中查找此类型的所有对象。

.opacity:Float透明度
定义物体有多透明。 与属性.transparent 一起使用。取值范围是0~1。

.transparent:Boolean是否透明
如果设为true, Three.js库就会根据opacity的值来渲染物体。如果是 false,这个物体就不透明,只是着色明亮一些。

.overdraw:Float过度描绘
如果你用 THREE.CanvasRenderer(画布渲染器)对象,多边形会被渲染得稍微大 一点儿。当你用这个渲染器画出来的物体有缝隙时,可以将这个属性设为 true。

.visible:Boolean是否可见
定义该材质是否可见。如果将它设为 false,那么在场景中就看不到该物体。

.side:Integer侧面
通过这个属性,可以决定在几何体的哪一面应用这个材质。 默认值是 THREE.FrontSide(前面),这可以将材质应用到物体的前(外)面。 也可以将它设为 THREE. BackSide (后面),这可以将材质应用到物体的后(内) 侧。或者也可以将它设为 THREE.DoubleSide (双侧),这样就可以将材质应用到物体的内外两侧。

shadowSide:Integer投影面
定义面部投射阴影的哪一侧。默认值为null。

.needsUpdate:Boolean是否需要刷新
对于材质的某些修改,你需要告诉 Three.js 库材质已经改变了。 如果这个属性设为 true, Three.js 就会使用新的材质属性刷新它的缓存。

.clipIntersection:Boolean是否剪切交叉点
更改剪裁平面的行为,以便仅剪切其交叉点,而不是它们的并集。默认值为false。

.clippingPlanes:Array剪裁平面
用户定义的剪裁平面在世界空间中指定THREE.Plane对象。这些平面适用于此材质所附着的对象。空间中与平面的符号距离为负的点被剪裁(未渲染)。这需要WebGLRenderer.localClippingEnabled为true。

.clipShadows:Boolean是否剪切阴影
定义是否根据此材质上指定的剪裁平面剪切阴影。默认值为false。

.colorWrite:Boolean是否渲染材质的颜色
这可以与网格的renderOrder属性结合使用,以创建遮挡其他对象的不可见对象。默认为true。

.customDepthMaterial:Material自定义深度材质
渲染到深度贴图时此材质要使用的自定义深度材质。默认值为undefined。

.customDistanceMaterial:Material自定义距离材质
与customDepthMaterial相同,但与PointLight一起使用。默认值为undefined。

.defines:Object定义
自定义注色器。默认值为undefined。

.flatShading:Boolean是否平面着色
默认值为false。

.fog:Boolean是否受雾影响
默认值为true。

.lights:Boolean是否受灯光影响
默认为true。

.precision:String默认精度
覆盖此材质的渲染器的默认精度。可以是“ highp ”,“ mediump ”或“ lowp ”。默认值为null。

.premultipliedAlpha:Boolean是否预乘alpha(透明度)值
默认值为false。

.dithering:Boolean是否抖动
是否对颜色应用抖动以消除条带的外观。默认值为false。

.vertexColors:Integer是否使用定点着色
默认值为THREE.NoColors。其他选项有THREE.VertexColors和THREE.FaceColors。

.userData:Object数据对象
一个对象,可用于存储有关Material的自定义数据。它不应该包含对函数的引用,因为这些函数不会被克隆。

2.融合属性: 每个物体都有一系列的融合属性。 这些属性决定物体如何与背景融合。

.blending:Blending融合
决定物体上的材质如何跟背景融合。必须将其设置为CustomBlending才能使用自定义blendSrc,blendDst或blendEquation。 默认值为 NormalBlending,在这种模式下只显示材质的上层。

.blengSrc:Integer融合源
除了使用标准融合模式之外,还可以通过指定 blendsrc、 blenddst 和 blendequation 属性来创建自定义的融合模式。该属性指定物体(源)如何跟背景(目标)相融合。 默认值是 SrcAlphaFactor,即使用alpha (透明度)通道进行融合。必须将材质的混合设置为CustomBlending才能生效。

.blendSrcAlpha:Integer融合源的透明度
默认值为null。

.blendDst:Integer融合目标
该属性定义融合时如何使用背景(目标)。默认值是 OneMinusSrcAlphaFactor, 其含义是:目标也使用源的 alpha 通道进行融合,只是用的值是1(源的 alpha 通道值)。必须将材质的混合设置为CustomBlending才能生效。

.blendDstAlpha:Integer融合目标的透明度
默认值为null。

.blendingEquation:Integer融合公式
指定如何使用 blendsrc 和 blenddst 的值。 默认方法是 AddEquation。即将两个颜色值相加。 使用这三个属性,就可以创建自定义的融合模式。必须将材质的混合设置为CustomBlending才能生效。

.blendingEquationAlpha:Integer融合公式的透明度
默认值为null。

3.高级属性: 有一些高级属性可以控制底层 WebGL 上下文渲染物体的方法。 大多数情况下,不会用到这些属性。

.depthFunc:Integer深度函数
默认值为LessEqualDepth。

.depthTest:Boolean 深度测试
这是一个高级 WebGL 属性。使用这个参数可 以打开或关闭 GL DEPTH TEST 参数。该参数决定像索深度是否用来计算新的像索值。 通常情况下不必修改这个属性。

.depthWrite:Boolean深度缓存
内部属性。可以用来决定这个材质是否影响 WebGL 的 深度缓存。如果你将一个物体用作二维贴图时(例如一个套子),你应该将这个属性设为 false。 但是一般来讲,你不应该修改这个属性。

.polygonOffset:Boolean(是否使用多边形偏移。默认值为false。)、 .polygonOffsetFactor:Integer(设置多边形偏移系数。默认值为0。) 和.polygonOffsetUnits:Integer (设置多边形偏移单位。默认值为0。)
通过这些属性,可以控制WebGL的POLYGON_OFFSET_FILL 功能。 一般不需要使用它们。

.alphaTest:Float
可以给这个属性指定一个值(从 0 到 1)。如果某个像素的 alpha值小于这个值,那么该像素就不会显示出来。默认值为0。

猜你喜欢

转载自blog.csdn.net/JaRiS_jade/article/details/82180183