查看: 1300|回复: 6

模型阴影的问题

[复制链接]

该用户从未签到

发表于 2011-4-8 19:06:07 | 显示全部楼层 |阅读模式
osg::ref_ptr<osgShadow::ShadowedScene> ss=new osgShadow::ShadowedScene;
ss->setShadowTechnique(new osgShadow::SoftShadowMap);
ss->setReceivesShadowTraversalMask(0x01);
ss->setCastsShadowTraversalMask(0x02);
dixingX->setNodeMask(0x02);
d2->setNodeMask(0x01);
ss->addChild(dixingX);
ss->addChild(d2.get());

//设置光源1
osg::BoundingSphere bs=d2->getBound();
osg::Vec4 position=osg::Vec4(bs.center().x()-500,bs.center().y()-bs.radius(),bs.center().z()+1000,1.0f);
//osg::Vec4 position=osg::Vec4(-50,-10,10,1.0f);
osg::ref_ptr<osg:ightSource> ls=new osg::LightSource;
ls->getLight()->setPosition(position);
//ls->getLight()->setDirection(osg::Vec3(0.0f,1.0f,-1.0f));
ls->getLight()->setAmbient(osg::Vec4(0.2,0.2,0.2,1.0));
ls->getLight()->setDiffuse(osg::Vec4(0.3,0.3,0.3,1.0));
//光源衰减
ls->getLight()->setConstantAttenuation(1.0f);
ls->getLight()->setLinearAttenuation(0.0f);
ls->getLight()->setQuadraticAttenuation(0.0f);

我在模型的一边设置了一个光源,使模型产生一个阴影,但是法线模型的另一面(在阴影中的那一部分)是黑色的,看不清原来的纹理,这种情况应该怎样解决啊,谢谢!!!

该用户从未签到

发表于 2011-4-8 20:58:34 | 显示全部楼层
既然加了阴影就会这样吧,背光么

你再加个光源照一下

该用户从未签到

 楼主| 发表于 2011-4-8 21:13:40 | 显示全部楼层
但是再加一个的话,阴影就不正确了,我试过,阴影的方向就变了,好像两个光源都起作用啊,怎样只让一个光源产生阴影啊

该用户从未签到

发表于 2011-4-11 08:51:15 | 显示全部楼层
这取决于ShadowTechnique本身的设计了,如果您有自己的需求,可能只能设法自行改写其源代码或者进行派生

该用户从未签到

 楼主| 发表于 2011-4-11 09:15:09 | 显示全部楼层
好的,我试一下啊,非常谢谢!

该用户从未签到

发表于 2011-4-11 09:25:26 | 显示全部楼层
如果你使用shadowmap的话, 也可以以原本的shader为基础,写自己的shader来修改阴影颜色。

该用户从未签到

 楼主| 发表于 2011-4-11 17:17:48 | 显示全部楼层
恩,好的,谢谢啊,我试一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表