纳金网

标题: Java 3D基础(七) [打印本页]

作者: robert    时间: 2012-2-7 07:42
标题: Java 3D基础(七)
场景中的光是由Light 类来管理,Light 类中的所有子类都有一个开/关位,以及一个它所描述场景区域的绑定对象。在 Java 3D 中,可以同时使用多个Light子类来模拟实际的光照效果,以下是几个常用的Light 子类:
AmbientLight
无处不在的光,不发自某个特定点,也不指向某个特定方向。
PointLight
点光源,一个典型的例子就是灯泡。
SpotLight
聚焦型点光源,例子是手电筒。
DirectionalLight
射向某一个特定方向,却不发自任何特定位置的光源,使用 DirectionalLight 可准确地模拟太阳光。
所有运用Light类的节点都是场景图中的叶节点,创建它们时需要指定 Bounds 对象,这里要使用 BoundingSphere,Light 类将只影响

BoundingSphere 所定义的空间,最后别忘了将创建的Light 节点附加到场景图的顶部

BranchGroup中。
场景中的对象如何反射光线是通过它的材质特性来描述的。如果场景中的对象(Primitive 或 Shape3D)在它的 Appearance中没有相应的 Material描述,那即使有光源,它也不会被照亮。所以程序员必须创建一个 Material 对象,然后将其添加到 Appearance 中。为了方便理解,请设想一颗红宝石和一条红地毯,虽然都是红色的,但它们对光的反射却不同。在Java 3D 中要实现这一差异,则可以在 Material 中为红宝石指定一个高 shininess 值而给地毯一个低的 shininess 值。
表面法线是与该点所在平面垂直的矢量,它会影响该点反射光的方式,Java 3D中的Primitive 类会自动生成表面法线,并且使用它来计算光照效果。因为每一顶点都会计算光照效果,所以顶点越多的对象看起来会越逼真。




作者: 3D小子    时间: 2012-2-7 13:00
路过,学习了
作者: 艳阳天    时间: 2012-2-7 22:44
看了
作者: 彬彬    时间: 2012-2-9 08:49
顶楼猪
作者: 艳阳天    时间: 2012-2-9 14:48
haha
作者: LUCKstar    时间: 2012-3-21 21:05
java




欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5