Ich arbeite an einer Box-basierten Spiel-Engine wie Minecraft und habe mich gefragt, wie ich das "angeklickte Gesicht" beim Platzieren von Blöcken erkennen kann.
Ich habe diese Engine in C ++ (DirectX / D3D), C # (XNA) und Flash (away3d & papervision3d) erstellt.
Der Engine-Code ist bei jedem ziemlich gleich, aber da einer C # und der andere C ++ ist, suche ich nur nach dem Pseudocode, der Theorie oder dem Rat, wie man platzierte Blöcke auf dem angeklickten Gesicht "schnappt".
Wie soll ich seine Ausrichtung erhalten und dann einen Block auf diesem Gesicht in dieser Position mit der entsprechenden Ausrichtung platzieren?
AKTUALISIEREN
Im Moment habe ich mich für eine einfache, aber effektive Methode entschieden:
Zuerst habe ich mich an den grundlegenden 3D-2D-Projektionsalgorithmus erinnert.
Wenn ich jetzt einen Klickpunkt auf dem Bildschirm habe, kann ich einfach eine Linie von der Kamera (Auge) durch den Bildschirm bis zu einer bestimmten Entfernung verfolgen.
Mit dieser Linie "im Auge" und einer modifizierten (3D) Version von Bresenhams (2D) Linienalgorithmus konnte ich nun sehen, ob meine imaginäre Linie auf einen Block in meinem 3D-Gitter "zeigt".
Danke für all deine Vorschläge.
UPDATE 2
Ich hoffe es erklärt meine Lösung. (Rot ist der ursprüngliche Algorithmus, Grün ist meine modifizierte Version)
auch: mit "gerundet" meine ich, dass der ursprüngliche Algorithmus nur den xy-Faktor-Wert rundet, um das nächste Pixel zu erhalten. Ich hoffe ihr wisst wovon ich rede.