查看: 1278|回复: 6

拉动某一顶点

[复制链接]

该用户从未签到

发表于 2010-12-30 10:03:04 | 显示全部楼层 |阅读模式
请教一下 :创建了一个geometry
用射线与其求交后改变交点的高度,第一次没有问题,但以后该点(或者好多点)就再也交不住了,也就是点鼠标时不能相交,也无法再继续拉高,如何解决?
非常感谢

该用户从未签到

发表于 2010-12-30 10:29:04 | 显示全部楼层
印象中 osg里没有提供 直接控制顶点的移动的    基本上都是控制一整个的节点

关注~~

该用户从未签到

 楼主| 发表于 2010-12-30 10:49:58 | 显示全部楼层
我把图发上来
图中那些拉高的地方就再也选不中了
生成地面代码:
for (unsigned int i=0;i<GRIDWIDTH;i+=10)
{
    for (unsigned int j=0;j<GRIDWIDTH;j=j+10)
    {
coords->push_back(osg::Vec3(i,j,0));
texCoord->push_back(osg::Vec2(i/GRIDWIDTH,j/GRIDWIDTH));
    }
}
osg::ref_ptr<osgUtil:elaunayTriangulator> dt
=new osgUtil::DelaunayTriangulator(coords.get());
dt->triangulate();
osg::StateSet* stateSet=new osg::StateSet();
osg::ref_ptr<osg::Geometry> geometry=new osg::Geometry();
  
geometry->setVertexArray(coords.get());
geometry->addPrimitiveSet(dt->getTriangles());
geometry->setUseDisplayList(false);
//geometry->setUseVertexBufferObjects(true);
geometry->setTexCoordArray(0,texCoord.get());
……
terrain0.JPG

该用户从未签到

发表于 2010-12-30 15:51:36 | 显示全部楼层
从您的代码中看不出什么问题,不清楚您目前的问题是什么

该用户从未签到

 楼主| 发表于 2010-12-30 18:16:22 | 显示全部楼层
4# FlySky

非常感谢您
其实我就是看你的书学习哩,现在上面的问题终于解决了

我想再请教另一个问题:
还是3楼中的 geometry,我不断用texture->setImage(image.get())  来改变(我用image->data() 不断改变image像素的颜色),结果内存一直上升,直到溢出。请问一下怎么释放掉image?

非常感谢

该用户从未签到

发表于 2010-12-30 20:27:02 | 显示全部楼层
更新回调修改就可以了,没有必要每次都赋值~~~~~~

该用户从未签到

 楼主| 发表于 2010-12-30 21:23:24 | 显示全部楼层
6# FlySky
好的 谢谢 我试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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