Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-06-2004, 22:31   #1 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
3D-Körper frei drehbar in AS

hallo,

ich hab mal wieder im netz eine schöne site gesehn und mich gefragt wie die das machen:
http://www.beta6.com/

es sind geometrische figuren die sich frei drehen lassen!
damit nicht genug, auch werden flächen und sogar schatten erzeugt!!

ist das mit AS programmiert worden? wenn ja, weiß jemand wie ich mich da hinein arbeiten könnte? wo ist der ansatz, bzw wo kann ich so was lernen?

sowas fasziniert mich einfach...
e.rik ist offline   Mit Zitat antworten
Alt 25-06-2004, 22:45   #2 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Wenn man sowas in AS macht, dann ist das ne Menge Arbeit und ne Menge Mathe... (Vektorrechnung, Matrizen).

Such mal hier im Forum nach 3D Engine vielleicht bekommste das ganze ein wenig erläutert.
__________________
www.johannes-erhardt.com | blog | xing me baby
FLASHStyler ist offline   Mit Zitat antworten
Alt 25-06-2004, 22:51   #3 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
ok,

danke für die schnelle antwort! ich werd mich mal auf die suche machen....
e.rik ist offline   Mit Zitat antworten
Alt 25-06-2004, 22:55   #4 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Hier ist mal ein Beispiel.

(In der Komponente [links oben] steckt auch noch mal Code drin)
Angehängte Dateien
Dateityp: zip 3dengine.zip (14,5 KB, 276x aufgerufen)
__________________
www.johannes-erhardt.com | blog | xing me baby
FLASHStyler ist offline   Mit Zitat antworten
Alt 26-06-2004, 09:11   #5 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
Boa,

ich hab mir das alles angeschaut! da ist ja in fast allen library sachen noch quellcode drin!
ich hab mir gestern noch einige beispiele angeschaut, die waren alle ähnlich komplex.

trotzdem muß ich sagen daß ich den sinn der ganzen zeilen nur erahnen kann :-(
Ich bin noch nicht so firm mit AS, daß ich das auf anhieb verstehe.
teilt man es auf, so bleiben 2 sachen:
1. wie funktioniert diese ganze koordinatentransformation im prinzip und in der theorie?
2. wie setzte ich das in flash um? gibt es tutorials für sowas?

heißt das jetzt bücher lesen und beispiele anschauen, bis ichs kapiert hab?
e.rik ist offline   Mit Zitat antworten
Alt 26-06-2004, 13:08   #6 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
juppieh,

hab jemanden gefunden der mir das mit dem matrizenkram mal erklärt hat und der koord. transformation!
im prinzip ja easy nur ne menge mathe...

ich werd erstmal klein anfangen schätze ich...
e.rik ist offline   Mit Zitat antworten
Alt 27-06-2004, 13:10   #7 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
moin,

also ich hab mich rangesetzt und mal versucht was eigenes zu schreiben. mit hilfe eines kumpels (hat mir die benötigten matrizenrechnungen erklärt) hab ich meine erste "3D-engine" :-) geschrieben.

rausgekommen ist eine funtkion, die die 3d-koord berechnet und dann auf den bildschirm projeziert.

mein erstes projekt war ein würfel...
www.beta6.com ich komme. das ziel ist gesteckt!

kann mir einer helfen was die sichtbarkeit der flächen angeht? wie setzte ich das um?
Angehängte Dateien
Dateityp: zip würfel3.zip (859 Bytes, 190x aufgerufen)
e.rik ist offline   Mit Zitat antworten
Alt 27-06-2004, 13:49   #8 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Was heißt Sichtbarkeit der Flächen?
Meinst Du die Transparenz?
Die Transparenz wird über die
mc._alpha Eigenschaft gesteuert.

Mich würden die Berechnungen auch
interessieren.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------

Geändert von thebiz (27-06-2004 um 13:51 Uhr)
thebiz ist offline   Mit Zitat antworten
Alt 27-06-2004, 14:30   #9 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
hallo,

wie man in meinem beispiel sehen, kann, hab ich da die alpha werte benutzt um die flächen einzufärben.
meine frage zielt auf folgendes ab: wenn man einen körper im raum darstellen will, so muß der rechner wissen, welche fläche für den betrachter sichtbar ist, und dann nur diese zeichnen und füllen. sonst würde man ständig auch alle rückseiten der körper sehen, was aber eher verwirrt als hilft.

zu den berechnungen:
ich hab mal die fla mit rangehängt, empfehle aber das mal selbst durchzudenken.
mal im kurzdurchlauf:
-x,y,z eines punktes sind gegeben
-x,y,z seines drehzentrums sind gegeben
-verschiebung des drehzentrums in den betracher-koord.ursprung
-gewünschte drehung des punktes berechnen
-zurückverschiebung des drehpunktes
-projektion der neuen x,y,z auf den bildschirm -> xs,ys

das gilt aber nur so "einfach", wenn das koord.system des punktes selbst nicht verdreht. sonst müßte man zu den verschiebungen auch noch eine drehung in die betrachterachsen machen. und natürlich dann auch rückwärts, bevor man projeziert.

ich weiß, daß mein code noch optimiert werden muß, denn im moment werden viele punkte mehrfach berechnet. aber wie gesagt, das ist die rohfassung...

wie ist das eigentlich mit der verfügbarkeit von variablen, die nur in eigenen funktionen eingeführt wurden? da sehe ich noch nicht 100%ig durch.
und kann ich aus einer funktion einen ganzen array zurückgeben? wenn ja wie?

danke für das interesse und die tips...
Angehängte Dateien
Dateityp: zip würfel3.zip (3,4 KB, 196x aufgerufen)
e.rik ist offline   Mit Zitat antworten
Alt 27-06-2004, 14:44   #10 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Fein das Teil! Glückwunsch...
__________________
www.johannes-erhardt.com | blog | xing me baby
FLASHStyler ist offline   Mit Zitat antworten
Alt 27-06-2004, 14:56   #11 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zürich
Beiträge: 1.776
Zitat:
Zitat von e.rik
meine frage zielt auf folgendes ab: wenn man einen körper im raum darstellen will, so muß der rechner wissen, welche fläche für den betrachter sichtbar ist, und dann nur diese zeichnen und füllen. sonst würde man ständig auch alle rückseiten der körper sehen, was aber eher verwirrt als hilft.
du hast recht, 3d-engines rechnen tatsächlich nur "die dem betrachter zugewandten" seiten. ermittelt wird das, indem man die normalen der flächen berechnet, und die flächen nur dann rendert, wenn z positiv wird (die normale also "zum betrachter schaut").
über die zugrunde liegende mathematik kann ich dir (fast) nichts mehr mitteilen, da ich mich mit vektorrechnung zuletzt vor gut zwanzig jahren befasst habe und kaum noch weiss, was ein kreuzprodukt ist...
fresh ist offline   Mit Zitat antworten
Alt 27-06-2004, 15:17   #12 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
das macht nichts,

danke schonmal für deinen tipp! das ist eine vorzügliche idee!!

heißt das, das zuerst die normale des zukünftigen polygons bestimmt wid? das heißt aber, das das alles mit dreiecken gemacht wird, oder? 3 punkte machen ja schon 2 vektoren für die normalenberechnung.

wie ist denn das mit dem "return array" ? geht das? wär cool, dann könnte nämlich immer ein koordsatz einen punktes zurückgegeben werden aus der rotations funktion. im moment sag ich das die werte einzeln dem array zugewiesen werden das dann für weitere berechnungen ausgelesen werden muß.

mal für später: wie erfährt der rechner, wenn eine fläche von einer andren fläche verdeckt wird? kann ja sein das ihre normalen zum betrachter zeigen. kann bei nur einem konkaven körper nicht auftreten, ich weiß; nur mal so zukunftsorientiert.

und wie bestimme ich zweckmäßig die koord aller eckpunkte eines Ikosaeders zum beispiel? gibts da ne bildungsvorschrift? oder ist das in einem euklidschem systems unpassend?

oh mann...das hört sich alles schon ziemlich fachgesimpelt an; dabei bin ich doch newb :-)

das thema ist cool!
e.rik ist offline   Mit Zitat antworten
Alt 27-06-2004, 20:37   #13 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
hi,

das thema ist echt cool...
hab mich vor kurzem auch damit beschaeftigt im rahmen einer hausarbeit.
das hoert sich ja schon echt krass an wie du darueber sprichst.
ich habe das allerdings nicht so kompliziert umgesetzt, wie es sich bei dir anhoert.
hier ist die 3dengine die ich mal gebastelt habe.
cubenetique
(zugegeben, die seite drumrum ist nicht der brueller, aber im geschenke einpacken war ich auch noch nie gut)

falls interesse besteht kann ich den sourcecode gerne mal posten, muesste ihn aber erst raussuchen, deshalb ist er nicht schon jetzt dabei...

gruss und weiter so
kenichi
kenichi ist offline   Mit Zitat antworten
Alt 27-06-2004, 20:46   #14 (permalink)
User
 
Benutzerbild von e.rik
 
Registriert seit: Jun 2004
Ort: Berlin
Beiträge: 70
hallo kenichi !,

das ist genau so etwas wie ich schreiben wollte!

es wär super wenn du den code mal posten könntest! würd mich interessieren, wie du "vektorrechnung und Matrizen weitestgehend rausgelassen" hast!

wie hast du das mit den flächen gemacht? woher weiß dein programm die farbe? aus der nomale, oder einem z-wert durchschnitt?

das interessiert mich brennend! kennst du übrigens eine bildungsvorschrift für platonische körper?

das ist ja krass, bin gespannt auf den code! hoffentlich kann ich den verstehen...
e.rik ist offline   Mit Zitat antworten
Alt 27-06-2004, 21:12   #15 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
hi,

also, im prinzip ist da vektorrechnung und matrizenrechnung mit drin.
allerdings habe ich das nicht in der form implementiert, wie es in "richtigen" engines der fall ist.

zur engine selbst:
grundsaetzlich ist sie variabel/anpassbar angelegt. will heissen, es gibt eine render funktion an die man objekte uebergeben kann. diese render funktion schaut um was fuer ein objekt es sich handelt und behandelt es dementsprechend (bisher ist allerdings nur der wuerfel implementiert).

der code sollte einfach zu lesen sein, da er wie ich denke und hoffe ausreichend kommentiert ist, so dass jeder der sich einigermassen mit AS auskennt da durchsteigen kann.
er besteht aus mehreren einzelnen .as dateien, sozusagen die bibliotheken.

ich hoffe dass die engine hier etwas anklang findet und auch weiter entwickelt wird. das waere das coolste ueberaupt.
aber dir zunaechst viel spass damit. ich hoffe, dass du da wenigstens etwas draus machst.
eines noch zur info:
es gibt eine variable (my_cube._full_render), die zum Cube-Objekt gehoert.
wenn diese variable auf "true" gesetzt wird, dann werden, wie in meinem beispiel, alle flaechen gerendert. wenn sie auf "false" steht, werden nur die sichtbaren flaechen gerendert.

so, denn mal viel spass.
gruss,
kenichi
Angehängte Dateien
Dateityp: zip cubenetique.zip (40,8 KB, 232x aufgerufen)

Geändert von kenichi (27-06-2004 um 21:16 Uhr)
kenichi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele