游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3277|回复: 5

OpenGL中的ModelView矩阵如何成D3DTS_VIEW?

[复制链接]

2

主题

13

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2010-6-18 17:05:00 | 显示全部楼层 |阅读模式
昨天看了ARToolKit,感觉蛮有意思的。
想把它转成DirectX程序,但渲染时模型视图矩阵转换不正确,望高手赐教!

    glMatrixMode(GL_MODELVIEW);
    glLoadMatrixd( m );
    。。。
    。。。
    glMatrixMode(GL_MODELVIEW);
    glTranslatef( 0.0, 0.0, 25.0 );
    glutSolidCube(50.0);
我的想法是m[16]实际上就是D3D的D3DTS_World和D3DTS_View的乘积,
按照OpenGL列主序原则,其矩阵应是:
m0,m4,m8,m12
m1,m5,m9,m13
m2,m6,m10,m14
m3,m7,m11,m15
该如何转成左手坐标系?尝试过转置 [em22] [em4]

227

主题

1794

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2010-6-20 11:14:00 | 显示全部楼层

Re:OpenGL中的ModelView矩阵如何成D3DTS_VIEW?

行列交换

2

主题

13

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2010-6-21 09:09:00 | 显示全部楼层

Re:OpenGL中的ModelView矩阵如何成D3DTS_VIEW?

行列交换应该只是获取到了数学意义上的模型视图矩阵,
但左右手坐标系怎么转换呢? 实际上左右手坐标系也就是Y,Z轴互换个位置(或者该说翻转Z轴),但我将左手坐标系的模型视图矩阵中的旋转矩阵再绕X轴旋转90度,但还是不对……

227

主题

1794

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2010-6-21 11:11:00 | 显示全部楼层

Re:OpenGL中的ModelView矩阵如何成D3DTS_VIEW?

绕X轴旋转-90试试看

2

主题

13

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2010-6-22 16:52:00 | 显示全部楼层

Re:OpenGL中的ModelView矩阵如何成D3DTS_VIEW?

谢谢oz01答复!
按http://bbs.gameres.com/showthread.asp?threadid=75076说的

将左手系变成右手系要分两步,至于不懂为什么要这样,建议你在去学习卡笛尔坐标系
step 1:rightHand.x=leftHand.x;
       rightHand.y=leftHand.y*-1.0f;
       rightHand.z=leftHand.z;
step 2:旋转WorldMatrix (绕X轴) D3DX_PI/-2.0f

第二步应该是旋转-180度吧,那从左手换成右手自然就是旋转180度了
可惜结果还是不对,  郁闷啊!

227

主题

1794

帖子

1866

积分

金牌会员

Rank: 6Rank: 6

积分
1866
发表于 2010-6-27 20:49:00 | 显示全部楼层

Re:OpenGL中的ModelView矩阵如何成D3DTS_VIEW?

我记得应该是-90
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 13:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表