Tutorials Home
What's New
Top Rated
Submit
myTutes
Random!
Tutorials »
3D
Lighting on 3D Objects
Author: Mr10
| Website: http://www.mr10.net |
The Code
Most of the code hangs on the light source:
onClipEvent(load) {
this._x=414.0;
this._y=198.0;
// a * 3 is radius of circle -----
a = 59;
i = 0;
_root.ratio=50;
_root.convrad=Math.PI/180
// x base & y base (in stead of 0,0)
xb = 198.0;
yb = 198.0;
function SinMouseX(AngleX) {
return Math.cos(Math.PI/180 * (_root.DgrMouseX - AngleX));
}
function AlphaMouseX(Z,X) {
return ((_root.DgrMouseZ/Z) * _root.ratio + X * (100 - _root.ratio));
}
}
onClipEvent(enterFrame) {
// making the light move -----
i++;
if (i>= 360) { i=i - 360 }
// must be in radians (not degrees)
theta=(_root.convrad) * i;
// -------------------------------
// path of lightsource -----------
if (_root.lightsource == "manual") {
xm = _root._xmouse;
ym = _root._ymouse;
} else if (_root.lightsource == "automatic"){
xm = xb + (2 * a * Math.cos(theta) + a * Math.cos(2 * theta));
ym = yb + (2 * a * Math.sin(theta) - a * Math.sin(2 * theta));
}
// -------------------------------
// pythagoras for angle mouse & x,ybase
xt= xm - xb;
yt= ym - yb;
_root.DeltaX=Math.sqrt(xt * xt + yt * yt);
// -------------------------------
// z is angle upwards: x,ybase -> light = radius = 180
_root.DgrMouseZ=int(Math.acos(_root.DeltaX/180) / _root.convrad);
_root.DgrMouseX=int(Math.atan(yt/xt) / _root.convrad);
// -------------------------------
// recompute flash-angles to normal-angles
if(xt <0 && yt> 0){
_root.DgrMouseX += 270;
} else if(xt <0 && yt <= 0){
_root.DgrMouseX += 270;
} else if(xt>= 0 && yt <= 0){
_root.DgrMouseX += 90;
} else if(xt>= 0 && yt>= 0){
_root.DgrMouseX += 90;
}
// -------------------------------
}
This is the code on the facets:
onClipEvent(load) {
// angle of this facet -----------
FacetZ=45;
FacetX=63.75;
}
onClipEvent(enterFrame) {
XTemp=_root.light.SinMouseX(FacetX);
// set alpha
this._alpha = _root.light.AlphaMouseX(FacetZ,XTemp);
}
» Level Advanced
Added: : 2001-11-06
Rating: 8.18 Votes: 203
Hits: 10852
» Author
Mr10 stands for Maarten van de Voorde, Graphic Design student from Holland. Being in his forth year he hopes to be employed by January, but for now he has some sparetime to do some free-lance assignments while graduating.
» Download
Download the files used in this tutorial.
Download (99 kb)
Get conversion and unzipping tools
for PC and Mac here!
» Forums
More help? Search our boards for quick answers!
Please rate this tutorial, 10 is the top rating, you can also click the
comments link to read/write a review.