OSG Examples(osgintersection)解析

本文详细解析osg中LineSegmentIntersector如何处理具有LOD和PagedLOD功能的节点的相交计算,特别是osgSim库中的lightOfSight、HeightAboveTerrain和ElevationSlice特效类。通过DatabaseCacheReadCallback保证精确度,并利用computeIntersections()方法进行相交计算,涉及PageLOD节点的处理和四叉树划分的相交算法。
摘要由CSDN通过智能技术生成

 

       本例子主要是讲解在osg中怎么使用线相交(LineSegmentIntersector),来计算与地形等具有lod以及pagelod功能节点的交点。对于普通节点的相交计算使用LineSegmentIntersector就可以得到所有的交点信息,但是对于具有lod功能的节点普通的线相交计算只能计算到与当前lod等级的节点的交点信息,更高lod等级的更加精确的交点信息是得不到的。Osg为了提供类似的功能,在osgSim中定义了几种特殊的相交计算lightOfSight、HeightAboveTerrain、ElevationSlice。这三种特效类怎么去计算与更高lod等级节点的交点信息呢,我们需要深入到对应类的源码中进行探究。

osgintersection.exe 的运行效果就是在场景中绘制一系列的相交线,与输入节点做相交计算,输出所有的交点信息和计算时间。

intersection

使用方法

osgintersection.exe cow.osg

这里应该把cow.osg替换成一个terrain的模型。

重点理解内容

1、DatabaseCacheReadCallback类

在osgSim中定义的三种特殊的相交计算类(lightOfSight、HeightAboveTerrain、ElevationSlice)都需要传递一个回调类---DatabaseCacheReadCallback。它继承自ReadCallback,在相交计算的时候,遇到的节点类型为PageLOD,此时如果当前PageLOD不是精度最高的节点,这样计算的结果就不是最精

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值