zoukankan      html  css  js  c++  java
  • OSG坐标系统

    1、世界坐标
            世界坐标系描述的是整个场景中所有的对象,可以理解为绝对坐标系,所有对象的位置都是绝对坐标。从整体上考虑,它为所有对象的位置提供一个绝对的参考标准,从而避免了物体之间由于独立的物体坐标系而导致的坐标系混乱。

    2、物体坐标系

            每一个物体都有自己的坐标系,当物体发生交换时,实际上是它本身的坐标系相对于世界坐标系发生变换的过程。
            物体坐标系通常描述的问题是特定物体的内部对象,主要包括物体的顶点,物体的法向量和物体的方向。

    3、摄像机坐标系

            摄像机坐标系与屏幕坐标系类似,只不过摄像机坐标系位于3D空间,而屏幕坐标系位于2D空间。


     
     
    OSG的坐标系:X正方向向右,Y正方向朝里,Z正方向朝上。
     
     
    *****坐标系变换*****
    》》物体坐标系->世界坐标系
           #-> 计算场景中某一特定节点在世界坐标系下的坐标,只需要将该节点的根结点和该节点之间的所有变换矩阵相乘即可。
           #->实现方式:
                        回调,访问器等;
                        访问器是一种方便可操控的方式,相对而言,回调在一定程度上不具备课操控性,且会因为增加额外开销而影响渲染 效率。
                    $->访问器的实现:
                        访问器通过遍历的方式记录场景中节点的路径,并计算路径上矩阵变换的世界坐标,最终返回一个矩形式表示的世界坐标,下面是《OpenSceneGraph三维渲染引擎编程指南》中的示例代码:
                        clipboard
                        
                        
                        clipboard
     
     
     
     
    *****屏幕坐标->世界坐标*****
                          
     
     
     
    OSG中国区论坛上http://bbs.osgchina.org/forum.php?mod=viewthread&tid=4240&highlight=%BD%DA%B5%E3%2B%CA%C0%BD%E7%D7%F8%B1%EA关于获得根结点下某个子节点的世界坐标,Array给的回答:
                            geode->getBound().center() * osg::computeLocalToWorld(geode->getParentalNodePaths()[0])      //经测试,可行
    可以获得子节点的世界坐标,据说是最简单的方法。
  • 相关阅读:
    刷题第一天各种蒙圈
    如何用MATLAB读stl并显示点云文件
    MATLA总结三
    word里如何将模板的样式(标题啊、字体啊)导入到另外的模板里
    Asp.Net跨平台:Ubuntu14.0+Mono+Jexus+Asp.Net
    Newtonsoft.Json输出Json时动态忽略属性
    Redis 系列 (一) StackExchange.Redis的使用
    jquery选择器如何获取父级元素、同级元素、子元素
    多线程的应用小结
    nginx1.18支持http2.0
  • 原文地址:https://www.cnblogs.com/xiaocainiao2hao/p/5619944.html
Copyright © 2011-2022 走看看