查看: 1534|回复: 8

学习cookbook渲染cloud的例子遇到的问题

[复制链接]

该用户从未签到

发表于 2012-11-3 18:02:50 | 显示全部楼层 |阅读模式
具体在书p.268,在赋值的时候,初始化相机的位置向量时,为什么_frontVector都取了相关矩阵元素的负值呢,我看的opengl资料都表示m8,m9,m10这三个值组成的向量本身是朝相机正前方的啊,比如
http://www.songho.ca/opengl/gl_transform.html#overview
请王睿大哥解答一下

该用户从未签到

发表于 2012-11-5 10:09:44 | 显示全部楼层
我手头暂时没有书所以不知道您说的p268是什么内容,请给出具体的代码信息
还有我叫王锐,请正确拼写我的名字。。

该用户从未签到

发表于 2012-11-5 15:04:27 | 显示全部楼层
上代码

该用户从未签到

 楼主| 发表于 2012-11-6 08:55:14 | 显示全部楼层
本帖最后由 dqshenfiw 于 2012-11-6 09:04 编辑
array 发表于 2012-11-5 10:09
我手头暂时没有书所以不知道您说的p268是什么内容,请给出具体的代码信息
还有我叫王锐,请正确拼写我的名 ...


sorry,王锐大哥。。。。
代码如下:
struct LessDepthSortFunctor
    {
        LessDepthSortFunctor( const osg::Matrix& matrix )
        { _frontVector.set(-matrix(0,2), -matrix(1,2), -matrix(2,2), -matrix(3,2)); }//这里为什么取的负值?
        
        bool operator()( const CloudCell& lhs, const CloudCell& rhs ) const
        { return getDepth(lhs._pos) > getDepth(rhs._pos); }
        
        float getDepth( const osg::Vec3d& pos ) const
        {
            return (float)pos[0] * _frontVector[0] +
                   (float)pos[1] * _frontVector[1] +
                   (float)pos[2] * _frontVector[2] + _frontVector[3];
        }
        
        osg::Vec4 _frontVector;
    };
这个结构体用在了std::sort中,做的应该是让点云数据按照视点位置做降序的深度排序,以便将点云从远到近做混合叠加;
我不明白的是中间取相机前方向量这个地方,matrix取的是modelviewMatrix,按照opengl的解释,似乎matrix(0,2),matrix(1,2), matrix(2,2), matrix(3,2)所指向量就是前向的向量了,不明白为什么这里会取负值

该用户从未签到

 楼主| 发表于 2012-11-6 08:55:40 | 显示全部楼层
liuzhiyu123 发表于 2012-11-5 15:04
上代码

见ls

该用户从未签到

发表于 2012-11-6 09:09:38 | 显示全部楼层
matrix(0,2),matrix(1,2), matrix(2,2), matrix(3,2) 是照相机坐标系的Z的基向量,而相机是指向Z负方向的

该用户从未签到

 楼主| 发表于 2012-11-6 09:30:42 | 显示全部楼层
liuzhiyu123 发表于 2012-11-6 09:09
matrix(0,2),matrix(1,2), matrix(2,2), matrix(3,2) 是照相机坐标系的Z的基向量,而相机是指向Z负方向 ...

这么说osg的modelview和opengl的modelview矩阵不完全一样了?请问有没有可以参阅的资料,供仔细研究?

该用户从未签到

发表于 2012-11-6 09:44:02 | 显示全部楼层
dqshenfiw 发表于 2012-11-6 09:30
这么说osg的modelview和opengl的modelview矩阵不完全一样了?请问有没有可以参阅的资料,供仔细研究?

为什么不一样

该用户从未签到

 楼主| 发表于 2012-11-6 12:32:07 | 显示全部楼层
liuzhiyu123 发表于 2012-11-6 09:44
为什么不一样

好吧我明白了,就是说相机的方向和z轴是反向的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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