使用scene manager的addLightSceneNode,默认加入的是点光源,设置平行光,需要自己设置SLight,将其type设置为ELT_DIRECTIONAL,这都好说,问题是光的方向,被误导了一下,因为ILightSceneNode本身没有setDirection之类的方法,而SLight::Direction文档中说是read only的,怎么回事?自己直接设了下,完全没有作用,果然read-only啊。于是查看irrlicht源码,在CLightSceneNode类中,有一个方法doLightRecalc,这个方法中,对于平行光:
LightData.Direction = core::vector3df(.0f,.0f,1.0f);
getAbsoluteTransformation().rotateVect(LightData.Direction);
LightData.Direction.normalize();
原来是根据transform重新计算这个方向,所以direction是read-only的。直接对light node执行rotate就可以设置方向了~
偏偏example中没有用平行光的例子,害我找了好久
Irrlicht平行光设置
本文介绍了使用Irrlicht图形引擎时如何正确设置平行光源的方向。通过解释SLight::Direction属性为何标记为只读,并提供了实际操作方法来改变平行光源的方向。
1030

被折叠的 条评论
为什么被折叠?



