阴影效果

所属分类:Windows编程
开发工具:WINDOWS
文件大小:6120KB
下载次数:3
上传日期:2018-02-05 21:00:01
上 传 者雷米
说明:  此程序案例,利用vs2013工具进行开发,适合初学OSG的人使用,添加了阴影效果,添加了视图等,并且可以添加风雪等特效。
(This program case is developed by vs2013 tool, which is suitable for people who learn OSG, add shadow effect, add views and so on, and add special effects such as snow and snow.)

文件列表:
阴影效果\Backup\MazeAndShadow.sln (905, 2008-09-17)
阴影效果\Debug\MazeAndShadow.exe (99328, 2018-02-05)
阴影效果\Debug\MazeAndShadow.ilk (1029484, 2018-02-05)
阴影效果\Debug\MazeAndShadow.pdb (7524352, 2018-02-05)
阴影效果\MazeAndShadow\Debug\main.obj (687392, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.Build.CppClean.log (871, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.log (1509, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\cl.command.1.tlog (608, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\CL.read.1.tlog (28032, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\CL.write.1.tlog (444, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\link.command.1.tlog (1392, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\link.read.1.tlog (2898, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\link.write.1.tlog (422, 2018-02-05)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog\MazeAndShadow.lastbuildstate (163, 2018-02-05)
阴影效果\MazeAndShadow\Debug\vc120.idb (2362368, 2018-02-05)
阴影效果\MazeAndShadow\Debug\vc120.pdb (7884800, 2018-02-05)
阴影效果\MazeAndShadow\glider.osg (42483, 2006-02-02)
阴影效果\MazeAndShadow\main.cpp (3833, 2018-02-05)
阴影效果\MazeAndShadow\maze.jpg (1458, 2008-03-02)
阴影效果\MazeAndShadow\MazeAndShadow.vcproj (4684, 2008-09-17)
阴影效果\MazeAndShadow\MazeAndShadow.vcproj.CHINA-043DC02C3.Ray.user (1427, 2008-09-17)
阴影效果\MazeAndShadow\MazeAndShadow.vcxproj (6076, 2018-01-31)
阴影效果\MazeAndShadow\MazeAndShadow.vcxproj.filters (940, 2018-01-31)
阴影效果\MazeAndShadow\qq.jpg (85357, 2018-01-31)
阴影效果\MazeAndShadow.opensdf (30, 2018-02-05)
阴影效果\MazeAndShadow.sdf (17104896, 2018-02-05)
阴影效果\MazeAndShadow.sln (985, 2018-01-31)
阴影效果\MazeAndShadow.v12.suo (33792, 2018-01-31)
阴影效果\qq.jpg (85357, 2018-01-31)
阴影效果\UpgradeLog.htm (42230, 2018-01-31)
阴影效果\MazeAndShadow\Debug\MazeAndShadow.tlog (0, 2018-02-05)
阴影效果\Backup\MazeAndShadow (0, 2018-01-31)
阴影效果\MazeAndShadow\Debug (0, 2018-02-05)
阴影效果\Backup (0, 2018-02-05)
阴影效果\Debug (0, 2018-02-05)
阴影效果\MazeAndShadow (0, 2018-02-05)
阴影效果 (0, 2018-02-05)

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //标识阴影接收对象 const int ReceivesShadowTraversalMask = 0x1; //标识阴影投影对象 const int CastsShadowTraversalMask = 0x2; //创建场景数据 osg::ref_ptr createModel() { osg::Vec3 center(0.0f, 0.0f, 0.0f); float radius = 100.0f; osg::Vec3 lightPosition(center + osg::Vec3(0.0f, 0.0f, radius)); osg::ref_ptr shadower = osgDB::readNodeFile("D:\\OSGmodel\\WKZ005_JZ_24.OSGB"); shadower->setNodeMask(CastsShadowTraversalMask); osg::ref_ptr shadowed = osgDB::readNodeFile("D:\\OSGmodel\\floor.OSGB"); shadowed->setNodeMask(ReceivesShadowTraversalMask); osg::ref_ptr group = new osg::Group; group->addChild(shadowed.get()); group->addChild(shadower.get()); return group.get(); } //创建一个光照 osg::ref_ptr createLight(osg::ref_ptr model) { osg::ComputeBoundsVisitor cbbv; model->accept(cbbv); osg::BoundingBox bb = cbbv.getBoundingBox(); osg::Vec4 lightpos; lightpos.set(bb.center().x(), bb.center().y(), bb.zMax() + bb.radius()*2.0f, 1.0f); osg::ref_ptr ls = new osg::LightSource(); ls->getLight()->setPosition(lightpos); ls->getLight()->setAmbient(osg::Vec4(0.2, 0.2, 0.2, 1.0)); ls->getLight()->setDiffuse(osg::Vec4(0.8, 0.8, 0.8, 1.0)); return ls.get(); } int main() { osg::ref_ptr viewer = new osgViewer::Viewer(); osg::ref_ptr root = new osg::Group(); //创建一个阴影节点,并标识接收对象和投影对象 osg::ref_ptr shadowedScene = new osgShadow::ShadowedScene(); shadowedScene->setReceivesShadowTraversalMask(ReceivesShadowTraversalMask); shadowedScene->setCastsShadowTraversalMask(CastsShadowTraversalMask); //创建阴影纹理 osg::ref_ptr st = new osgShadow::ShadowTexture(); //关联阴影纹理 shadowedScene->setShadowTechnique(st); osg::ref_ptr node = new osg::Node(); node = createModel(); //添加场景数据并添加光源 shadowedScene->addChild(createLight(node.get())); shadowedScene->addChild(node.get()); root->addChild(shadowedScene.get()); //优化场景数据 osgUtil::Optimizer optimizer; optimizer.optimize(root.get()); viewer->setSceneData(root.get()); viewer->realize(); viewer->run(); return 0; }

近期下载者

相关文件


收藏者