Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-10-2010, 22:55   #1 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
3d rotation

hey ihrs,
ich hab ein paar partikel, anzahl x. diese möchte ich per zufall auf der bühne verteilen (x,y,z) und dann das ganze 3D drehen können. klappt auch alles schon wie gewünscht, allerdings mit einem kleinen prob. ich möchte das in der mitte der stage das zentrum liegt um das sich die partikel drehen. allerdings liegt das zentrum links oben, also bei x = 0, und y = 0. was auch logisch ist. ich komm aber grad nicht drauf was ich wo ändern muss, evtl schon zu spät. kann mir wer auf die sprünge helfen?

hier werden die partikel initial platziert:
PHP-Code:
var radius:Object = new Object();
    
radius.this.mainWidth 2;
    
radius.this.mainWidth 2;
    
radius.this.mainWidth 2;

var 
_v:Number Math.random() * Math.PI;
var 
_p:Number Math.random() * Math.PI 2;

var 
p:Particle = new Particle();    
    
p.radius.Math.sin_v ) * Math.cos_p );
    
p.radius.Math.sin_v ) * Math.sin_p );
    
p.radius.Math.cos_v ); 
und hier der ausschnitt wie die drehung umgesetzt ist:
PHP-Code:
var angleY:Number = ( this.stage.mouseX this.vpX ) * -.00025;// this.vpX = stage mitte width
var cosY:Number Math.cosangleY );
var 
sinY:Number Math.sinangleY );

var 
angleX:Number = ( this.stage.mouseY this.vpY ) * -.00025;// this.vpY = stage mitte height
var cosX:Number Math.cosangleX );
var 
sinX:Number Math.sinangleX );

while ( 
) {

    var 
x:Number p.x;
    var 
y:Number p.y;
    var 
z:Number p.z;
    
    var 
x1:Number cosY sinY;
    var 
z1:Number cosY sinY;

    var 
y1:Number cosX z1 sinX;
    var 
z2:Number z1 cosX sinX;

    
p.x1;
    
p.y1;
    
p.z2;
    
    
this.bitmapData.setPixel32p.xp.y0xFFFFFFFF );
    
    
p.next;
    

zum zeichnen in bitmapData benutze ich dann einfach nur x und y.. logisch. läuft wie gesagt wie gewünscht, nur das verdammte zentrum liegt nicht in der mitte der stage.

danke & cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!

Geändert von salazar (03-10-2010 um 23:01 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 03-10-2010, 23:06   #2 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
gibt 2 möglichkeiten. die einfache, sofern möglich, den container einfach auf die stage mitte verschieben. ansonsten musst du sie vor und nach der drehung um dx und dy (abstand zwischen 0 und drehpunkt) verschieben (also rein rechnerisch), du tust also so als ob der drehpunkt der neue 0 punkt ist und verschiebst sie nach der drehung einfach wieder zurück.

so siehts bei mir aus

ich würd übrigens dringend davon abraten die flash interne z-achse zu verwenden, das ist über 60% langsamer als wenn du es selbst berechnest. nur falls es dir um die performance geht

Geändert von ING (03-10-2010 um 23:09 Uhr)
ING ist offline   Mit Zitat antworten
Alt 03-10-2010, 23:19   #3 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Danke für die fixe antwort.
Container verschieben wird nicht gehen weil es sich hier um ein bitmapData handelt in das ich die partikel zeichne. Damit hat sich das auch mit der z achse in diesem fall erledigt.benutze das nur zum rechnen um dann wie gesagt mit setPixel32 zu zeichnen
Hm,dann werd ich wohl verschieben müssen...

Danke und grüße
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 03-10-2010, 23:49   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.867
ActionScript:
  1. bd.setPixel32( p.x + this.vpX, p.y + this.vpY, 0xFFFFFFFF );
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist gerade online   Mit Zitat antworten
Alt 03-10-2010, 23:59   #5 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
jo,
passt.

dank euch beiden für das lösen des knotens in meinem hirn

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 14:09   #6 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
muss das thema nochmal aufwärmen...

ich lasse die partikel sich jetzt bewegen nachdem die per zufall auf x,y und z innerhalb eines cubes platziert worden sind.

hier das script dazu.
PHP-Code:
p.vX += Math.random() * .2 .1;
p.vY += Math.random() * .2 .1;
p.vZ += Math.random() * .2 .1;
p.vX *= p.vSpeed;
p.vY *= p.vSpeed;
p.vZ *= p.vSpeed;
p.+= p.vX;
p.+= p.vY;
p.+= p.vZ
aber wie ich die bewege spielt hier nur bedingt eine rolle. bewegung klappt auch wunderbar. jetzt gibts aber natürlich den fall, dass sich die partikel durch ihre random bewegung auch aus dem cube raus bewegen können.
und genau das möchte ich verhindern. hier fehlt mir aber der ansatz für. wie finde ich heraus das ein partikel außerhalb des cubes ist um dann die bewegung umzukehren? hier fehlt mir die mathe, vor allem wenn der cube mit seinen partikeln munter gedreht worden ist.

danke und cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 14:23   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Du könntest die Einzelkoordinaten mit den auf der jeweiligen Achse gültigen Grenze des Cubes vergleichen und dann ggf. die Geschwindigkeit rumdrehen:
PHP-Code:
if(x<minX || x>maxXvX*=-1
Wenn die Bewegung aber relativ egal ist, würde ich Dir vorschlagen die Punkte um eine fixe Koordinate schwingen zu lassen, so dass sie den Cube garnicht verlassen können:
PHP-Code:
x0 someRadius Math.singetTimer() / someConst ); 
Hast Du schonmal drüber nachgedacht mit der Vector3D-Klasse zu arbeiten, oder (wenn es kein FP10 sein darf) Dir eine eigene Point3D-Klasse zu schreiben? Ich find das übersichtlicher, als mit lauter Einzelvariablen rumzuhantieren.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (05-10-2010 um 14:26 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 05-10-2010, 14:41   #8 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
also bewegung soll die brownsche molekular bewegung sein. haut wie gesagt hin. da möchte ich jetzt nix drann ändern.
wie ich die bewegung umkehre weiß ich... ich hab halt nur keine idee um die grenzen für x, y und z zu bestimmen, bzw herauszufinden.

Zitat:
Du könntest die Einzelkoordinaten mit den auf der jeweiligen Achse gültigen Grenze des Cubes vergleichen
das hört sich interessant an. haste da ein bsp? weil minX und maxX ja je nach drehung andere werte anehmen müssen. wie also bestimme ich hier minX und maxX?

Zitat:
Hast Du schonmal drüber nachgedacht mit der Vector3D-Klasse zu arbeiten, oder (wenn es kein FP10 sein darf) Dir eine eigene Point3D-Klasse zu schreiben? Ich find das übersichtlicher, als mit lauter Einzelvariablen rumzuhantieren.
ich lese mich da grad erst wieder ein. hatte da bisher wenig mit zu tun. generell mit 3d programmierung, da einem sonst die diversen 3d engines ja die gante rechnerei abnehmen... es darf also FP10 sein und wenn hier vector3D hilft natürlich auch.
generell finde ich es aber bisher nicht unübersichtlich. das passt alles noch. ist ein kleines projekt

danke & cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 15:06   #9 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von salazar Beitrag anzeigen
das hört sich interessant an. haste da ein bsp? weil minX und maxX ja je nach drehung andere werte anehmen müssen. wie also bestimme ich hier minX und maxX?
D.h. Deine Punkte drehen sich aber der Cubus nicht?!

Ich seh gerade, dass Du die Orginalkoordinaten mit den rotierten überspeicherst. So ist es natürlich schwierig die Punkte in einen Cubus zu sperren. Besser wäre es mit zwei seperate Sets von Koordinaten zu arbeiten, von denen die einen die relative Position innerhalb des Kubus beschreiben und die anderen die verdrehte und gerenderte absolute Position.

Schau dir mal die Klassen Vector3D und Matrix3D an, die erleichtern sowas ungemein.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (05-10-2010 um 15:09 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 05-10-2010, 15:13   #10 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
D.h. Deine Punkte drehen sich aber der Cubus nicht?!
doch... das gesamte konstrukt dreht sich. partikel und cube.
danke für die links, aber da bin ich jetzt beim schlau lesen natürlich auch schon drüber gestolpert.

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 16:24   #11 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
ich komm grad an diesem punkt einfach nicht weiter und hab zudem die sorge das Vector3D und Matrix3D ordentlich performance kosten könnten. wir sprechen hier von ein paar zehntausend partikeln

wenn also jemand noch ideen, hinweise, vorschläge oder gar lösungen parat hat immer her damit!

thx und cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 16:39   #12 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
ich komm grad an diesem punkt einfach nicht weiter und hab zudem die sorge das Vector3D und Matrix3D ordentlich performance kosten könnten. wir sprechen hier von ein paar zehntausend partikeln

wenn also jemand noch ideen, hinweise, vorschläge oder gar lösungen parat hat immer her damit!

thx und cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 17:07   #13 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Vector3D dürfte gegenüber jedem andern Objekt, dass diese Informationen beinhaltet, performanceneutral sein.

Matrix3D hat den großen Vorteil, das Du eine Reihe von Transformationen, Skalierungen und Rotationen in einem Objekt zusammenfassen kannst, dass Du dann auf alle Punkte anwenden kannst, statt jedes Mal eine ganze Kaskade von Operationen durchzuführen. Ich selbst arbeite z.Z. mit einigen tausend Punkten auf diese Art und es funktioniert.

Es kann natürlich sein, dass Du mit dem aktuellen Setup einen kleinen Performancevorsprung hast. Aber spätestens, wenn Du die Cubuswände mit einberechnest, dürfte sich das ausgleichen.

Zudem bleibt den Code mit diesen Standardklassen lesbarer und läßt sich leichter wiederverwenden.


Ich hab gerade mal noch ein Beispiel angehängt, dass eine WebCam-Bild verarbeitet und 76.800 Punkte auf diese Art transformiert.
Angehängte Dateien
Dateityp: swf PixelVideo.swf (3,4 KB, 28x aufgerufen)
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (05-10-2010 um 17:15 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 05-10-2010, 18:26   #14 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
schöne bsp swf... kenn das von einem radiohead video. das ist so ähnlich...

also ich muss mich was Vector3D und Matrix3D angeht wirklich von vorne schlau lesen. blick das noch nicht und das ganze ist schon auch komplex. ein paar tutorials zu dem thema wären nicht schlecht.

und nach wie vor auch gerne andere lösungen.. bin für alles offen

thx & cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 05-10-2010, 18:36   #15 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von salazar Beitrag anzeigen
schöne bsp swf... kenn das von einem radiohead video. das ist so ähnlich...
Das war auch ohne Frage meine Inspiration. Hatte nur leider grad keinen 3D-Laser-Scanner im Haus
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rotation einer Linie (ohne .rotation) readme ActionScript 3 3 09-05-2010 21:19
rotation amigeo Flash Einsteiger 0 05-09-2007 12:36
rotation mit for SwKy ActionScript 1 6 05-10-2004 08:27
fla rotation leon19 Flash MX 2 29-03-2004 22:04
rotation =Power_Bauer= Flash 4 und Flash 5 3 23-09-2002 02:38


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele