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

11

23.11.2012, 01:07

Ich stimme meinen Vorrednern zu. Dennoch :) da mir eben langweilig war und ich sowieso mal die Blender Game Engine ausprobieren wollte, habe ich mal eine kleine Testszene gebaut. Lade die Szene einfach mal in eine aktuelle Blenderversion und drücke P um den Game-Modus zu starten. Durch Druck der Leertaste bzw. wenn sich etwas an der Liste der beobachteten Objekte ändert, schreibt er die Liste der sichtbaren Objekte mit relativen Screenkoordinaten (0,0 links unten 1,1 rechtsoben) in die Datei ./export2DPos.txt. Allerdings nimmt er als Basis für die Bildschirmkoordinate nicht den Mittelpunkt des sichtbaren Objekt-Bereichs, sondern den "technischen" Mittelpunkt des Objektes.
»Chromanoid« hat folgende Datei angehängt:
  • test_game.zip (206,12 kB - 40 mal heruntergeladen - zuletzt: 07.04.2024, 06:29)

12

23.11.2012, 13:15

Hallo! :thumbsup:
Jonathan,
Genau - aber die Arbeit wollte ich mir halt ersparen.
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?
Solche Bilder wären auf jeden Fall schon mal ein sehr guter Anfang. Verdeckung ist für mich ein wesentlicher Punkt - Sie soll nachher Information über eine Position im Raum geben - Falls möglich sollte man vllt. zu jedem Punkt, also Ecke, die direkte Entfernung zur Kamera mitspeichern und in einem weiteren Schritt den verdeckten Bereich aus den dahinterligenden Objekten abziehen(kann mir auch ne farbcodierte o.ä. Lösung vorstellen). So als würde man aus einem Rechteck ein Stück herausbeißen wenn ein Kreis ihn teilweise überdeckt.

Bluecobold:
Als Ausgang möchte ich ein 3D Modell nutzen, durch welches sich bewegt werden soll.
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.
Ja - genau :thumbup: , alles richtig verstanden. Was noch dazu kommen soll, ist die Information, dass ein Tupel 2D Koordinaten ein bestimmtes Objekt dastellen. Ähnlich wie im Beispiel von:

Chromanoid, cool!! - nur dass mir hier die x,y Koordinaten der äusseren Form fehlen - klar, wenn man die Projektionsparameter und die Größe des Objekts kennt, könnte man schon ein wenig rechnen um die Angaben zu bekommen. Obwohl da schon wieder sehr viel Perspektive mit eingerechnet werden müsste...

Eine Kombination aus den bisher genannten Ansätzen ist genau das was ich suche.
Ich hatte zwischenzeitlich angefangen mich in die openscenegraph Doku einzulesen - meint Ihr, dass das in die richtige Richtung gehen könnte? 3D Scenen darstellen kann man damit ja - aber auch ein Kamerabild auswerten?

Danke!
Beste Grüße und ein erholsames Wochenende
charms

13

23.11.2012, 16:52

Mmh vielleicht ist es am einfachsten, die Szene einmal normal und einmal mit eindeutigen Objektfarben zu rendern (ohne Beleuchtung, Antialiasing etc.). Dann musst du das Farbenbild nur durchgehen und weißt bei jedem Bildpunkt zu welchem Objekt er gehört. Wenn du dann aus allen Bildkoordinaten eines Objektes den Durchschnitt berechnest, müsstest du auch eine gute Näherung für die 2D Position des Objektes haben. Wenn du es nochdetaillierter brauchst kannst du auch jedem Dreieck Farben zuordnen.

Werbeanzeige