123 第1页 | 共3 页下一页
返回列表 发新帖
查看: 6128|回复: 29
打印 上一主题 下一主题

[红蓝3D] FLASH3D教程

[复制链接]

797

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
5568
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2011-8-4 08:53:39 |只看该作者 |倒序浏览
大家都知道三维的点都有3个坐标,但FLASH只是有二维的坐标,所以要在FLASH里实现“三维”的效果,就需要对点的坐标进行转化,简单的说,就是怎么把三维坐标转换成二维坐标。(其实,这并不是真正的三维,而是一种视觉欺骗,看上去像三维的就这么回事。所以上面三维带引号。)
一、三维坐标系转化成二维坐标系
(1)、坐标的转换
flash中场景左上角为(0,0),而在数学中是场景中心为(0,0),怎样把它转成数学中的坐标系呢?
FLASH里的坐标视图
x
o
y
x=Stage.width/2; // Stage.width是场景的宽;
y=Stage.height/2; // Stage.height是场景的高;
这样就把原坐标的原点移动了,场景的中心点,不过,Y轴还是向下,为正的。(这在后面做旋转时要注意的。)
(2)、角度的转换
flash中Math函数里的参数都要用到弧度,所以角度与弧度之间的转换是需要知道的。
在flash as中,我们可以通过这样的表达式来进行转换:
hudu=jiaodu*Math.PI/180; / /把角度转换为弧度,公式为:弧度=角度 *3.14/180,3.14为pai
jiaodu=hudu*180/Math.PI; / /把弧度转换为角度,公式为:角度=弧度*180/3.14,3.14为pai
(if (jiaodu<0) { jiaodu = jiaodu+360; }/* 转换后的角度的范围从-180到180, 数学中的角度从0到360,所以小于0时加上360 */)
2、flash中的三维坐标系
如图3,z轴表示一个物体离屏幕的远近,当物体的z轴位置增加时,物体朝远离屏幕的方向运动,当物体的z值减小时,物体朝接近屏幕的方向运动。
3、三维坐标转换成二维坐标
如图4,已知一个点(x,y,z),利用三角形相似的原理,可以得出下列结论:
d/(d+z)=y1/y,推出:y1=d*y/(d+z),可在二维平面上来表现空间上的点的位置。进一步把它简化。提出因子d/(d+z),用ratio(比率)表示,这个公式就变为
ratio=d/(d+z);
y1=ratio*y;同理可推出
x1=ratio*x;
二、控制物体的属性(大小,层次,透明度等)
1、控制mc的大小
在三维坐标中,当z值增大,也就是远离屏幕时,物体应越小,反之越大。
我们可以用上满的ratio,当z增加时,ratio减少,因为在ratio中,z是作为分母的。反之,当z减少时,ratio增加。所以可用ratio来控制mc的大小。
mc1._xscale=mc._xscale*ratio;
mc1._yscale=mc._yscale*ratio;
2、控制mc的层次
z值最大,物体应在最底层,最小,在最上层,
所以mc的层次可以有z组成,可以用很大的数减z,也可以让z除以负数,等等,这里方法比较灵活,也是做”三维”效果的关键,主要要在调试中确定适合设计的方法。flash中,设置mc的层次用swapDepths,如下:
mc.swapDepths(1000-z);//设置mc的层次
mc.swapDepths(z/-4);
3、控制mc的透明度
远处的物体看上去模糊些,近处的物体清晰些,在flash中,可用_alpha来控制,方法和控制大小类似,不在介绍原理。
mc._alpha=100*ratio;
4、控制mc的角度(旋转)
这一步最难,也最好的东东。学习以后,你将能制作出非常cool的效果
旋转有三种,x旋转:坐标x不变,y旋转:y不变,z旋转:z不变,我们先来推导z旋转。
如下从点(x,y,0)转到(x1.y1.0),求点(x1.y1.0)
利用数学中的正弦、余弦公式得出
x1=r*cos(a+b),而cos(a+b)=sina*cosb+cosa*sinb
推出:x1=r(cosa*cosb-sina*sinb)
又因为x=r*cosa,y=r*sina
所以x1=x*cosb-y*sinb
同样推出:y1=y*cosb+x*sinb
这就是z旋转的公式。用同样的方法可推出x旋转,y旋转的公式。总结
给定点:(x,y,z)
绕x轴旋转后的点(x1,y1,z1)
绕y轴旋转后的点(x2,y2,z2)
绕z轴旋转后的点(x3,y3,z3)
x旋转(x不变)
x1=x
y1=y*cosb-z*sinb
z1=z*cosb+y*sinb
注:x旋转要注意,在FLASH中x1=x
y1=y*cosb+z*sinb
z1=z*cosb-y*sinb
是先加后减,因为FLASH里的Y轴是反的,箭头向下的。
y旋转(y不变)
x2=x*cosb-z1*sinb
y2=y1
z2=z1*cosb+x*sinb
z旋转(z不变)
x3=x2*cosb-y1*sinb
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2011-8-9 23:22:44 |只看该作者
ding.....ding....ding
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2011-8-20 10:57:36 |只看该作者
小教程~~~
回复

使用道具 举报

7号    

0

主题

1

听众

594

积分

初级设计师

Rank: 3Rank: 3

纳金币
594
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2011-12-23 10:25:59 |只看该作者
回复

使用道具 举报

12

主题

1

听众

1311

积分

助理设计师

Rank: 4

纳金币
1311
精华
0
5#
发表于 2011-12-23 15:44:12 |只看该作者
回复

使用道具 举报

0

主题

1

听众

1122

积分

助理设计师

Rank: 4

纳金币
1122
精华
0
6#
发表于 2011-12-24 09:12:09 |只看该作者
回复

使用道具 举报

0

主题

1

听众

1106

积分

助理设计师

Rank: 4

纳金币
1106
精华
0
7#
发表于 2011-12-24 09:12:50 |只看该作者
回复

使用道具 举报

0

主题

1

听众

1106

积分

助理设计师

Rank: 4

纳金币
1106
精华
0
8#
发表于 2011-12-24 09:13:02 |只看该作者
回复

使用道具 举报

19

主题

1

听众

665

积分

初级设计师

Rank: 3Rank: 3

纳金币
665
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2011-12-24 09:13:40 |只看该作者
回复

使用道具 举报

168

主题

1

听众

3637

积分

中级设计师

Rank: 5Rank: 5

纳金币
3637
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2011-12-24 09:14:33 |只看该作者
顶顶更健康!
回复

使用道具 举报

123 第1页 | 共3 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 16:12 , Processed in 0.262806 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部