Welkom!

Deel je kennis met anderen in deze Flashgemeenschap!
Gebruikersnaam:
Wachtwoord:
Wachtwoord opslaan?
Wachtwoord vergeten?

TUTORIALS / Flash 3D

3D Engine II
366 downloads, 31796 keer gelezen
(March 18, 2006)
Waardering: 1 keer gestemd 
 5 van de 5
 
inleiding     stap .1. .2. .3. .4. .5. .6.      voorbeeld download

Stap 5

Rotatie

Het enige waar niet veel aan veranderd zijn de rotatie functies. Aan de hand van de formules hier beneden worden de nieuwe punten berekent.

Rotatie rond de x-as :

x' = x;
y' = cos(hoek) * y + sin(hoek) * z;
z' = -sin(hoek) * y + cos(hoek) * z;

Rotatie rond de y-as :

x' = cos(hoek) * x - sin(hoek) * z;
y' = y;
z' = sin(hoek) * x + cos(hoek) * z;

Rotatie rond de z-as :

x' = cos(hoek) * x + sin(hoek) * y;
y' = -sin(hoek) * x + cos(hoek) * y;
z' = z;

Waarbij de hoek gelijk is aan het aantal graden dat men moet draaien in radialen !
De drie hieruit volgende functies zijn dan :

function rotateX(angle:Number) {

     var cos = Math.cos(angle * DEGtoRAD);//cosinus van de hoek (in radialen) wordt berekend
     var sin = Math.sin(angle * DEGtoRAD);// hetzelfde voor de sinus
    // er wordt een for loop gestart die alle punten in de array zal doorlopen
     for (var i = 0; i < this.pointsArray.length; i++) {
         // x , y en z worden berekend aan de hand van de formules hierboven
         var x = this.pointsArray[i].x;
         var y = sin * this.pointsArray[i].z + cos * this.pointsArray[i].y;
         var z = -sin * this.pointsArray[i].y + cos * this.pointsArray[i].z;
         // x, y en z worden opgeslagen in de pointsArray a.h.v. een object
         this.pointsArray[i].x = x
         this.pointsArray[i].y = y
         this.pointsArray[i].z = z;
     }
}
// hetzelfde geldt voor de rotatie om y- en z-as. Alleen de forumules verschillen.

function rotateY(angle:Number) {

     var cos = Math.cos(angle * DEGtoRAD);
     var sin = Math.sin(angle * DEGtoRAD);

     for (var i = 0; i < this.pointsArray.length; i++) {
         var x = cos * this.pointsArray[i].x - sin * this.pointsArray[i].z;
         var y = this.pointsArray[i].y;
         var z = sin * this.pointsArray[i].x + cos * this.pointsArray[i].z;
         this.pointsArray[i].x = x
         this.pointsArray[i].y = y
         this.pointsArray[i].z = z;
     }
}


function rotateZ(angle:Number) {

     var cos = Math.cos(angle * DEGtoRAD);
     var sin = Math.sin(angle * DEGtoRAD);

     for (var i = 0; i < this.pointsArray.length; i++) {

         var x = cos * this.pointsArray[i].x + sin * this.pointsArray[i].y;
         var y = -sin * this.pointsArray[i].x + cos * this.pointsArray[i].y;
         var z = this.pointsArray[i].z;

         this.pointsArray[i].x = x
         this.pointsArray[i].y = y
         this.pointsArray[i].z = z;
     }
}

Zie de comments voor de uitleg van het actionscript. Plaats deze functies onder de draw functies in de Shape class !

Zo nu is onze Shape class volmaakt en gaan we terug over naar onze .fla file. Waar we nu om het even welke vorm kunnen maken. Buiten dan
vormen die gebogen lijnen bezitten. Logisch want onze draw functie bezit geen curveTo mogelijkheid.

<<< Druk hier voor de volledige Shape.as

>>> Ga naar stap 6
Geef hier je waardering: Matig 1 2 3 4 5 Geweldig!
  Waardering:
meerdere objecten eric lugtigheid (31 August 2010, 13:28)
Hallo, kun je ook gebruiken voor meerdere objecten? Met hartelijke groet, Eric Lugtigheid Studio Lugtigheid
RE: meerdere objecten Baptist vandersmissen (03 September 2010, 11:19)
Volgens mij is dat geen enkel probleem. Gewoon meerdere objecten aanmaken van de klasse shape en deze objecten de juist gegevens meegeven zoals weergegeven in de laatste stap. (Het is wel al heel lang geleden dat ik dit nog geschreven/bekeken heb. Dus ik kan er naast zitten. Groetjes, Baptist
3D engine (drawing API) Floris V. (06 March 2008, 15:50)

Hoi,

Er zijn er meer voor Flash MX die op deze manier werken. Ik heb me er een beetje in gespecialiseerd. Helaas werken de beste (met textures, etc.) niet in Flash MX.

Sandy 3d, Away 3d, Papervision 3d, allemaal voor Flash CS3.

Deze werkt gewoon met Drawing API en is zo vaak op Google te vinden (of varianten ervan). Maar wel leuk dat je je eigen versie hebt gemaakt...

Waar je vooral eens op moet zoeken op google is mx3d of 3d Flash Studio of 9elements 3d als je een Flash MX versie hebt of anders met CS3 zou ik vooral eens Sandy 3d, Papervision 3d etc proberen dat is echt cool!

Maar goed ik weet hier meer van ik heb urenlang op internet gesurfd en gekeken naar voorbeelden, etc. voor 3d in Flash MX en andere versies, dus als je iets wil weten mail me dan. En mijn conclusie is trouwens: 3d kan wel in Flash, maar je kunt er beter andere programma's voor gebruiken (zoals Adobe Director).

Groet,

Floris


hoe maak je ... Jaimy voorhaam (20 July 2007, 15:10)

haaj

wie weet hoe je een spel maakt zoals habbo hotel ?

maail me trug !!


shape.as Ate Visser (18 March 2007, 02:34)

En de Shape.as (waar de schaduw in staat) staat hier, als Shape.txt:

http://www.prosac.nl/upload/Shape.txt

Ate


1-5 | 6-9