查看: 2193|回复: 12

请教模型表面顶点网格化的问题!

[复制链接]

该用户从未签到

发表于 2009-9-23 17:55:40 | 显示全部楼层 |阅读模式
小弟最近在做一个实验,想在任意一个模型的表面进行线段和模型的求教,随即扫描出一组x,y,z方向间隔均匀的顶点(间隔的理想值是1.0),使用的是osgUtil:ineSegmentIntersector,但是这样的话,对于一个很大的模型来数将耗费将是很可怕的,请问一下大家在osg中如何快速的求交点?所用时间越短越好!

该用户从未签到

发表于 2009-9-23 19:15:33 | 显示全部楼层
你可以用类似kdtree的方式来加速检测~~~

该用户从未签到

发表于 2009-9-23 23:57:40 | 显示全部楼层
LineSegmentIntersector的效率比您想象中的要高,由于OSG场景采用BVH树的结构,因此检测过程中无用对象的剔除是很快的,真正参与到计算的网格不会太多。此外也可以使用内置的KDTree选项来大大加速这一进程

该用户从未签到

 楼主| 发表于 2009-9-24 21:32:53 | 显示全部楼层
请问一下,LineSegmentIntersector能否实现这样的功能:先存储一些列的线段列表,然后同时求出这些线段与节点的交点,而不是一次一次求每条线段与节点的交点,谢谢!

该用户从未签到

发表于 2009-9-24 23:07:13 | 显示全部楼层
LineSegmentIntersector没有这样的机制,不过您完全可以自己实现一个Intersector的派生类,并不复杂

该用户从未签到

 楼主| 发表于 2009-9-25 14:20:56 | 显示全部楼层
本帖最后由 上帝的左手 于 2009-9-25 15:03 编辑

能否请array指点一下?
    我的目的就是不想每一次求线段与节点交点时都执行:节点名->accept(IV),因为这样太耗时间,我只想执行一次:节点名->accept(IV),就求出所有与线段的交点。

该用户从未签到

发表于 2009-9-25 15:30:14 | 显示全部楼层
您是什么意思?节点名->accept就是求取线段与整个子树的交点

该用户从未签到

 楼主| 发表于 2009-9-25 15:41:41 | 显示全部楼层
呵呵,我的意思是:加入我有十条线段,只想执行一次 节点名->accept  ,一次性求出该节点与这十条线段的所有交点,我现在的方法是每设定一条线段就执行一次 节点名->accept  ,总共要执行十次 节点名->accept操作  

该用户从未签到

发表于 2009-9-25 16:09:01 | 显示全部楼层
如我之前所说,您完全可以自己实现一个Intersector的派生类。我自己实现过类似的检测工具

该用户从未签到

 楼主| 发表于 2009-9-25 16:17:54 | 显示全部楼层
请array能否再详细点?有没有具体的参考工程或者文件?

该用户从未签到

发表于 2009-9-25 16:58:46 | 显示全部楼层
抱歉我的实现代码是不能公开的。不过我觉得Intersector类及其派生类的代码就可以说明一切了

该用户从未签到

 楼主| 发表于 2009-9-25 19:07:25 | 显示全部楼层
谢谢 array,我再看看!

该用户从未签到

发表于 2009-9-30 23:44:46 | 显示全部楼层
按你说的。IntersectVisitor 应该提供多条线段的检测。。
不过array说的确实是最实用的方法了。派生起来也不是很难。只要实现相关的几个函数就行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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