查看: 2013|回复: 6

osgEXP导出的摄像机如何使用

[复制链接]

该用户从未签到

发表于 2009-9-4 23:30:53 | 显示全部楼层 |阅读模式
今天想起研究摄像机,就是osgEXP导出的摄像机。经过分析,从osgEXP导出的摄像机显示的是:   MatrixTransform {
      UniqueID MatrixTransform_11
      DataVariance STATIC
      name "Camera02.Target"
      nodeMask 0xffffffff
      cullingActive TRUE
      referenceFrame RELATIVE
      Matrix {
        1 0 0 0
        0 1 0 0
        0 0 1 0
        -5.61475 3.97997 14.6731 1
      }
      num_children 1
      Geode {
        UniqueID Geode_12
        DataVariance STATIC
        nodeMask 0xffffffff
        cullingActive TRUE
        num_drawables 0
      }
    }
  }
如上代码。而在OSG中创建的摄像机是如下代码:
Camera {
    nodeMask 0xffffffff
    cullingActive TRUE
    StateSet {
      rendering_hint DEFAULT_BIN
      renderBinMode INHERIT
    }
    referenceFrame RELATIVE
    clearColor 0 0 0 1
    clearMask 0x4100
    transformOrder PRE_MULTIPLY
    ProjectionMatrix {
      1 0 0 0
      0 1 0 0
      0 0 1 0
      0 0 0 1
    }
    ViewMatrix {
      1 0 0 0
      0 1 0 0
      0 0 1 0
      0 0 0 1
    }
    renderOrder POST_RENDER
    renderTargetImplementation FRAME_BUFFER
    renderTargetFallback FRAME_BUFFER
    drawBuffer 0
    readBuffer 0
  }
显然此物非彼物!本人在研究当中,如有兴趣者共同讨论。

该用户从未签到

发表于 2009-9-5 00:13:46 | 显示全部楼层
我个人不认为从3dsmax中导出摄像机有什么用处,难道为每个摄像机新建一个图形窗口?我想osgExp的开发者也是出于这种考虑,才把摄像机视为普通的空间变换节点处理的。

该用户从未签到

 楼主| 发表于 2009-9-5 16:16:46 | 显示全部楼层
我计划使用osgEXP导出的摄像机节点的位置,在添加创建的摄像机。问题是:开始的摄像机和后建的摄像机总是切换不正确。后建的摄像机里什么都没有,在view里的场景不显示在新的摄像机里!有点麻烦了。

该用户从未签到

发表于 2009-9-5 19:59:00 | 显示全部楼层
那应该是addChild没有把子场景包含在后面的摄像机的缘故,您需要自己编写代码来实现这样的功能

该用户从未签到

 楼主| 发表于 2009-9-5 23:32:18 | 显示全部楼层
我已经m_pViewer->setSceneData(m_pRoot),按理说场景已经有了,camera还要用addChild()。能说的详细点吗?

该用户从未签到

发表于 2009-9-6 09:49:34 | 显示全部楼层
Camera节点显示的总是它的场景子树的内容,即,使用addChild添加给这个Camera的内容;用setSceneData设置给Viewer的场景,实际上被添加到视景器的默认摄像机上,即viewer.getCamera()

该用户从未签到

 楼主| 发表于 2009-9-7 10:36:09 | 显示全部楼层
我看了osgViewer::View,确实像阿Ray说的那样。以前只知其然,不知所以然。还是要看看底层的东西,现在搞定了。谢谢阿Ray
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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