Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - firstdeathmaker

Pages: [1]
1
German corner / Re: JPCT-AE: Möglichst genaue Kollision
« on: October 28, 2011, 10:20:04 am »
??? fehlt da irgendwo ein "nicht"? Wieso soll ich den unteren nehmen, wenn nur der obere für AE funktioniert? (Denke mal du meinst den unteren Ansatz, danke für die Antwort!)

2
German corner / JPCT-AE: Möglichst genaue Kollision
« on: October 27, 2011, 03:34:30 pm »
Hallo mal wieder!

Ich hab ein Problem: Wie kann ich möglichst genau von einem Pixel auf meinem Bildschirm die 3D-Position im OpenGL-Raum erhalten? Also im Endeffekt den nächsten Schnittpunkt mit einem Objekt wenn man einen Strahl durch diesen Pixel schicken würde?

Es geht mir vor allem um die genaue Position, nicht um das Objekt oder so. Und das ganze in der AE.

Vielen Dank schonmal für alle Antworten!


3
ha, I think you hit a nerve. Lots of people have thought about this problem. The result is:

There is no perfect structure. But there are some methods that could help you:

Architectural Pattern

Especially : Model-View-Controller

As some general advice I would suggest: Split everything in smaller peaces, implement Data-Controllers that manage your data for you, work with ini-files (XML is great for that). Especially when I read
Quote
In the onSurfaceCreated() method I create all my objects and world and stuff. This are already around 300 lines and it is very unclear.
If you have a lot of similar stuff to to, you could write yourself some helper functions or classes to get that better done. Example: If you need to load a lot of different 3D-Models, Gameobjects with additional information (like Cars or Gameitems) than write some Managers for thoose, so that you only have to write the name of that object and the Manager is doing the rest.

But its a big topic, so you might want to read a book about it.

Another good helper might be UML-Diagrams, where you can model your Software beforehand.

4
German corner / Re: Request: Objekte drehen
« on: October 14, 2011, 12:01:43 am »
So, nach langem hin und her hab ich es jetzt hinbekommen. Allerdings leider nicht mit den Befehlen die du vorgeschlagen hast, die haben leider nicht so funktioniert wie ich es wollte.

Der Fehler mit dem schrägen Offset wurde wohl dadurch erzeugt, dass die Kamera nicht auf den Mittelpunkt des Koordinatensystems, sondern auf:

cam.lookAt(ship.getTransformedCenter());

gerichtet war.

Jetzt habe ich das ganze so gelöst:

Bei der initialisierung setze ich die Kamera folgendermaßen:
Quote
         cam.setPosition(0,50,0);
         cam.setOrientation(new SimpleVector(0,-1f,0), new SimpleVector(0,0,1f));

Sie zeigt also in negative Y-Richtung auf die x, z Ebene, wobei positives z oben ist.

Bei einem Touch-Event richte ich das Schiff folgendermassen aus:

Quote
         SimpleVector up = new SimpleVector(0,-1f,0);
         direction.x = (event.getY()-(h/2));
         direction.z = -(event.getX()-(w/2));
         ship.setOrientation(direction,new SimpleVector(0,1f,0));
Also auf der x-z Ebene was die Richtung angeht, und die Oberseite des Modells zur Kamera hin gerichtet.

5
Projects / Re: Die game
« on: October 13, 2011, 09:50:24 am »
Quote
setRotation(Matrix m ):  it didn't work cause of some strange rendering of the box, after the rotation it came out streched and only half visible

Maybe the order of the physics matrice is another one than in jpct? Remember, jpct works with a coordinate system that is different from what is usual in mathematics: http://www.jpct.net/wiki/index.php/Coordinate_system. That did confuse me also.


6
German corner / Re: Request: Objekte drehen
« on: October 13, 2011, 09:44:26 am »
okay... werd ich heute Abend mal wieder ausprobieren. Heute morgen hat er den Befehl, obwohl ich über "import" Interact2D eingebunden hatte nicht gefunden.

Aber nur so zum Verständnis, wieso funktioniert mein vorheriger Ansatz nicht? Mit

Quote
         direction.x = (event.getX()-(w/2));
         direction.z = -(event.getY()-(h/2));

wobei h und w die Bildschirmhöhe und Breite in Pixeln ist, bekomme ich doch einen Vektor der vom Ursprung in die jeweilige Richtung zeigt. Wenn ich dann im World-Context ein Objekt an der Stelle 0/0 positioniere und dann in die Richtung des jeweiligen Vektors zeigen lasse, dann müsste das doch genau gehen? Ich befinde mich ja mit meiner Kamera nicht irgendwo, sondern genau über dem Objekt und bewege mich mit meinen Koordinaten nur auf einer festen Ebene.

7
German corner / Re: Request: Objekte drehen
« on: October 13, 2011, 08:59:24 am »
Kann es sein, dass es den Befehl "reproject2D3D" in AE nicht gibt?

8
German corner / Re: Request: Objekte drehen
« on: October 12, 2011, 11:20:20 pm »
So, hab mich jetzt noch mal hingesetzt und es mit den Infos ausprobiert. Irgendwie bekomme ich das Objekt immer noch nicht sauber positioniert:

Schritt 1: Ich modelliere das Schiff in Wings3D und richte es an der X-Achse aus. Die positive Y-Achse ist oben. (siehe angehängtes .wings file)


Schritt 2: Ich lade das Schiff und positioniere die Kamera:
Quote
         cam = world.getCamera();
         cam.setPosition(0,-50,0);
         cam.lookAt(ship.getTransformedCenter());

Schritt 3: Ich frage die Touch-Events ab und setze die Orientierung des Raumschiffes:
(direction ist auch ein SingleVector)

Quote
         SimpleVector up = new SimpleVector(0,-1f,0);   
         direction.x = (event.getX()-(w/2));
         direction.z = -(event.getY()-(h/2));
         
         ship.setOrientation(direction, up);

Ergebnis: Das Schiff zeigt auf dem Bildschirm nach unten und ist um 90 Grad nach rechts gedreht. Man sieht also nur die Seite des Schiffes, nicht die Oberseite.



Also drehe ich das Schiff in Wings um 90° um die X-Achse nach links. Nur jetzt fällt beim Antippen des Bildschirms auf: Das Schiff wird, wenn man z.B. an den unteren Bildschirmrand tippt (direction.x = 0, direction.z = -227) nicht genau nach unten ausgerichtet, sondern leicht schräg:

(die genauen Werte von direction bei diesem Screenshot sind: X: -0.27304077 Z: -255.82458)



Wieso ist das so?

Fighter.wings
BattleshipAdmiral.rar

9
German corner / Re: Request: Objekte drehen
« on: October 12, 2011, 11:40:00 am »
Ich dachte das wäre alles relativ? Wenn ich meine Kamera auf 0,0,20 setze, mein Objekt bei 0,0,0 lade und dann die Kamera mit lookAt auf die Objektposition ausrichte, dann müsste meine Kamera von oben auf das Objekt drauf schauen, oder? Ich hab das Objekt in Wings3D modelliert und dort am Koordinatensystem ausgerichtet.

Aber ich glaub ich beginne zu ahnen das ich hier irgendwo einen Denkfehler gemacht habe, ich weis nur noch nicht genau wo... naja, ich werd heute Abend noch mal was ausprobieren, mit dem wiki-koordinatensystem.

10
Support / Re: Loading Serialized Object (JPCT-AE)
« on: October 12, 2011, 11:28:35 am »
Ah, ok. Thanks for the answer!

11
German corner / Request: Objekte drehen
« on: October 12, 2011, 10:34:25 am »
Hallo,

ich habe eine Frage bezüglich des Drehens von Objekten (AE):

Mit myObject3d.translate() und den rotate Befehlen kann man zwar Objekte drehen, aber immer nur relativ zur ihrer eigenen Position.

Damit ich es absolut auf eine bestimmte Drehposition setzen kann, habe ich versucht mit

setOrientation(SimpleVector dir, SimpleVector up)

zu arbeiten. Nur leider wird das Objekt seltsam verdreht: Ich lasse den dir-Vektor in eine x-y Richtung zeigen, und übergebe als "up" einen Einheitsvektor in z-Richtung.

Das Objekt zeigt zwar in die richtige Richtung, allerdings zeigt es mit der Seite nach oben. Wenn das Objekt gerade neu geladen wurde, dann ist normalerweise die Oberseite oben (Z-Richtung = Oben bei mir). Wenn ich den Up-Vektor allerdings ändere (damit die richtige Seite nach oben zeigt), dann wir das Objekt teilweise zu einer ganz platten Ebene zusammen gepresst.


Um das ganze mal in einen Kontext zu setzen: Ich möchte eine Top-Down Ansicht erhalten und meine Raumschiffe nur auf der X-Y Ebene bewegen. Daher möchte ich meine Objekte nur um die Z-Achse rotieren lassen. Allerdings würde ich gerne die Ausrichtung der Objekte absolut und nicht relativ setzen können.

12
Support / Re: Loading Serialized Object (JPCT-AE)
« on: October 12, 2011, 10:17:04 am »
That Object file is extracted from a very high detailed CAD Modell. Originally it was ~ 50 MB, now its just 5 MB, but still takes long to load.

By the way: The normal method of loading Object-Files from the /res/raw folder works for us also with files bigger than 1 MB, but it takes quite a while. If we just load the seperate file-parts through the serialized method it works fast for single parts, but sometimes we get an memory out of bound exception (not reliable reproducable).

What exactly is the serializer doing? Is it just a thing of parsing the xml-stlyle .Obj file, loading it into your object presentation data-structure an writing that almost 1:1 as binary down?

13
Support / Loading Serialized Object (JPCT-AE)
« on: October 11, 2011, 02:50:17 pm »
Hi,


im using the mesh serializer plugin to serialize my .obj file. As output I get about 50 single .ser files.

Ho exactly can I load them? I found the Method "Loader.LoadSerializedObject() but that only takes ONE InputStream.

thanks for any answers!

14
German corner / Re: JPCT AE & QCar - > Grafik Fehler
« on: October 11, 2011, 09:50:50 am »
Ha, du hast mir sehr geholfen: Lag zwar nicht am Z-Buffer, aber mit der neuen JPCT-AE Alpha Version ist der Fehler weg.

Wir hatten die JPCT-Version vom 13. September 2011 benutzt, hash: a6615d9e839f4920e3ca8eb8ceeaea18.

Die aktuellste geht aber einwandfrei! Danke für die schnelle Antwort!

15
German corner / JPCT AE & QCar - > Grafik Fehler
« on: October 10, 2011, 01:42:26 pm »
Hallo,

ich habe ein Problem: Ich versuche das Qualcomm QCAR Beispiel "ImageTargets" mittels JPCT zu bereichern, hänge aber gerade an einem fiesen Grafikbug. Im Endeffekt möchte ich mit QCAR das aktuelle Kamerabild in den Hintergrund rendern und dann mit JPCT 3D-Objekte darüber in den Vordergrund. QCAR wird dabei zur Bildanalyse benutzt.

Da QCAR selbst auch auf OpenGL zugreifen muss damit die Kamera in den Hintergrund gerendert wird und JPCT so schlicht und kompakt ist, bin ich vom QCAR-Sample "ImageTargets" ausgegangen und habe dort JPCT importiert. "ImageTargets" benutzt eine Rendererklasse, welche in onDrawFrame eine native-C Funktion aufruft die mittels OpenGL das Kamerabild einzeichnet. Diesen Aufruf umgebe ich mit den JPCT-Funktionen

framebuffer.clear()
<< nativer Funktionsaufruf mit C OpenGL-Befehlen drin >>
world.renderScene(framebuffer)
world.draw(framebuffer)
framebuffer.display()

Wenn ich die Anwendung starte, wird eine ganz kurze Zeitspanne das richtige Modell angezeigt. Danach wird es von einem gleichfarbigen Oval das sich über den ganzen Bildschirm erstreckt verdeckt. Die Größe des Ovals ist unabhängig von der Position des Modells oder der Kamera. Das Oval wird auch bei anderen 3D-Objekten angezeigt, ist also unabhängig vom Modell.

Wenn ich die native-Funktion auskommentiere, wird das Modell richtig, ohne Grafikfehler angezeigt.
Ebenso taucht der Fehler nicht auf wenn ich das Objekt nicht zur world hinzufüge. In dem Fall wird dann nur das Kamerabild angezeigt, aber eben auch kein Objekt.

Ich kann leider nicht den ganzen Code posten, aber ich wäre dankbar für Ideen woran es eventuell liegen könnte.
Ich hatte es früher auch schon einmal genau so hinbekommen, es ist also durchaus möglich. Nur leider ist mir der Sourcecode von damals abhanden gekommen.



Link zum QCAR SDK von Qualcomm

Vielen Dank schonmal für alle Antworten!

Pages: [1]