|
由于近期一个项目的需求,使用osg引擎完成3D图形渲染,遇到以下问题.
由于项目需求,渲染的场景必需要求,摄像机不动,场景旋转,平移.所以在所有场景节点以上加入了一个MatrixTransform节点用于处理.
但在场景中用到了TranslateAxisDragger(平移拖拽器)和TrackballDragger(旋转拖拽器),因此这两个拖拽器也是直接接受最上层的那
个MatrixTransform变换的,但明确在拖拽器与控制场景变换的节点之间再没有其它变换.
现在的问题是,使用上面所说的两个拖拽器时,如果上层MatrixTransform节点没有任何变换的情况下,拖拽是正常的.但如果上层MatrixTransform
产生的旋转操作后,拖拽器操作就会产生问题,比如场景MatrixTransform节点当前绕Y轴旋转90度的情况下,用拖拽器向面向摄像机的方向移动时,
物体会向左方向移动(相当于拖拽器产生的平移也旋转的90度,因此推断,拖拽器产生的变换是叠加了场景节点的变换的),现物体的变换矩阵是直接
放入拖拽器托管的
m_pTranslateDragger->addTransformUpdating(m_pUpdateMat.get());
m_pRotateDragger->addTransformUpdating(m_pUpdateMat.get());
由于本人对osg只是刚刚接触,所以不太明白,请问要怎么样才能产生不带场景的节点变换的矩阵(也就是拖拽器的相对变换)?谢谢!
|
|