首先引入平面光照影子的头文件:#include "vpShadowPlanar.h"。
在Define 函数中,首先启动平面光照影子功能模块:
vpModule::initializeModule("vpShadow");
在VP的安装目录下找到MultiGen-Paradigm\resources\data\models\f16cn,复制该文件夹到自己程序的data 目录下,该目录包含了一个飞机模型。把该目录添加到VP 程序管理目录下:
pSearchPath_mySearchPath->append(CTS_RunPath+"//data//f16cn");
正常添加飞行物体对象,这里需要注意的是:飞行对象需要离开地面一定的距离,才能实现平面光照影子效果。
vpObject* pObject_flight=new vpObject();
pObject_flight->setName("flight");
pObject_flight->setTranslate(2450.000000,2530.000000,10.000000);
pObject_flight->setRotate(90.000000,0.000000,0.000000);
添加平面光照影子的效果对象:
vpShadowPlanar* pShadowPlanar_myShadowPlanar=new vpShadowPlanar();
pShadowPlanar_myShadowPlanar->setName("myShadowPlanar");
pShadowPlanar_myShadowPlanar->setEnable(true);(www.daowen.com)
pShadowPlanar_myShadowPlanar->setEffectiveRange(10000.000000f);
PublicMember::CTS_s_pInstancesToUnref->push_back(pShadowPlanar_myShadowPlanar);
最后,实现平面光照影子效果的配置代码,与观察者关联,设置光源,添加平面光照影子对象:
pObserver_myObserver->addAttachment(pShadowPlanar_myShadowPlanar);
pShadowPlanar_myShadowPlanar->setLightSourceCelestial(pEnvSun_myEnvSun);
pShadowPlanar_myShadowPlanar->addCaster(pObject_flight);
其详细代码如图6.22.1所示。
图6.22.1 平面倒影效果实现代码
运行程序,其效果如图6.22.2所示。另外,可以添加多个平面光照影子对象,实现平面光照影子效果。
图6.22.2 飞行物体平面影子效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。