查看: 2951|回复: 4

请教:为什么3D模型看着黑不溜秋的?

[复制链接]

该用户从未签到

发表于 2008-9-2 17:51:01 | 显示全部楼层 |阅读模式
在装入地球模型后,在某一位置放置3D模型,为什么3D模型看着黑不溜秋的?尽管使用了光照,但效果只是使地球看着比较亮,怎样使所有的3D模型都比较亮?
谢谢!

该用户从未签到

发表于 2008-9-2 20:04:49 | 显示全部楼层
模型的法线有没有设置正确?材质的设置是否合理?还有可以设置场景的法线归一化:StateSet::setMode(GL_NORMALIZE, osg::StateAttribute::ON),避免因为法线没有归一处理造成的亮度不均

该用户从未签到

 楼主| 发表于 2008-9-2 23:25:25 | 显示全部楼层

谢谢你。什么是场景的法线归一化?创建光源的代码(不行):

osg::Node* createLights(osg::BoundingBox& bb,osg::StateSet* rootStateSet)
{
    osg::Group* lightGroup = new osg::Group;
   
        // create the light 全局光
        osg::LightSource* lightSource = new osg::LightSource;

        osg::Light* light = lightSource->getLight();

        light->setLightNum(0);
        //light->setPosition(osg::Vec4(0.0f,0.0f,0.0f,0.0f)); // directional light from above
        light->setAmbient(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
        light->setDiffuse(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
        light->setSpecular(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
        //light->setSpotExponent(0);
        //light->setDirection(osg::Vec3(1,1,-1));

        rootStateSet->setAttribute(light, osg::StateAttribute::ON);
       
        osg::StateSet* statelightON_OVRD = lightGroup->getOrCreateStateSet();
        statelightON_OVRD->setAttribute(light, osg::StateAttribute::ON);
        statelightON_OVRD->setMode(GL_NORMALIZE, osg::StateAttribute::ON);

        lightGroup->addChild(lightSource);

    return lightGroup;
}

[[i] 本帖最后由 kinsung 于 2008-9-2 23:26 编辑 [/i]]

该用户从未签到

发表于 2008-9-3 08:56:54 | 显示全部楼层
每个顶点法线的x, y, z的平方和都应等于1。

该用户从未签到

 楼主| 发表于 2008-9-3 20:03:03 | 显示全部楼层

好了,十分感谢!:)

rootStateSet->setAttribute(light, osg::StateAttribute::ON);
        rootStateSet->setAttribute(light, osg::StateAttribute::ON);
        rootStateSet->setMode(GL_NORMALIZE, osg::StateAttribute::ON);



[ 本帖最后由 kinsung 于 2008-9-3 20:15 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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