|
本帖最后由 feixue 于 2011-11-11 17:50 编辑
请教高手两个问题:
1. 参照以前的帖子(全图显示怎么计算?),我通过下面的代码实现,没有任何效果,如果改变fovy的大小,会有效果,想请教这个变量与场景包围盒有什么关系,如何计算。
我的程序结构:Viewer.realize到MFC的窗口上,Viewer的相机中是KeySwitchMatrixManipulator,之中放了一个TrackballManipulator,相机的初始化使用了setProjectionMatrixAsPerspective()。下面的代码是在一个自定义的NodeVisitor中,场景中只有一个半径为0.5的Sphere。
void apply(Camera& node)
{
double fovy, aspectRatio, zNear, zFar;
node.getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
osg::BoundingSphere bs;// = m_root->getBound();
bs.set(osg::Vec3(), 0.8f);
double distance = bs.radius() * 2.0f;
zNear = distance - bs.radius();
zFar = distance + bs.radius();
node.setProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
}
2. OSG有现成的AutoCubeAxis对象吗?如果没有,哪位大牛给个实现思路。下面是OpenInventor自带的AutoCubeAxis截图。
autocubeaxis1
autocubeaxis2
|
|