Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.11.2012, 19:32

2D aus 3D erzeugen - Eigenschaften der dargestellten Objekte.

Hallo liebe Spieleentwickler!

Mich treibt schon eine ganze Weile folgende Frage um:

Aus einem 3D Modell wird eine Darstellung durch eine Kamera errechnet. Objekte in dem Modell werden als Flächen auf dem Monitor dargestellt. Gibt es die Möglichkeit Attribute dieser Flächen in Erfahrung zu bringen - mit Attributen meine ich z.B. die x,y - Koordinaten eines Punktes in der 2D-Darstellung. Und wenn es eine solche Möglichkeit gibt, mit welcher 3D Software/lib/Toolkit, am liebsten OpenSource, ist so etwas (einfach) möglich?

Ich hoffe die Frage ist verständlich. Googeln hat mir leider nicht weitergeholfen.

Bin gespannt und freue mich auf Antworten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »charms« (21.11.2012, 08:11)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

20.11.2012, 19:46

Natürlich gibt es die Möglichkeit, genau darauf basiert die Projektion von 3D nach 2D ja... ;)

Was genau hast du denn vor?

3

20.11.2012, 20:09

Ja das wäre wichtig zu wissen.

Es gibt einige Skripte für Blender, die eine 3D Grafik als SVG rendern. Das würde ich dir für den Anfang empfehlen.

Ich hab ansonsten mal in Prä-Stage3D-Zeiten evaluiert, ob man sich irgendwas spart, wenn man in Flash aus 3D Modellen animierte 2D-Vektorgrafiken macht (für ein Spiel aus isometrischer Perspektive). Das war nicht besonders erfolgsversprechend, mit PaperVision3D kam man aber ganz gut an die Daten ran (indem man ein eigenes Material für den Export implementiert hat). Wenn man das ganze selbst macht, ist es etwas nervig, weil man ja keinen Z-Buffer zur Verfügung hat und entsprechende Probleme bei ineinanderliegenden Flächen bekommt.

4

20.11.2012, 20:25

Die Antwort gefällt mir schon einmal sehr gut :)
Ich beschäftige mich mit der Modellierung von Verhalten von Menschen, genauer, der internen Repräsentation der Umwelt und der "Arbeit" auf diesem, z.B. eine Entscheidungsfindung wie "Objekt
x befindet sich hinter Objekt y". Input meiner Modelle soll eine textuelle Repräsentation der Objekt im Blickfeld sein. Der "Blick" meines Modells auf eine Wiese mit nur einem Baum (ganz einfache Form,wie ein Riesenlutscher z.B.) soll eben auch genau einen Text mit den Koordinaten des Baumes in 2D erzeugen.

5

20.11.2012, 20:48

Wie willst Du denn Dein Blickfeld darstellen/grafisch erzeugen? Man kann auch Text mit 3D Programmen/Bibliotheken rendern, auch so, dass er immer gleich groß ist.

6

20.11.2012, 21:34

Da bin ich frei - würde aber gern eine OpenSource Lösung nutzen.
Wichtig ist nur, dass die Größenverhältnisse der Objekte erhalten bleiben - um daraus Entfernungen schließen zu können.

7

21.11.2012, 20:26

Wie soll das denn dargestellt werden? Zeigst du nur Bilder, soll es interaktiv sein oder möchtest Du kleine Filme erzeugen?

8

22.11.2012, 17:40

Erst einmal ein dickes Dankeschön für die bisherigen Antworten - ich bin frohen Mutes, dass ich die richtigen Infos bekommen! :)
Ein Modell soll sich durch eine Szene bewegen und dabei ein internes Modell der sichtbaren Umwelt aufbauen. Ich würde ganz klein anfangen wollen und ersteinmal nur 2 Gebäude in Form von Würfeln in die Landschaft stellen und das Modell sich auf die Lücke zubewegen lassen. Für mich interessant ist dabei die Abbildung der Szene auf einer Art virtuellen Retina - eine 2D Darstellung des Blickfelds. Die Bewegung des Models kann festgelegt sein, ich brauche die Abbildung also nicht unbedingt live - nur eine textuelle Beschreibung des Sichtfelds zu einer best Position.
Also - die Landschaft soll ein 3D modell sein - ive oder so und die Darstellung soll eine Beschreibung, etwa xml.


Beste Grüße
charms

9

22.11.2012, 21:53

Naja, die 3D Modelle bestehen ja aus Dreiecken, Eckpunkte durch Koordinaten festgelegt sind. Diese Eckpunkte kannst du relativ einfach in Positionen auf den Kamerabild umrechnen, indem du sie mit einer Matrix, die du vorher aus verschiedenen Festgelegten Parametern zusammenbastelst multiplizierst und dann noch ein bisschen was weiter rechnest.
Für eine Szene ist dann aber natürlich auch interessant, ob dieser Punkt überhaupt sichtbar ist. Dafür ist natürlich sowas wie ein Z-Buffer Test das einfachste, aber wenn du das von Hand machen willst, landest du da schon bei einem halben Software Rasterizer.
http://babek.info/libertybasicfiles/lbne…/wf_objects.jpg
So Bilder bekommst du recht leicht, aber wie man sieht, sind da auch viele Punkte die eigentlich verdeckt sein sollte. Die Frage ist jetzt, ob das für dich ein Problem wäre?
Lieber dumm fragen, als dumm bleiben!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

22.11.2012, 21:59

Vielleicht machst Du einfach mal ein Bild von dem, was Du meinst und schreibst dazu mal so Pi-mal-Daumen das auf, was du als Ergebnis erwartest. Schwierig finde ich nämlich zu sagen, dass sich ein Baum an Punkt x/y befindet. Er ist schließlich immer an vielen Punkten, er nimmt ja ein Volumen, bzw. eine Fläche ein.

Mir ist auch noch immer nicht ganz klar, was eigentlich die Ausgangssituation ist. Hast du ein 3D-Modell oder hast Du ein 2D-Bild als Eingabe?
Wenn ich es richtig verstanden habe, dann hast Du eine 3D-Szene, wie bei jedem handelsüblichen 3D-Spiel und diese wird in 2D übertragen - was auch jedes 3D-Spiel macht, denn Monitore haben nur 2 Dimensionen. Du willst nun einfach nur wissen, welcher Punkt der 3D-Szene auf welcher Koordinate auf dem Monitor erscheint? Das ist nämlich der absolute Standard-Fall für die Darstellung einer 3D-Szene auf einem Monitor.
Eventuell willst Du aber auch was ganz anderes und drückst Dich nur etwas schwammig aus, daher... nochmal Details und meinen ersten Absatz nicht vergessen ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BlueCobold« (22.11.2012, 22:08)


Werbeanzeige