查看: 1174|回复: 6

用Geometry生成实体显示问题

[复制链接]

该用户从未签到

发表于 2011-9-4 14:43:52 | 显示全部楼层 |阅读模式
我用geometry生成球体,长方体,圆柱体,看起来没有shapedrawable生成的好看,真实,比如说球体geometry看起来不像球体,像个圆,有部分显示比较暗,长方体轮廓也不是很明显,而shapedrawable生成的球体,长方体看起来就比较真实,也没有变暗的地方, 这是为什么?与材质和灯光有关吗?变暗是什么原因?我已经设置法线归一化了

该用户从未签到

发表于 2011-9-5 09:01:31 | 显示全部楼层
您都没有给出自己生成球的代码。。。我如何判断??

该用户从未签到

 楼主| 发表于 2011-9-5 09:28:21 | 显示全部楼层
就是按照书上写的 geometry类写的生成一个长方体,顶点法线使用Smoothvisitor计算的,其它没做任何设置
另外我再问一个问题哦,做渲染的时候是Geometry还是继承shape使用OpenGL渲染,哪个渲染效率高呢?如果要显示nurbs曲线和nurbs曲面,用哪种比较好呢?

该用户从未签到

 楼主| 发表于 2011-9-5 20:17:42 | 显示全部楼层
回复 2# array


#include <osg/Camera>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osgGA/TrackballManipulator>
#include <osgUtil/SmoothingVisitor>

osg::ref_ptr<osg::Geode> CreateCuboid()
{

osg::ref_ptr<osg::Geode> geode=new osg::Geode;


osg::ref_ptr<osg::Geometry> geom=new osg::Geometry;


osg::ref_ptr<osg::Vec3Array> vector=new osg::Vec3Array;

vector->push_back(osg::Vec3(0,0,1));

vector->push_back(osg::Vec3(0,0,0));


vector->push_back(osg::Vec3(1,0,1));

vector->push_back(osg::Vec3(1,0,0));


vector->push_back(osg::Vec3(1,1,1));

vector->push_back(osg::Vec3(1,1,0));


vector->push_back(osg::Vec3(0,1,1));

vector->push_back(osg::Vec3(0,1,0));


vector->push_back(osg::Vec3(0,0,1));

vector->push_back(osg::Vec3(0,0,0));

geom->setVertexArray(vector);


geom->addPrimitiveSet(new osg:rawArrays(osg::DrawArrays:UAD_STRIP,0,vector->size()));

osg::ref_ptr<osg::DrawElementsUInt> dui=new osg::DrawElementsUInt(osg::DrawArrays::QUADS,8);

dui->push_back(0);dui->push_back(2);dui->push_back(4);dui->push_back(6);

dui->push_back(1);dui->push_back(3);dui->push_back(5);dui->push_back(7);

geom->addPrimitiveSet(dui);

geode->addDrawable(geom);

osgUtil::SmoothingVisitor smv;

smv.apply(*geode);

return geode;
}
int main( int argc, char** argv )
{

osg::ref_ptr<osgViewer::Viewer> viewer =new osgViewer::Viewer;

osg::ref_ptr<osg::Group> root =new osg::Group;

root->addChild(CreateCuboid());

viewer->setSceneData(root);

return viewer->run();
}
   

正面

正面

反面

反面
为什么直接使用shapedrawable就不会有这问题?材质和灯光如何设置呢?

该用户从未签到

发表于 2011-9-6 08:50:44 | 显示全部楼层
我尝试直接用您的代码构建模型,得到了一个正常的立方体,没有发现变黑的问题

该用户从未签到

 楼主| 发表于 2011-9-6 09:30:54 | 显示全部楼层
我是在MFC框架下实现的,这就很奇怪了,也有其它人遇到过这样的问题的,不知道怎么回事

该用户从未签到

发表于 2011-9-7 08:37:27 | 显示全部楼层
这与GUI不会有什么关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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