Fettes grafisches Problem

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,
ihr kennt doch sicherlich "WiiPlay-Tanks". Für den der es nicht kennt: ein lustiges kleines Spiel, bei dem man mit Panzern durch die Gegend fährt und andere Panzer erledigen will. Hier ein Screenshot:
n2249909249_33120.jpg


Ich will dieses Spiel auf den PC portieren und frage mich gerade, wie man die Panzer darstellen kann. Das ist halt mein Problem. Ich will das Ganze in 2D realisieren und möchte gleichzeitig nicht nur eine Draufsicht haben (also von oben), sondern schon so eine gewisse "Tiefe". Kann man die Panzer in 2D so darstellen wie auf dem Screenshot? Wie macht man das, dass sie sich praktisch 360-Grad drehen können? Mehrere Bilder oder so? :(

Wäre echt dankbar für ein Paar Tipps ...
Gruß,
CPU
 
Entweder mehrere Bilder oder wenn die Rechenleistung passt trigonometrische Funktionen
 
Also Deiner Antwort entnehme ich, dass es grundsätzlich geht!

Wie genau geht das mit sin, cos, tan? Und wie baue ich mir ein Modell mit Inkscape und Gimp (Sichtwinkel?)?
 
Wie genau geht das mit sin, cos, tan?
Ich kann dir jetzt keine Mathevorlesung geben. Ich denke, das sollte sich leicht selbst recherchieren lassen.
Eine Anleitung für Gimp oder Inkscape kann ich hier genausowenig geben. Aber auch dafür gibt es genug
Dokumentation im Internet.

Zeig mal was Eigeninitiative. Denke nicht, dass wir dir hier das Programm fertig hinklatschen. Selbst arbeiten
wirst du schon müssen.
 
So war das nicht gemeint ... ich kann schon mit Inkscape und GIMP umgehen und WILL auch (wirklich) selbst das Problem lösen.

Aber ich dachte, dass ihr mir ein Paar Stichworte "hinwerfen" könntet, womit ich dann weiterkomme:

* Wie nennt man diesen Spieltypus bzw.
* Was ist das für eine Perspektive?

Mein Problem ist es einfach, dass ich keinen Einstieg finden kann in das Thema. Und ich dachte, dass ihr mir ein bisschen dabei helfen könntet ...

EDIT: Also das Spiel ist ein 2.5D-Spiel. Aber darunter findet man unter Google fast nur Einträge zu Isometrischen-Tile-Games ...
 
Zuletzt bearbeitet:
Es ist ja im Grunde auch ein isometrisches Tile Game - es gibt z.T. auch freie Engines für diese Art von Spielen. Hier ist der Link zu einer kostenpflichtigen, jedoch sehr ausgereift wirkenden Engine. Das hier wäre noch ein freies Projekt - frag mich jedoch nicht wie weit fortgeschritten dieses ist.
 
Ja, aber wie gehe ich nun an das Panzerproblem ran?
 
für die Panzer gibt es mehrere Möglichkeiten: früher wurden einfach mehrere Sprites verwendet. Ein Bild für jede Richtung / Rotation / Stellung / Zustand.

Alternativ würde ich an dieser Stelle vorschlagen, vielleicht doch eine 3D Engine zu benutzen. Damit könnte man die Kamera fix positionieren, um diesen Eindruck / Perspektive zu erzeugen. Auch gibt es 3dengines, in denen die Kollisionen schon berücksichtigt werden können. So muss man sich nicht selbst um solche grundlegenden Dinge kümmern.

für java gibts hier java3d oder auch jpct.net.

Mit beiden hatte ich vor ein paar Jahren gute Erfahrung machen können.

Schau dir mal jpct.net an. Hier ein Demo: http://www.youtube.com/watch?v=dYYXBUqh3xc

http://www.jpct.net/
 
CPU schrieb:
Ja, aber wie gehe ich nun an das Panzerproblem ran?

Das wurde dir doch schon alles gesagt. Entweder du malst ein Bild und drehst es mit
trigonometrischen Funktionen, oder du machst für jede Position ein einzelnes Bild und
zeichnest das entsprechende auf den Bildschirm.

Wenn du eine 3D-Engine benutzt, wie manche hier vorgeschlagen haben, wird es wohl
auf ersteres hinauslaufen. Oder die Engine benutzt Vektorarithmetik, dann geht das
nochmal ein wenig anders, aber auch das sollte man sich lieber selbst anlesen, denn
das in einem Forum zu erklären, würde sicher den Rahmen sprengen. Genauso, wie eine
erschöpfende Erklärung der trigonometrischen Funktionen.

Schmeiß Google an und mach dich über die Methode schlau, die die Engine deiner Wahl
benutzt, oder wenn du es selbst machen willst, die Methode, die dir am ehesten zusagt.
 
In 3D will ich das ungerne machen, denn das ist für meine Ansprüche ein bisschen "overkill". Zusätzlich müssen ja dann noch die ganzen Lib's included werden, das ist mir ein bisschen zu viel - weil ich mir auch eine Grenze gesetzt hatte ...

Ich habe gerade gedacht, dass man irgendwie mit 3D->2D Projektionsmatrizen arbeiten könnte ...

EDIT: das Projektionszeug bringt mich auch nicht (wesentlich) weiter. Ich habe versucht mit Inkscape einen Panzer zu modellieren, aber das klappt nur mäßig ... 0°, 45°, 90°, 135°, 180° ... bekomme ich noch hin, aber was ist mit den Zwischenschritten?

Dann werde ich das Ganze wohl als Draufsicht lösen müssen!!! Aber danke für Eure Hilfe..
 
Zuletzt bearbeitet:
naja, für jpct benötigt man nur die eine .jar Datei als Bibliothek für Softwarerendering. Das ist Plattformunabhängig. Benötigt man OpenGL, so muss man Systemspezifische Libs einbinden.

Modelle kann man z.B. mit Blender oder einem anderen 3dModeller wie 3DS Max erzeugen. Es gibt hier auch sicherlich fertige Modelle, die man nutzen darf. jpct kann .3ds Dateien importieren (neben einigen anderen Formaten) Da die Modelle (hoffentlich) aus mehreren "Parts" bestehen, sollte ein Drehen von der Kanone auch einfach zu realisieren sein.
 
Aber ich habe mich noch nie richtig mit 3D beschäftigt ... ich habe wohl mal im Wiki der JMonkey-Engine gelesen mich dann aber dazu entschieden 2-Dimensional zu bleiben ...

Und vielleicht ist es garnicht mal so schlecht, wenn man 2-Dimensional einsteigt ... man kann es ja vielleicht noch erweitert, wenn der Rest der Logik steht ...
 
Ich denke, wenn man eine entsprechende Engine benutzt, ist es nicht viel schwieriger, die Sache in 3D
zu machen, als in 2D. Aber ich will dich hier nicht zu was überreden, wozu du gar keine Lust hast. Das,
was du machen willst, geht genauso gut in 2D wie in 3D und wenn dir 2D sympathischer ist, mach es so
(Haha! Picard Zitat).

Wenn es dir zu schwierig ist, einen Panzer in allen Winkeln zu zeichnen, mach es doch mit trigonometrischen
Funktionen. Wenn man da einmal durchgestiegen ist, wie das funktioniert, ist die Sache wirklich kein großes
Problem mehr.

Hier ein Link dazu.
 
Auch wenn du es nicht gern hörst - wahrscheinlich ist 3D für diesen Einsatzzweck sogar leichter. Du wirst nämlich an folgender Stelle auch ein großes Problem bekommen - sogar ein viel größeres als mit dem einfachen Drehen eines Panzers:
Untitled.png

Entweder du machst wirklich eine volle isometrische Tile Engine, welche für die Mauern auch die Tiefeninformation enthält, oder du machst das Ganze in 3D mit einer festen Kameraeinstellung.
 
Ich habe mir den Link durchgelsen (also zu sin/cos/tan) und sehe nicht wirklich den Zusammenhang: es geht ja um die Berechnung von Rotationen bzw. einen Punkt rotieren lassen. Aber es muss ja nicht nur das Bild des Panzers perspektivisch gedreht werden, die Perspektive muss ja auch angepasst werden sonst sieht der Panzer ja immer komischer aus ... es muss wahrscheinlich wirklich in 3D realisiert werden

@3D
Wenn ich ganz ehrlich bin, dann traue ich mich nicht an 3D ran. Ich hab mich ja schon einmal mit der JMonkey-Engine beschäftigt und habe dann wieder davon abstand genommen, weil ich einfach keinen Ansatzpunkt finden kann, wie ich loslegen kann und gewisse Dinge realisieren kann. Bis jetzt war es immer so, dass ich durch irgendein Projekt/bzw. durch irgendeine Projektgruppe mit einem Thema konfrontiert wurde und da hat es dann auf Anhieb geklappt, wenn man sich in der Gruppe unterstützt hat. Und ich denke, dass mir das bei dem Thema 3D fehlt. Einfach eine Art Mentor, der mit mir 2-3 Beispiele verbal durchgeht und den ich löchern kann und dann werde ich es wohl auch schaffen mit dem einstieg .... *irgendwie rede ich gerade aus dem Nähkästchen :D ...*

Also, ich denke, dass ich das Ganze wirklich in 2D von oben realisieren werde und es vielleicht später dann ausbaue zu 3D (ist ja nur die View, wenn ich das mit MVC-Architektur aufsetze). Es muss ja auch nicht 100-%-ig wie in der Vorlage werden. Kopieren ist ja langweilig und z.T. verboten!

Gruß,
CPU :)
 
Ob das Bild bei einer Rotation falsch aussieht, kommt auf die Perspektive an. Wenn man den Panzer so
schräg von oben sieht, wie auf deinem Screenshot, dann würde eine einfache Rotation des Sprites schon
merkwürdig aussehen. Wenn man direkt von oben auf das Spielfeld sieht, wäre das aber kein Problem.

Gut, du willst also wie es aussieht, die Ansicht von schräg oben haben und das Ganze in 2D realisieren.
Dann würde ich vorschlagen, du nimmst dir ein Programm, mit dem du -- erst einmal -- deinen Panzer in
3D modellierst. Dann lässt du ihn jeweils aus jedem in deinem Programm gültigen Winkel einmal rendern.
Zum Beispiel, wenn der Panzer sich jeweils um 1° nach links oder rechts drehen lässt, lässt du 360
Bilder mit jeweils einem Grad unterschied rendern. Die Bilder benutzt du dann für deine Engine.

Denke, das wäre das sinnvollste. Inkscape ist ja auch ein 2D-Vektorzeichenprogramm und da würdest
du die Perspektive nicht mit hinbekommen. Gimp ist ein Bitmapgrafiktool und meiner Meinung nach noch
weniger geeignet. Also fällt mir nichts anderes mehr ein, als die Methode, die ich oben beschrieben habe.

€: Eine Idee, die mir noch gekommen ist, wäre die, dass wenn du bereit wärst, das ganze vom grafischen
Stil her nicht unbedingt 1:1 zu übernehmen, die Panzer mit Inkscape in so einer Art Comicstil zeichnest, bei
dem es dann aufgrund des Designs nicht mehr "falsch" aussieht, wenn du das Bild einfach in 2D drehst.

In dem Fall könntest du den Panzer in Inkscape einmal malen und dann einfach in allen benötigten Winkeln
einmal als Bitmapgrafik exportieren.

Ich hoffe, ich war irgendwie hilfreich.
 
Zuletzt bearbeitet:
Gut, du willst also wie es aussieht, die Ansicht von schräg oben haben und das Ganze in 2D realisieren.
Dann würde ich vorschlagen, du nimmst dir ein Programm, mit dem du -- erst einmal -- deinen Panzer in
3D modellierst. Dann lässt du ihn jeweils aus jedem in deinem Programm gültigen Winkel einmal rendern.
Zum Beispiel, wenn der Panzer sich jeweils um 1° nach links oder rechts drehen lässt, lässt du 360
Bilder mit jeweils einem Grad unterschied rendern. Die Bilder benutzt du dann für deine Engine.
Okay, das bedeutet, dass ich mir Blender installieren muss und irgendwie einen Panzer modelieren muss. Aber noch folgendes: Unter welchem Winkel schaue ich denn Auf den Panzer von Oben?

€: Eine Idee, die mir noch gekommen ist, wäre die, dass wenn du bereit wärst, das ganze vom grafischen
Stil her nicht unbedingt 1:1 zu übernehmen, die Panzer mit Inkscape in so einer Art Comicstil zeichnest, bei
dem es dann aufgrund des Designs nicht mehr "falsch" aussieht, wenn du das Bild einfach in 2D drehst.
Genau! Ich muss ja des Spiel nicht 1:1 kopieren. Das ist ja sowieso langweilig. Daher werde ich zunächst das Spiel in der Draufsicht erstellen und mich primär um die Logik dahinter kümmern. Später, wenn ich fertig bin, werde ich mich dann nochmals ausführlich um die 3D ansicht kümmern ...

Ich hoffe, ich war irgendwie hilfreich.
Ja! Das war genau das (in Bezug auf die 5. Antwort) was ich mir erhofft hatte mit diesem Beitrag: einfach mal ein Brainstorming von ein Paar Mitgliedern, die mich auf andere Ideen bringen ...

Viele Grüße,
CPU :D
 
Zurück
Oben