|
本帖最后由 hustlab 于 2013-5-11 20:57 编辑
最近在看OsgOCean的例子,看到小船在水面上荡漾,感觉很不错。可是小船的颜色是白色的,我换了另一个模型,颜色还是白色的,搜了一下解决方法,添加了:
boat->getOrCreateStateSet()->setMode(GL_RESCALE_NORMAL,osg::StateAttribute::ON);
还是没有效果,通过按g键,模型部分有了颜色,另我缩放模型也没有效果!望版主给提供一下解决的思路。
在osgviewer在看的船的效果是:
在osgExample中显示的效果是:
osgoceanExample例子中的这部分代码是:
if (testCollision)
{
osgDB::Registry::instance()->getDataFilePathList().push_back("resources/boat");
const std::string filename = "boatnew.ive"; //boat.3ds
osg::ref_ptr<osg::Node> boat = osgDB::readNodeFile(filename);
if(boat.valid())
{
boat->setNodeMask( scene->getOceanScene()->getNormalSceneMask()
| scene->getOceanScene()->getReflectedSceneMask()
| scene->getOceanScene()->getRefractedSceneMask() );
osg::ref_ptr<osg::MatrixTransform> boatTransform = new osg::MatrixTransform;
boatTransform->addChild(boat.get());
boatTransform->setMatrix(osg::Matrix::scale(osg::Vec3f(20.0,20.0,20.0))*osg::Matrix::translate(osg::Vec3f(-400.0f, 2400.0f,0.0f)));//缩放无效
boatTransform->setUpdateCallback( new BoatPositionCallback(scene->getOceanScene()) );
boat->getOrCreateStateSet()->setMode(GL_RESCALE_NORMAL,osg::StateAttribute::ON);
scene->getOceanScene()->addChild(boatTransform.get());
}
else
{
osg::notify(osg::WARN) << "testCollision flag ignored - Could not find: " << filename << std::endl;
}
}
望遇到此问题的朋友给个提示! |
|