Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
silox
Threadersteller
Dabei seit: 05.05.2004
Ort: Landau (Isar)
Alter: 38
Geschlecht:
|
Verfasst Mi 06.07.2005 13:57
Titel Flash Vektoren 3D |
|
|
hoi... habn problem... nähmlich keine ahnung von vektorenzeug in 3d und das alles in flash...
vielleicht hat wer tutorials am start.. hab vor einiger zeit mal so einen einfachen würfel mit outlines in 3d gesehn.. der rumrotiert... aber weis nicht mehr wo... sowas würde mir VIELLEICHT! auch schon ein wenig weiter helfen...
ich hab keine ahnung ob die dinger programiert/berechnet werden müssen.. also die vektoren.. oder ob das anders auch geht.. dsehalb mal in programmierung rein..
danke für die hilfe.. mfg silox
Zuletzt bearbeitet von silox am Mi 06.07.2005 13:58, insgesamt 1-mal bearbeitet
|
|
|
|
|
l'Audiophile
Dabei seit: 16.09.2004
Ort: Berlin
Alter: 44
Geschlecht:
|
Verfasst Mi 06.07.2005 14:29
Titel
|
|
|
Servus silox
Der einfachste und auch häufig benutzte Weg ist, 3D-Objekte mit Tools wie z.B. Swift 3D zu erstellen und zu aniemieren und dann in Flash zu importieren.
Klar kannst dus auch programmieren. Das hat aber weniger mit Actionscript, als mit höherer Mathematik (Matrizen usw.) zu tun (bei etwas aufwändigeren Sachen zum Beispiel).
Hie noch ein paar Links:
1
2
Gruß PeJot
|
|
|
|
|
Anzeige
|
|
|
gtz
Dabei seit: 15.04.2002
Ort: -
Alter: 49
Geschlecht:
|
Verfasst Mi 06.07.2005 14:33
Titel
|
|
|
wenn du richtig echtes 3d in flash realisiern willst, dann musste dir die engline selber schreiben. da das aber ja über einfache räumliche geometrie nich hinausgeht, is das nich so schwer.
|
|
|
|
|
l'Audiophile
Dabei seit: 16.09.2004
Ort: Berlin
Alter: 44
Geschlecht:
|
Verfasst Mi 06.07.2005 14:43
Titel
|
|
|
gtz hat geschrieben: | wenn du richtig echtes 3d in flash realisiern willst, dann musste dir die engline selber schreiben. |
Man sollte sich aber immer vor Augen halten, dass in Sachen 3D Flash nicht gerade das performanteste Spielzeug ist.
Und so ist man bei ner selbstgeschriebenen Engine schnell in einer Performance-Sackgasse angelangt.
gtz hat geschrieben: | da das aber ja über einfache räumliche geometrie nich hinausgeht, is das nich so schwer. |
Nö, ansich nicht. Aber da es ja hier hauptsächlich um das Animieren von 3D-Objekten geht, wird man mit einfacher Geometrie bei komplexen Gebilden wohl nicht weit kommen.
Hier als Beispiel eine Mini-Engine für einen simplen Würfel. Bei komplexeren Sachen schauts schon ganz anders aus
Code: |
cubeData = [{colour:0xff9900,
Vertices:[
{x:-50, y:50, z:50},
{x:-50, y:50, z:-50},
{x:50, y:50, z:-50},
{x:50, y:50, z:50}
]},
{colour:0xff9900,
Vertices:[
{x:-50, y:-50, z:-50},
{x:-50, y:-50, z:50},
{x:50, y:-50, z:50},
{x:50, y:-50, z:-50}
]},
{colour:0xff8800,
Vertices:[
{x:50, y:-50, z:50},
{x:50, y:50, z:50},
{x:50, y:50, z:-50},
{x:50, y:-50, z:-50}
]},
{colour:0xff8800,
Vertices:[
{x:-50, y:-50, z:-50},
{x:-50, y:50, z:-50},
{x:-50, y:50, z:50},
{x:-50, y:-50, z:50}
]},
{colour:0xffaa00,
Vertices:[
{x:-50, y:50, z:-50},
{x:-50, y:-50, z:-50},
{x:50, y:-50, z:-50},
{x:50, y:50, z:-50}
]},
{colour:0xffaa00,
Vertices:[
{x:50, y:50, z:50},
{x:50, y:-50, z:50},
{x:-50, y:-50, z:50},
{x:-50, y:50, z:50}
]}
];
Objekt3d = function (data3d) {
this.data3d = data3d;
this.move3d = function(x, y, z) {
var k = 0;
while (k<this.data3d.length) {
var i = 0;
while (i<this.data3d[k].Vertices.length) {
this.data3d[k].Vertices[i].x = this.data3d[k].Vertices[i].x+x;
this.data3d[k].Vertices[i].y = this.data3d[k].Vertices[i].y+y;
this.data3d[k].Vertices[i].z = this.data3d[k].Vertices[i].z+z;
i++;
}
k++;
}
};
this.scale3d = function(x, y, z) {
var k = 0;
while (k<this.data3d.length) {
var i = 0;
while (i<this.data3d[k].Vertices.length) {
this.data3d[k].Vertices[i].x = this.data3d[k].Vertices[i].x*x;
this.data3d[k].Vertices[i].y = this.data3d[k].Vertices[i].y*y;
this.data3d[k].Vertices[i].z = this.data3d[k].Vertices[i].z*z;
i++;
}
k++;
}
};
this.rotate3d = function(xa, ya) {
var rad = Math.PI/180;
var px;
var py;
var pz;
var sin_xa;
var sin_ya;
var cos_xa;
var cos_ya;
var tempz;
var k = 0;
while (k<this.data3d.length) {
var i = 0;
while (i<this.data3d[k].Vertices.length) {
px = this.data3d[k].Vertices[i].x;
py = this.data3d[k].Vertices[i].y;
pz = this.data3d[k].Vertices[i].z;
cos_ya = Math.cos(ya*rad);
sin_ya = Math.sin(ya*rad);
cos_xa = Math.cos(xa*rad);
sin_xa = Math.sin(xa*rad);
tempz = (pz*cos_ya)-(px*sin_ya);
this.data3d[k].Vertices[i].x = (pz*sin_ya)+(px*cos_ya);
this.data3d[k].Vertices[i].y = (py*cos_xa)-(tempz*sin_xa);
this.data3d[k].Vertices[i].z = (py*sin_xa)+(tempz*cos_xa);
i++;
}
k++;
}
};
};
Kamera3d = function (Objekt3d, distance, angle, loc) {
this.Objekt3d = Objekt3d;
this.distance = distance;
this.angle = angle;
this.loc = loc;
this.mc = this.create();
};
Kamera3d.prototype.create = function() {
return (this.loc.createEmptyMovieClip("camMC"+Stage.camNum, Stage.camNum++));
};
Kamera3d.prototype.render = function() {
this.mc.clear();
var z;
var pers;
var sx;
var sy;
var tx;
var ty;
var polygon;
var k = 0;
while (k<this.Objekt3d.data3d.length) {
polygon = [];
var i = 0;
while (i<this.Objekt3d.data3d[k].Vertices.length) {
z = this.Objekt3d.data3d[k].Vertices[i].z+this.distance;
pers = this.angle/z;
sx = this.Objekt3d.data3d[k].Vertices[i].x*pers;
sy = this.Objekt3d.data3d[k].Vertices[i].y*pers;
polygon.push({sx:sx, sy:sy});
i++;
}
z = ((polygon[1].sx-polygon[0].sx)*(polygon[2].sy-polygon[0].sy))-((polygon[1].sy-polygon[0].sy)*(polygon[2].sx-polygon[0].sx));
if (z>0) {
this.mc.beginFill(this.Objekt3d.data3d[k].colour, this.Objekt3d.data3d[k].colour);
this.mc.moveTo(polygon[0].sx, polygon[0].sy);
this.mc.lineTo(polygon[1].sx, polygon[1].sy);
this.mc.lineTo(polygon[2].sx, polygon[2].sy);
this.mc.lineTo(polygon[3].sx, polygon[3].sy);
this.mc.lineTo(polygon[0].sx, polygon[0].sy);
}
k++;
}
};
Cube3d = new Objekt3d(cubeData);
Scene3d = new Kamera3d(Cube3d, 200, 400, _root);
Scene3d.render();
Scene3d.mc._x = 275;
Scene3d.mc._y = 175;
_root.onEnterFrame = function() {
Cube3d.rotate3d((this._xmouse+100)/100, (this._ymouse+200)/100);
Scene3d.render();
};
|
As von Matze Kannengießer
www.flashstar.de
Zuletzt bearbeitet von l'Audiophile am Mi 06.07.2005 14:57, insgesamt 2-mal bearbeitet
|
|
|
|
|
gtz
Dabei seit: 15.04.2002
Ort: -
Alter: 49
Geschlecht:
|
Verfasst Mi 06.07.2005 14:51
Titel
|
|
|
letztenendes sind das alles nur punkttransformationen vom 3dimensionalen in den 2dimensionalen raum. die materie ist hinreichend und umfassend verstanden und kann in jedem mathebuch nachgeschlagen werden.
wenn man sich dann noch was einfallen lässt, wie man objekte anständig beschreibt, dann is das schon die halbe miete.
ein wenig komplzierter wird der spass, wenn man nicht nur wireframe, sondern gefüllte flächen haben will. oder gar geshadete.
|
|
|
|
|
JanG
Dabei seit: 13.10.2002
Ort: Köln/Düsseldorf
Alter: -
Geschlecht:
|
Verfasst Mi 06.07.2005 16:00
Titel
|
|
|
hehee... Irgendwie war klar, das hier irgendwas vom matze landen wird.
3D in Flash ist für mich immer > Swift 3D (also direkt erkennbar, das es nen Zusatztool ist)
oder halt pseudo 3D a la matze!
Jenachdem sind die pseudocodings echt hilfreich. Smirgel codete mal komplette pixelfonts, die man selber baut und dann nutzen kann. etwas umständlich, aber nette anis sind möglich...
http://www.flactory.de/flashfonts/
Zum Thread im FF > http://www.flashforum.de/forum/showthread.php?t=80717&highlight=font
Peaze!
|
|
|
|
|
l'Audiophile
Dabei seit: 16.09.2004
Ort: Berlin
Alter: 44
Geschlecht:
|
Verfasst Mi 06.07.2005 16:22
Titel
|
|
|
JanG hat geschrieben: | hehee... Irgendwie war klar, das hier irgendwas vom matze landen wird.
|
Jaja Matze, die Mutter Theresa der deutschen Flashcommunity.
|
|
|
|
|
silox
Threadersteller
Dabei seit: 05.05.2004
Ort: Landau (Isar)
Alter: 38
Geschlecht:
|
Verfasst Do 07.07.2005 08:10
Titel
|
|
|
ich dank euch jungX! ich kuck mir die ganzen sachen mal an! wenns was gibt.. meld ich mich!
|
|
|
|
|
|
|
|
Ähnliche Themen |
Erdkugel (Vektoren)
jpeg in Vektoren
Bitmaps vs Vektoren
Darstellungsfehler bei in pdf eingebauten vektoren
PDF in Freehand/Vektoren erhalten...
Vektoren aus After Effects exportieren
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|