游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3686|回复: 8

[求助]3D转换的问题

[复制链接]

6

主题

20

帖子

35

积分

注册会员

Rank: 2

积分
35
QQ
发表于 2007-11-15 23:36:00 | 显示全部楼层 |阅读模式
    D3DXMatrixIdentity matTemp
    D3DXMatrixRotationZ matTemp, RotateAngle * (pi / 180)
    D3DXMatrixMultiply matWorld, matWorld, matTemp
   
      
    D3DDevice.SetTransform D3DTS_WORLD, matWorld
为什么我在顶点反冲区的所有物体都饶0,0,0这个坐标点转了啊? [em4]

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2007-11-16 11:21:00 | 显示全部楼层

Re:[求助]3D转换的问题

为什么饶0,0,0这个坐标点转,因该是饶Z轴旋转吧!因为你的世界变换中有写到旋转啊:
D3DXMatrixRotationZ matTemp, RotateAngle * (pi / 180)

6

主题

20

帖子

35

积分

注册会员

Rank: 2

积分
35
QQ
 楼主| 发表于 2007-11-16 19:55:00 | 显示全部楼层

Re:[求助]3D转换的问题

可是如何饶其他点转呢?如何让两个物体一个顺时针,一个逆时针转?

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2007-11-17 09:57:00 | 显示全部楼层

Re:[求助]3D转换的问题

饶其他点转就不要选择MatrixRotationZ,"两个物体一个顺时针,一个逆时针转"这个只要让一个角度(如RotateAngle)是不断的减小,另一个不断的增加.(可以有个上限"+-2*PI")

6

主题

20

帖子

35

积分

注册会员

Rank: 2

积分
35
QQ
 楼主| 发表于 2007-11-18 21:04:00 | 显示全部楼层

Re:[求助]3D转换的问题

哥哥,能不能给个列子
两个数组,一个AT(30),一个BT(30)
让AT(30)所画的图饶(-100,0,0)顺时针旋转(转角1度)
BT(30)所画的图饶(100,0,0)逆时针旋转(转角一度)
该怎么做呢?
给点核心代码可以吗?
拜托拜托了

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2007-11-20 18:43:00 | 显示全部楼层

Re:[求助]3D转换的问题

真的很抱歉,我也不太清楚,我一直动在用的是托管下的DirectX(并且学的很烂) 非托管的我不了解 所以也不敢乱说,不过你应该先要了解 在3D世界里的几个常用的变换,一般都是用个4元素来乘上一个 4*4的矩阵达到单个变换或者混合变换的效果.
4元素分别为X,Y,Z坐标加上一个用来控制位移的值,如果是点那这个值应该是1(这样点才可一位移),如果是向量那这个值就应该是0(不让向量产生偏移)
例如:点(x,y,z,1)如果让它位移的话就应该乘上矩阵|1,0,0,0|
                                              |0,1,0,0|
                                              |0,0,1,0|
                                              |p,q,r,1|
就可以得到(x+p,y+q,z+r,1)经过平移的点
在例如:点(x,y,z,1)如果让它缩放的话就应该乘上矩阵|p,0,0,0|
                                                |0,q,0,0|
                                                |0,0,r,0|
                                                |0,0,0,1|
也就是得到了点(x*p,y*q,z*r,1)的新点!
值得一说的是如果你学过高等数学应该知道的,矩阵的乘法是分先后的,混合变换如果顺序不同产生的效果是不同的这是和矩阵的乘积是有关的!
在这里我知识说了点基础的,如果不明白可以看看高等数学,在3D游戏编程中矩阵变换是很重要的(包括矩阵求逆)
还有很多数学上的如平面,向量的一些基本运算,在则到了一些经典的算法和公式如"噪波","映射","光的辐射模拟算法"等(其实我都不懂这些算法的!~ -_-!)
哎!~最后提醒你 VB 的教程真的很少!~

6

主题

20

帖子

35

积分

注册会员

Rank: 2

积分
35
QQ
 楼主| 发表于 2007-11-20 23:21:00 | 显示全部楼层

Re:[求助]3D转换的问题

5555555555555555555555555555555
为什么这么少人支持VB写游戏??????????
太可恶可恶
不过矩阵我还真地是不懂..
谢谢哥哥了

7

主题

87

帖子

109

积分

注册会员

Rank: 2

积分
109
QQ
发表于 2007-11-22 15:17:00 | 显示全部楼层

Re:[求助]3D转换的问题

建议仔细阅读一下DXSDK里的文档.矩阵变换是有顺序的,在一个矩阵变换的乘法中,*左边的矩阵先变换*右边矩阵在左矩阵变换的基础上再变换.
你的程序:
    D3DXMatrixIdentity matTemp
    D3DXMatrixRotationZ matTemp, RotateAngle * (pi / 180)
最后一句写翻了: D3DXMatrixMultiply matWorld, matWorld, matTemp,这是先用matWorld变换,后用matTemp变换.系统先用matWorld把模型变换到世界坐标系了,再用matTemp旋转就成了绕世界坐标系的Z旋转了.
正确的是写成: D3DXMatrixMultiply matWorld, matTemp, matWorld,这样模型会先绕自己的Z旋转,然后用matWorld变换到世界坐标系.

6

主题

20

帖子

35

积分

注册会员

Rank: 2

积分
35
QQ
 楼主| 发表于 2007-12-23 10:34:00 | 显示全部楼层

Re:[求助]3D转换的问题

感激楼上的,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 19:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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