osg导入模型时,模型全黑的原因及解决方法分析

30 篇文章 4 订阅
21 篇文章 4 订阅

在导入飞机模型时,发现模型是黑咕隆咚一片,然后翻阅资料,找到三个可能性。

(一)几何模型没有法线导致

利用osgUtil::SmoothingVisitor自动生成法线

	#include <osgUtil/SmoothingVisitor>
	osg::ref_ptr<osg::Geometry> houseRoof = new osg::Geometry;
    osgUtil::SmoothingVisitor smv;
    smv.smooth(model);

(二)模型放大缩小导致

放大缩小后,法线不会跟着变化,因此需要进行设置,如下:

    //添加模型
    osg::Node* model = osgDB::readNodeFile("cessna.osg");
	osg::MatrixTransform* mtFlySelf = new osg::MatrixTransform;//用于调整模型本身的姿态
	mtFlySelf->addChild(model);
	mtFlySelf->getOrCreateStateSet()->setMode(GL_RESCALE_NORMAL, osg::StateAttribute::ON);

(三)没有给模型添加光源导致

之前我一直以为模型的光源是跟着地表的灯光,默认添加的,现在发现并不是。可以添加八个光源,我添加了两个。

    mtFlySelf->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::ON);
    mtFlySelf->getOrCreateStateSet()->setMode(GL_LIGHT0,osg::StateAttribute::ON);
    mtFlySelf->getOrCreateStateSet()->setMode(GL_LIGHT1,osg::StateAttribute::ON);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼月半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值