游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2669|回复: 7

OpenGL中的万能组合距阵变换如何在d3d中实现?

[复制链接]

11

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2004-12-11 18:46:00 | 显示全部楼层 |阅读模式
                glTranslatef(position[0],position[1],position[2]);
                glTranslatef(centerd[0],centerd[1],centerd[2]);

                glRotatef(rotateAngle,axis[0],axis[1],axis[2]);
                glRotatef(ScaleRotateAngle,Saxis[0],Saxis[1],Saxis[2]);
                glScalef(scalef[0],scalef[1],scalef[2]);         
                glRotatef(0-ScaleRotateAngle,Saxis[0],Saxis[1],Saxis[2]);
                glTranslatef(0-centerd[0],0-centerd[1],0-centerd[2]);

以上代码构成了一个几乎可以完成任何变换的距阵变换,
position表示位置的变换,即位移
centerd表示旋转,缩放的中心
ScaleRotateAngle,Saxis,构成缩放的方向
scalef显然表示缩放系数。
请问如何在D3D实现上面的功能??

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2004-12-11 20:03:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

opengl的万能变换距阵是这样哦^_^
glMultMatrixd(.................................)

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-12-11 21:01:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

d3d差不多嘛?

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-12-11 21:52:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

D3D的坐标系跟OPENGL不同,而且处理方式也不同

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2004-12-11 21:53:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

变换阵是一样的哟

11

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2004-12-11 22:08:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

        mat.translate((translation.getValue())[0],(translation.getValue())[1],(translation.getValue())[2]);
        mat.translate((center.getValue())[0],(center.getValue())[1],(center.getValue())[2]);

        mat.rotate((rotation.getValue())[0],(rotation.getValue())[1],(rotation.getValue())[2],(rotation.getValue())[3]);
        mat.rotate((scaleOrientation.getValue())[0],(scaleOrientation.getValue())[1],(scaleOrientation.getValue())[2],(scaleOrientation.getValue())[3]);

        mat.scale((scale.getValue())[0],(scale.getValue())[1],(scale.getValue())[2]);

        mat.rotate((scaleOrientation.getValue())[0],(scaleOrientation.getValue())[1],(scaleOrientation.getValue())[2],0-(scaleOrientation.getValue())[3]);
        mat.translate(0-(center.getValue())[0],0-(center.getValue())[1],0-(center.getValue())[2]);

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2004-12-12 16:43:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

我也比较困惑.
因为左右手系不同,生成的MATRIX相差很多符号.
另外我想问一个数学问题,在右手系 向量外积(叉积) 由右手确定方向,在左手系 应该是用左手吧???

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2004-12-12 16:58:00 | 显示全部楼层

Re:OpenGL中的万能组合距阵变换如何在d3d中实现?

我写错了
变换距阵是一样的,但还是转置了一下

叉乘方向都是右手定则吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 16:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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