OSG实现正交投影

2019-08-10

  前段时间群里有人问OSG的正交投影怎么实现,似乎不熟悉的同学都陷入错误的思考方式,从而难以把问题想明白。其实,这个功能很简单。只要想明白了,就会豁然开朗,也能对类似的问题有所帮助。OSG内置的manipulator都是为透视投影准备的。但是,CAD程序多数情况下需要使用正交投影。OSG抽象了一个Manipulator类型,鼠标、键盘驱动camera进行交互浏览。其继承层次如下 :

                                  GUIEventHandler
                     CameraManipulator
               StandardManipulator
          OrbitManipulator        
  TrackballManipulator                             

  所以,我们需要继承osgGA::StandardManipulator,实现一个新的manipulator。对于三维场景的操作,主要有三个:zoom、rotate、pan(平移)。要实现正交投影的manipulator,主要也是实现这三个操作的逻辑。这里要提一下,要明确一点,缩放是滑轮驱动的,关于缩放系数,只能自己决定;拖拽、平移,由窗口坐标系的像素单位移动引起,所以,需要把像素距离转换为三维世界的距离。

                                                        

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值