游戏开发论坛

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

模型旋转后,AABB包围盒,的最大小点如何计算

[复制链接]

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2010-9-13 12:52:00 | 显示全部楼层 |阅读模式
初始化的时候我用最大小点向量和旋转矩阵相乘可是结果不对,只和缩放矩阵相乘结果正确,这是为什么
D3DXMATRIX mxS, mxR;
D3DXMATRIXScaling(&mxS, .5f, .5f, .5f);
D3DXMATRIXRotationY(&mxR, D3DX_PI/2);
D3DXVec3TransformCoord(&vMin, &vMin, &mxS);//这里正确
D3DXVec3TransformCoord(&vMax, &vMax, &mxS);//这里正确

D3DXVec3TransformCoord(&vMin, &vMin, &mxR);//出现错误?
D3DXVec3TransformCoord(&vMax, &vMax, &mxR);//出现错误?

还有就是为什么判断AABB相交的时候为什么要用模型的坐标加上最大小点,形成新的两个点在和其他的模型进行碰撞检测

如果要动态更新AABB如何计算,每次都是当前坐标加上最大小点计算吗?如果模型旋转了又怎么办

我只是想实现一个简单的碰撞


3

主题

187

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
发表于 2010-9-13 23:29:00 | 显示全部楼层

Re:模型旋转后,AABB包围盒,的最大小点如何计算

估计是AABB最开始的坐标是通过局部坐标计算出来的,旋转之后,不再和世界坐标系的轴对称了,所以碰撞处理不对,这是我的猜测。
另外,你说的如果要动态更新AABB如何计算,每次都是当前坐标加上最大小点计算吗?
我估计你的碰撞检测是在世界坐标系中进行的,所以需要这样办

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
 楼主| 发表于 2010-9-14 21:14:00 | 显示全部楼层

Re:模型旋转后,AABB包围盒,的最大小点如何计算

谢谢你的回答,如果我要算坐标的话,初始化的时候用模型的世界坐标,加上最大小点,然后再来进行缩放,旋转等的变换处理吗

29

主题

107

帖子

107

积分

注册会员

Rank: 2

积分
107
 楼主| 发表于 2010-9-14 21:15:00 | 显示全部楼层

Re:模型旋转后,AABB包围盒,的最大小点如何计算

而不是先将最大小点进行缩放,旋转等的变化然后在加上模型的世界坐标

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2010-9-15 00:47:00 | 显示全部楼层

Re:模型旋转后,AABB包围盒,的最大小点如何计算

查一下aabb的定义,然后再区分下obb,你的问题就有答案了。

1

主题

266

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2010-9-15 01:58:00 | 显示全部楼层

Re: Re:模型旋转后,AABB包围盒,的最大小点如何计算

FreeStyle_Chen: Re:模型旋转后,AABB包围盒,的最大小点如何计算

而不是先将最大小点进行缩放,旋转等的变化然后在加上模型的世界坐标

模型要是旋转了,曾经的最大小点就不是现在的最大小点了。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2010-9-15 10:57:00 | 显示全部楼层

Re:模型旋转后,AABB包围盒,的最大小点如何计算

AABB所有点都要变换循环一次重新取最大最小点,OBB可以直接变换
多东脑筋想想吧,很基础的问题

11

主题

1238

帖子

1782

积分

金牌会员

Rank: 6Rank: 6

积分
1782
发表于 2010-9-15 15:47:00 | 显示全部楼层

Re:模型旋转后,AABB包围盒,的最大小点如何计算

AABB所有点都要变换循环一次重新取最大最小点

这样AABB就会越来越大了!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-6 14:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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