查看: 630|回复: 0

OpenGL初学者的疑问

[复制链接]

该用户从未签到

发表于 2014-9-11 17:46:53 | 显示全部楼层 |阅读模式
刚看完OSG三维渲染引擎设计与实践的第三章(话说这不才开始么?),顺便注册了个osgchina账号~
有几个问题:
1.OSG的矩阵类是否区分对行向量或者列向量进行变换?
看到书上写着OSG不对行向量和列向量进行区分,那么有这么一个问题
假设有一个向量v,然后定义一个平移矩阵M
行向量乘矩阵:v*M = v1
列向量乘矩阵:M*v = v2
1)首先定义的矩阵式对列向量变换的矩阵还是对行向量变换的矩阵?毕竟两者互为转置矩阵。
2)v1和v2的值相等么?(如果相等的话,向量与矩阵相乘的话,OSG肯定对列向量和行向量相乘做出了一些特殊处理,比如内部先转置,然后相乘)

2.对preMult和postMult相乘的顺序迷迷糊糊的。
1)矩阵和向量相乘
Vec3d preMult(const Vec3d&) const        :v*M
Vec3d postMult(const Vec3d&) const        :M*v
2)矩阵叠加平移,旋转,缩放矩阵
void preMultTranslate(const Vec3d&)        :M*MTranslate
void postMultTranslate(const Vec3d&)        :MTranslate*M
3)矩阵乘矩阵
void preMult( const Matrixd& )        :MParameter*M
void postMult( const Matrixd& )        :M*MParameter
其中M为当前对象,另外一个为参数?如果我书写正确的话,怎么感觉不是那么一致?

3.对矩阵类的有一个函数看不懂
void decompose(Vec3d& translation, Quat& rotation, Vec3d& scale, Quat& so) const
最后的返回参数说是缩放方向,缩放不就是各个坐标x,y,z乘上一个系数么?缩放方向是什么东西?

4.数据数组和索引数组
我感觉数据数据完全可以当索引数组用啊,感觉两者唯一的区别就是索引数据的数据元素分量为1,而且要和整型兼容

5智能指针类模板
有这么一个成员函数:operator T*() const
这个成员函数是用来隐式转换用的,例如
osg::ref<osg::Node> pNode1;
osg::Node *pNode2 = pNode1;
可下边的有一个这样的举例:
osg::Geode *obj1 = *geodePtr;
这里是不是有点问题啊?感觉应该把后边的*去掉~

请各位大神指点啊....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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