游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1213|回复: 1

提问一个坐标系变换的菜鸟问题

[复制链接]

6

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2005-1-9 13:47:00 | 显示全部楼层 |阅读模式
为了实现一个炮口的粒子效果
需要建立一个将炮口的本地坐标系转换到世界坐标系的变换矩阵

我的思路::(矩阵形式符合D3D标准,以下以v为前缀说明变量为向量,以mat为前缀说明向量为矩阵)

1.先建立炮口的本地坐标系
v炮口-v炮管底=v本地坐标Y
v设立的向上向量 叉乘 v本地坐标Y = v本地坐标X
v本地坐标X 叉乘 v本地坐标Y = v本地坐标Z

2.以其填充一个变换矩阵----将世界坐标系变换到炮口本地坐标的矩阵

                            |  v本地坐标X.x     v本地坐标Y.x    v本地坐标Z.x    0  |
matWorldToLocal = |  v本地坐标X.y     v本地坐标Y.y    v本地坐标Z.y    0  |
                            |  v本地坐标X.z     v本地坐标Z.z     v本地坐标Z.z    0  |
                            |  -v炮口坐标.x      -v炮口坐标.y     -v炮口坐标.z     1  |

3.用D3D的help函数D3DXMatrixInverse( &matLocalToWorld , NULL , &matWorldToLocal);
进行逆阵变换

求出的matLocalToWorld应该是将炮口本地坐标搬移到世界坐标的变换矩阵,但是效果却不能达到~~
我的思路哪里错了呢???



13

主题

97

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2005-1-10 11:28:00 | 显示全部楼层

Re:提问一个坐标系变换的菜鸟问题

看得头晕,我觉得可能是这样:
首先炮口有炮口相对于炮本身的坐标---坐标。
然后炮有自己的世界矩阵mat,因为炮有位移和旋转。
的41 42 43就是炮的世界位置。
炮口的坐标可以用就是d3dx的那个transfromcoord函数,就是coord1*mat,向量和矩阵相乘。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 00:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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