Posts by Mipf!

    Hallo!

    Im TUWEL kann man sich ja für einen Präsentationstermin an zwei verschiedenen Tagen anmelden (Mi 12.06.2019 und Mi 19.06.2019).
    Gilt für beide Termine Anwesenheitspflicht? Konkret, wenn wir uns für 19. anmelden, müssen wir trotzdem am 12. von 9:15 bis 10:45 vor Ort sein? Oder ist der 19. generell nur eine Reserve falls sich am 12. nicht alle Gruppen ausgehen?

    Danke und LG,
    Jakob

    Die Map selbst besteht aber eigentlich auch nur aus Ebenen.


    ...war vermutlich eine echt schlechte Beschreibung meinerseits. Was ich damit irgendwie ausdrücken wollte war, dass die ganze Map praktisch eckig ist. Es gibt natürlich Hindernisse und Plattformen, die aber ebenso eckig, also praktisch nur Cubes sind (vielleicht erkennt man es an diesem Paint-Meisterwerk besser ^^). Auf die Plattformen springt man mit Space einfach drauf und soll oben stehen bleiben.


    Map.jpg


    Bewegende, schiefe oder runde Plattformen wären nicht geplant.

    Heyho!


    Da unser Spiel praktisch nur aus 4 Arten von Objekten besteht, die miteinander kollidieren können (Charakter, Gegner, Projektile, Map), hätten wir geplant, die Collision Detection selbst mittels Axis-Aligned Bounding Boxes zu implementieren, da dies wahrscheinlich weniger Aufwand bedeutet, als Physx, Bullet oder CollDet zu integrieren.


    Hierzu gleich die erste und vermutlich wichtigste Frage: Schätze ich das richtig ein oder nicht? Im Prinzip ist die Kollision zwischen Map und Char/Enemy sicher die aufwändigste, alle anderen haben einfache Folgen (Char vs Enemy: Game Over, Bullet vs Enemy: EnemyHP--, Map vs Bullet: Bullet zerstört). Die Map selbst besteht aber eigentlich auch nur aus Ebenen.




    Der Plan wäre, die Bounding Boxes aufzustellen, indem beim Importieren des Models mit Assimp die größte und kleinste X- Y- und Z-Koordinate des Modells gespeichert werden. Die 2 dadurch erhaltenen Punkte A(minX, minY, minZ) und B(maxX, maxY, maxZ) spannen einen Cube auf, der als Bounding Box dient.
    Zwei Objekte kollidieren dann, wenn min und max des ersten Objekts nicht beide entweder größer oder kleiner als min und max des zweiten Objekts sind, und das auf allen drei Achsen.


    Wenn z.B. der Charakter sich bewegt, werden A und B einfach verschoben, indem sie mit der selben Translationsmatrix wie die Modelmatrix multipliziert werden. Die Bounding Boxes dürfen aber nicht mitrotiert werden, da sie sonst verzerrt werden und an zwei Stellen praktisch nur mehr eine Ebene beschreiben, habe ich das richtig verstanden?


    Meine Fragen wären:

    • Ist eine gute Idee, wenn wir die Collision mittels AABB selbst berechnen?
    • Wie stelle ich die Bounding Boxes am besten auf? Wenn es so gemacht wird, wie oben beschrieben, kann es z.B. dazu kommen, dass bei einem Modell, bei dem auf einer Seite ein Teil weit nach außen steht, dieser Teil nach Drehung um 180 Grad aus der Bounding Box hinausragt, während auf der anderen Seite die Box quasi leer bleibt. Wäre es besser, die Koordinaten der beiden Eckpunkte mit dem Wissen über die Größe des Modells einfach hardzucoden, z.B. indem sie im Konstruktor dem Modell einfach übergeben werden? Wäre zwar nicht wirklich schön und schon gar nicht flexibel, aber Collision Detection ist ja auch kein Fokus dieser LVA ^^.
    • Alternativ könnte man statt der Box auch eine Kugel verwenden und Mittelpunkt und Radius mittels A und B berechnen, was allerdings bei Objekten, die eher dünn und hoch sind, zu komischem Verhalten führt. Dafür braucht man nur einen Punkt zu speichern und Rotation wäre auch kein Problem. Würde sich das in euren Augen eher anbieten?


    Für die Collision Detection mit der Wand mache ich wohl lieber einen eigenen Thread auf, wenn es so weit ist...


    lg und danke für die Hilfe,
    A Robots Purpose

    Ah cool danke, daran hätte ich auch denken können... :D
    Falls es sonst noch wen interessiert: Matlab hat die Funktion 'imshowpair', mit dem Parameter 'diff' vergleicht sie zwei Bilder auf Unterschiede und gibt diese aus

    Darf ich fragen, wie genau ihr die Pixelfehler findet? Gibts im Abgabesystem oder in der Application selbst eine Funktion, die so schöne Vergleichs-Grafiken erstellt wie die von wjg?
    Die Ergebnisse vom Render Test im Abgabesystem schauen zwar richtig aus, trotzdem seh ich mit freiem Auge nicht, ob sich nicht doch irgendwo ein Fehler eingeschlichen hat :/