游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2672|回复: 4

变形问题

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-1-20 01:46:00 | 显示全部楼层 |阅读模式
请教 球体变形到立方体动画 的实现方法,

谢谢~!!!

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2008-1-21 10:40:00 | 显示全部楼层

Re:变形问题

记住球体的每个顶点的坐标(x1,y1,z1),
记住立方的每个顶点的坐标(x2,y2,z2),
顶点数量必须一致。
然后每个顶点按照
(
x1+(x2-x1)*time/T,
y1+(y2-y1)*time/T,
z1+(z2-z1)*time/T,
)
做变化。
time是变化的时刻,T是整个过程时间。

如果是5秒钟内从球体变成立方体,那么
T就是5秒,time刚开始是0,最后变成5秒。

1

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2008-1-22 19:35:00 | 显示全部楼层

Re:变形问题

张见识了,学习.

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2008-1-23 16:31:00 | 显示全部楼层

Re: Re:变形问题

snhun: Re:变形问题

记住球体的每个顶点的坐标(x1,y1,z1),
记住立方的每个顶点的坐标(x2,y2,z2),
顶点数量必须一致。
然后...


哦~~~~ 那如果是很复杂的图形这样做不是很麻烦,有其他的方法不?

3

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2008-2-12 20:03:00 | 显示全部楼层

Re:变形问题的实现方法

////////////////////////////////////////////////////////////////////////////////////////////////////
float Tx=fabs(x);
float Ty=fabs(y);
float Tz=fabs(z);
if( fabs(Tx-Ty)<w/10 && fabs(Ty-Tz)<w/10 )
{ NewX=(w-Tx)/T*time*x/Tx+x; NewY=(w-Ty)/T*time*y/Ty+y; NewZ=(w-Tz)/T*time*z/Tz+z; }
else if( Tx > Ty && Tx > Tz )
{ NewX=(w-Tx)/T*time*x/Tx+x; NewY=y; NewZ=z; }
else if( Ty > Tx && Ty > Tz )
{ NewX=x; NewY=(w-Ty)/T*time+y*y/Ty; NewZ=z; }
else if( Tz > Tx && Tz > Ty )
{ NewX=x; NewY=y; NewZ=(w-Tz)/T*time+z*z/Tz; }
////////////////////////////////////////////////////////////////////////////////////////////////////
1:time是变化的时刻,T是整个过程时间,w是球半径。
2:球心必须是(0,0,0)。
3:这个程序可使任何模型变为正方体(顶点数量不要太少)。
4:我还有更好的思路,就是程序长点。
5:这个程序是我刚刚写的,没有调试过,有问题请和我联系:P。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 01:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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