查看: 1437|回复: 6

再添加光照渲染时,原来的效果怎么不见了?

[复制链接]

该用户从未签到

发表于 2011-8-10 14:24:54 | 显示全部楼层 |阅读模式
本帖最后由 Hadse 于 2011-8-11 08:26 编辑

子弹模型在添加光照效果后,原来的效果就不见了,
有什么办法可以解决这个问题吗?

OSG新手,稍微详细点。
代码如下:
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Group>
#include <osgFX/SpecularHighlights>
#include <osgUtil/Optimizer>

void main()
{
osg::ref_ptr<osgViewer::Viewer> v = new osgViewer::Viewer();
osg::ref_ptr<osg::Group> r = new osg::Group();
osg::ref_ptr<osg::Node> n = osgDB::readNodeFile("zidan.osg");
osg::ref_ptr<osgFX::SpecularHighlights> s = new osgFX::SpecularHighlights();
s->setTextureUnit(0);
s->setLightNumber(2);
s->setSpecularColor(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
s->setSpecularExponent(16.0f);
s->addChild(n.get());
r->addChild(s.get());
osgUtil::Optimizer o;o.optimize(r.get());
v->setSceneData(r.get());
v->realize();
v->run();
}         
QQ截图未命名2.png
QQ截图未命名1.png

该用户从未签到

发表于 2011-8-10 16:58:38 | 显示全部楼层
材质设置的问题吧

该用户从未签到

 楼主| 发表于 2011-8-10 17:03:41 | 显示全部楼层
能说的再详细点吗?新手见谅,谢谢。

该用户从未签到

发表于 2011-8-11 08:31:12 | 显示全部楼层
  1. osg::ref_ptr<osgFX::SpecularHighlights> s = new osgFX::SpecularHighlights
复制代码
这里使用着色器替代了传统管线的材质等功能,因此您自己设置的材质自然无效了。简单起见,初学者可以尽量不用osgFX的内容来设置特效

该用户从未签到

 楼主| 发表于 2011-8-11 08:37:08 | 显示全部楼层
回复 4# array
十分感谢,但是用sds max 做出来的osg模型失去金属的质感,有什么解决的办法吗?osg自身能做到吗?再次感谢。

该用户从未签到

发表于 2011-8-12 08:35:09 | 显示全部楼层
最简单的就是不要加SpecularHighlights这个节点,这样导入的模型肯定还是会保留默认材质设置的,当然实时渲染的质感和offline的总是有差距就是了

该用户从未签到

发表于 2011-9-8 16:28:26 | 显示全部楼层
s->setTextureUnit(1);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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