游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2510|回复: 3

求助:模型坐标如何变换到世界坐标

[复制链接]

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2006-8-24 19:48:00 | 显示全部楼层 |阅读模式
记得是用模型视点矩阵乘上模型坐标
float ModelViewMatrix[16];
glGetFloatv(GL_TRANSPOSE_MODELVIEW_MATRIX, ModelViewMatrix);

|newX|                                    |X|
|newY|  =  ModelViewMatrix * |Y|
|newZ|                                     |Z|
|    1  |                                     |1|
但是算出来的结果不对, 我把ModelPos设为(0.0f, 0.0f, 0.0f), 这样可以很轻松的口算出模型中的点在世界坐标中的值, 但用程序求出来的却差的太多了.

是只乘上模型视点矩阵吗? 还是还要乘上Projection矩阵?
如果还要乘Projection矩阵的话, 是现乘它们两个哪一个?

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
 楼主| 发表于 2006-8-24 21:43:00 | 显示全部楼层

Re:求助:模型坐标如何变换到世界坐标

自己顶一下

6

主题

60

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2006-8-25 20:46:00 | 显示全部楼层

Re: 求助:模型坐标如何变换到世界坐标

模型到世界座????是
PM*VM*WM*V..
WM=世界??Q(位移*?放*旋?)
VM=?z影?C空?(在DX向?硎鞘澜缇仃?的反矩?..??r?z影?C???作在原?它的三??世界三?平行)
PM=?要查一下???Projection Matrix)
不知道 ??邮欠裼绣e
我?W?是??拥 [em7]

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
 楼主| 发表于 2006-8-26 14:09:00 | 显示全部楼层

Re:求助:模型坐标如何变换到世界坐标

谢谢, 但我还不是很明白,可能是对矩阵名称的描述不一样吧.
你说的WM应该是我说的模型矩阵(Model Matrix)即模型相对于世界坐标系的变换矩阵
VM应该是视点矩阵(View Matrix), 即摄像机位置和角度的矩阵

如果是这样,那么你说的方法求出来的应该是裁剪坐标,
我已经知道原理上怎么将模型坐标变换到世界坐标了, 就是对模型的坐标乘以Model Matrix,这样就可以求出该点在3维场景中的绝对坐标(就是世界坐标), 但是OpenGL会把Model Matrix和
View Matrix(视点矩阵)给合起来成为Model View Matrix, 用查询函数也只能得到这个矩阵.
这样求得的坐标就不是世界坐标了, 而是"视点坐标", 据我猜测应该是以摄像机的位置为原点的坐标系中的坐标, 不知对不对, 那么如何出去摄像机对坐标的影响, 直接求得世界坐标呢?

我现在用的是一种很苯的方法, 先保存当前矩阵, 然后将当前矩阵清空为单位矩阵(这样就等于消除了View Matrix的影响, 将View Matrix 还原成为了默认状态, 此时它与世界坐标系完全重合),  再进行模型变换(如平移, 缩放, 旋转), 接着用查询函数获取Model View Matrix, 最后恢复之前保存的当前矩阵.    这样就可以用模型中任意一个点与刚才获取的矩阵相乘, 求出其世界坐标.

但是这样很麻烦啊(当然,至少比用3D变换的知识自己算出变换矩阵省时, 反正计算机也不怕多这么点工作量), 我想知道的是有没有直接用查询函数获取矩阵, 并进行简单处理就可以求出世界坐标的方法.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 04:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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