索引
构建3D
的场景除了创建模型,对模型设置颜色和贴图外,还需要有灯光的效果才能更逼真的反映真实世界的场景。
本手册将深入介绍头灯、点光灯、聚光灯
和方向光等光源的各种配置参数,以及雾化等效果。
HT
默认内置了一盏头灯,头灯相当于在graph3dView.getEye()
的眼睛位置有一个点光灯,
该灯源的位置随graph3dView.getEye()
自定变化,因此用户即使不做任何灯光设置,漫游到任何位置都能体验到基本光照效果。
Graph3dView
通过以下参数控制头灯:
headlightRange
:灯影响范围,默认为0
代表可照射到无穷远处,如果设置了值则光照射效果随物体远离光影而衰减headlightColor
:灯颜色headlightIntensity
:灯强度,默认为1
,大于1
增强,小于1
减弱headlightAmbientIntensity
:灯的环境光比例,默认为0.7
,即无论灯的角度,头灯都会贡献70%
的环境光,剩下30%
根据灯的角度决定强弱headlightDisabled
:关闭灯光效果,默认为false
,可设置为true
关闭灯效果HT
提供了ht.Light
类型的图元,该类型继承于ht.Node
,通过创建ht.Light
类型的图元对象,
然后添加到DataModel
数据模型达到添加灯的效果。以下介绍的点光灯、聚光灯
和方向光等光源类型都是通过ht.Light
对象控制,以下为灯光类型共同的style
属性:
light.type
:默认为point
点光灯,可设置为spot
聚光灯,以及directional
的方向光类型light.color
:灯颜色light.intensity
:灯强度,默认为1
,大于1
增强,小于1
减弱light.disabled
:关闭灯光效果,默认为false
,可设置为true
关闭灯效果同
DataModel
中删除ht.Light
对象,与将light.disabled
属性设置为false
都能得到关闭灯光效果, 但从DataModel
中删除操作较重,建议在长时间不使用灯光时采用删除方式,如果要实现闪烁等频繁变化效果时, 建议通过light.disabled
控制较为高效。
点灯光从它的位置各个方向发出光线,影响其长度范围内的所有对象。
ht.Light
对象的中心位置决定,即light.p3()
值light.range
:灯影响范围,默认为0
代表可照射到无穷远处,如果设置了值则光照射效果随物体远离光影而衰减聚光灯从它所在位置,以到中心点的位置为方向,在指定的张角和长度范围内的对象受其影响。
ht.Light
对象的中心位置决定,即light.p3()
值light.center
:光源照射方向的中心点位置,默认为原点[0, 0, 0]
light.range
:灯影响范围,默认为0
代表可照射到无穷远处,如果设置了值则光照射效果随物体远离光影而衰light.angle
:灯照射的张角弧度,该张角照射范围内物体才受此光源影响light.exponent
:灯光照射衰减指数,默认值为0
,值越大离中心方向越远的物体受光照影响效果越弱方向光源在无穷远处,以指定的方向照射到场景内的所有物体,太阳光就是这类光的应用。
ht.Light
对象中心点到三维坐标原点[0, 0, 0]
得矢量方向决定,
因此改变灯对象的中心点位置即可改变光照方向。HT
提供了使场景呈现笼罩在雾化的环境效果,Graph3dView
通过以下参数进行控制:
fogDisabled
:默认为true
不启用雾效果,可设置为false
启用雾效果fogColor
:雾颜色fogNear
:默认为1
,代表从该距离起物体开始受雾效果影响fogFar
:默认为2000
,代表从该距离之后物体完全看不清