合肥卓想动画工作室 承接全国+flash动画制作 + flash动画设计 + 各类flash动画制作设计


联系方式

flash制作3D物体上的照明

时间:2013-01-14 14:22来源:卓想动画http://www.zxgzs.com 作者:QQ:610929375 点击:


 

我有一个艰难的时间编码(三角形)面的钻石状物体的三维照明。这并不是说代码给我头痛,但我的数学技能比较生疏的;-)在本教程中我发现的结果。我会告诉你如何编写针尖在球体上移动的光源照明的对象。
没有压力,我会帮你记得的三角学的基础知识和说明的步骤前进的道路上。然而,我将承担一些知识的闪光,喜欢做司仪,功能,在attachMovie脚本(+连锁)等。

首先玩弄我的成绩在数学的冒险来;-)
PS
。光源可以被设置为手动,然后它会跟随你的鼠标,而不是路径的三角肌。使用菜单。
下一章中,我将解释如何以可视化的点,你会希望你的光芒是最激烈的,然后我们会去数学。之后,我将讨论的代码块,我们将结束整个脚本。
3D
正如你可以看到,我们的工作在顶视图中的图形。为了更清楚地表明我们所要完成的,这里是一个对象在不同的​​角度:
我的绝招到伪造3D的重新计算对象的各个方面,为2个角度:Z轴和XY轴的角度。光移动更远的距离投射在球体上这些坐标,调光器的照明得到。这是其中的trigonometrics派上用场。有ALSE是一种使用各坐标矩阵,这样做更准确的,但我的数学知识,更是生锈的!在本教程中跳跃的矩阵也将这样做就好了。
深度:数学
我们将要计算的东西:
上的刻面的z轴的角度
上的刻面的xy轴的角度
的角度,在z-轴方向上的光源 - 光源,有一个固定的距离:球体的半径
xy-轴方向上的光源的角度
每个小面的白度 - 取决于两个角(50%)和距离(50%)的光源
光源的路径,将在自动模式
计算方面的角度
为了救我一些严重的造纸填料计算,我已经建立了一个角度检测器(它的左下角的按钮)。只要拖动点1和点2的平行所需的角度;-)
正面和侧面的的视图可以accesed与右上方按钮。
ATAN
讨论的下一个话题。的角度检测线MC的计算公式是:
onClipEvent
事件(enterFrame事件){
/ /
MCS1和点2之间的界线
/ /
注意到这条线的宽度和高度是100
this._x = _root.angledetect.point1._x;
this._y = _root.angledetect.point1._y;
this._xscale =
_root.angledetect.point2._x _root.angledetect.point1._x;
this._yscale =
_root.angledetect.point2._y _root.angledetect.point1._y;

/ / Math.atan

XA = this._width;
YA = this._height;

_parent.angle =
Math.atanYA / XA))/(一下,Math.PI/180;
/ / -------------------------------

/ /
做那么多的小数计算angle2
_parent.angle =
((_parent.angle * 100))/ 100
_parent.point1.angle = _parent.angle
_parent.point2.angle = 90 - _parent.angle
/ / -------------------------------

}
光源在xy轴角
我们将使用Math.atan计算这个角度看,我们知道AB(距离基地光源的x和对y):
XT = XM - XB;
YT = YM - YB;
Xb
Yb的基准坐标,xmym的光源的坐标。
_root.DgrMouseX = INT
Math.atanYT / XT/ _root.convrad;
•convrad
一下,Math.PI/180
此功能提供了一个闪光角度,进一步,我们将重新计算这个角度在0度和360度之间的角度。
z轴方向上的光源角
固定光源的距离,让我们计算的角度。我们知道的那一面(C)将是半径的球体,在这种情况下,180。我们计算由使用毕达哥拉斯上XTYT ADELTAX)。
_root.DeltaX = Math.sqrt
XT XT + YT YT;
然后,我们使用ACMath.acos计算的z角:
_root.DgrMouseZ =
Math.acos_root.DeltaX/180))/ _root.convrad;
Flash
和角度
Flash
会将度有点不同,我们已经习惯了,所以我们将重新计算他​​们更多的东西handable
如果(XT <0 && YT> 0{
_root.DgrMouseX + = 270;
} else ifXT <0 && YT <= 0{
_root.DgrMouseX + = 270;
} else ifXT> = 0 && YT <= 0{
_root.DgrMouseX + = 90;
} else ifXT> = 0 && YT> = 0{
_root.DgrMouseX + = 90;
}
这将返回一个介于0度和360度,从0开始计数,在顺时针方向转动到第360的顶部的任何角度。
上的白度!
各个方面的计算出它自己的白度。的白度是通过设置一个白色小面的_alpha MC在背景上的对象。
每个方面有2个变量:FacetXXY角)和FacetZz轴的角度)。
我们将使用Math.cos函数,从而使该对象的一个​​侧的点亮上(cosx)的= 1)和另一侧上(cosx)的= -1)。
:功能SinMouseXAngleX{
返回Math.cos(一下,Math.PI/180_root.DgrMouseX - AngleX));
}
•AngleX FacetX
此功能设置最猛点在FacetX和少猛点(FacetX - 180)度。
然后我们设置_alpha。的比例是50%,所以z轴角度和xy角度有一个同样强烈的影响:
函数AlphaMouseXZX{
返回((_root.DgrMouseZ / Z* _root.ratio + X *100 - _root.ratio));
}
•Z = FacetZ
•X = FacetX
 

(责任编辑:卓想动画http://www.zxgzs.com)




上海 北京 深圳 广州 成都 杭州 重庆 武汉 苏州 合肥 亳州 天津 南京 沈阳 西安 青岛 大连 宁波 济南 哈尔滨 长春 厦门 郑州 长沙 福州 乌鲁木齐 昆明 兰州 无锡 南昌 贵阳 南宁 太原 石家庄 呼和浩特 佛山 东莞 唐山 烟台 泉州 包头 温州 淄博 海口 银川 西宁 南通 大庆 徐州 潍坊 常州 鄂尔多斯 绍兴 济宁 盐城 邯郸 临沂 洛阳 东营 扬州 台州 嘉兴 沧州 榆林 泰州 镇江 昆山 江阴 张家港 义乌 金华 保定 鞍山 泰安 宜昌 襄阳 中山 惠州 南阳 威海 德州 珠海 柳州 宿迁 芜湖 岳阳 菏泽 漳州 信阳 蚌埠 绵阳 株洲 邢台 桐城 桂林 衡阳 铜陵 三亚 阜阳 荆州 遵义 咸阳 驻马店 上饶 湛江 湘潭 汕头 莆田 滁州 廊坊 赣州 肇庆 九江 德阳 淮安 曲靖 湖州 揭阳 许昌 秦皇岛 江门 新乡 潮州 商丘 宁德 吉林 连云港 常德 宜春 黄冈

卓想动画 版权所有 flash作业- 网页设计作业
返回首页   |   电话咨询   |   微信咨询