查看: 1466|回复: 7

viewer.addSlave(camera.get())与viewer.SetCarmera(camera.get());区别?

[复制链接]

该用户从未签到

发表于 2014-8-22 17:33:40 | 显示全部楼层 |阅读模式
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

该用户从未签到

发表于 2014-8-23 09:33:02 | 显示全部楼层
主摄影机和从摄影机的区别

该用户从未签到

 楼主| 发表于 2014-8-25 16:10:24 | 显示全部楼层
fenma3422 发表于 2014-8-23 09:33
主摄影机和从摄影机的区别


啊,主摄像机要怎么设置??? 为啥SetCarmera下,模型会拉长

RECT rect;
::GetWindowRect(hWnd, &rect);
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
osg::ref_ptr<osg::Referenced> windata = new osgViewer::GraphicsWindowWin32::WindowData(hWnd);
traits->x = 0;
traits->y = 0;
traits->width = rect.right - rect.left;
traits->height = rect.bottom - rect.top;
traits->windowDecoration = true;
traits->doubleBuffer = true;
traits->sharedContext = 0;
traits->setInheritedWindowPixelFormat = true;
traits->inheritedWindowData = windata;
osg::GraphicsContext* gc = osg::GraphicsContext::createGraphicsContext(traits.get());
osg::ref_ptr<osg::Camera> camera = new osg::Camera;
camera->setGraphicsContext(gc);
camera->setViewport(new osg::Viewport(traits->x, traits->y, traits->width, traits->height));

double fovy, aspectRatio, zNear, zFar;
fovy = aspectRatio = zNear = zFar = 0.f;
m_viewer.getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
camera->setProjectionMatrixAsPerspective(45,traits->width / traits->height,zNear, zFar);
m_viewer.SetCamera(camera.get());       

该用户从未签到

发表于 2014-8-25 16:43:29 | 显示全部楼层
你参数设置不一样

该用户从未签到

 楼主| 发表于 2014-8-26 15:16:03 | 显示全部楼层
fenma3422 发表于 2014-8-25 16:43
你参数设置不一样

啊!没有呀。最后setcamera换成addslave就拉长了。一样的代码你加个水牛试试

该用户从未签到

发表于 2014-8-26 17:26:20 | 显示全部楼层
addslave后,slave相机会从主相机中获取投影矩阵,这个主相机投影矩阵如果不对,slave肯定会拉长

该用户从未签到

 楼主| 发表于 2014-8-28 13:17:35 | 显示全部楼层
fenma3422 发表于 2014-8-26 17:26
addslave后,slave相机会从主相机中获取投影矩阵,这个主相机投影矩阵如果不对,slave肯定会拉长

setcamera之后就拉长了。addslave不会拉长的。

上面代码就会把水牛拉长。要怎么设置投影矩阵呀?
double fovy, aspectRatio, zNear, zFar;
fovy = aspectRatio = zNear = zFar = 0.f;
m_viewer.getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
camera->setProjectionMatrixAsPerspective(45,traits->width / traits->height,zNear, zFar);

该用户从未签到

发表于 2014-9-9 16:30:39 | 显示全部楼层
投影矩阵要根据viewerport设置不然模型会变形,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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