AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

In einer 3D Welt bewegen.

Ein Thema von Alallart · begonnen am 2. Nov 2017 · letzter Beitrag vom 3. Nov 2017
Antwort Antwort
Alallart

Registriert seit: 8. Dez 2015
150 Beiträge
 
#1

In einer 3D Welt bewegen.

  Alt 2. Nov 2017, 15:25
Ich will in einem Projekt eine 3D Minimap-Welt erstellen, in der ich mich drehen/bewegen kann. Eine 3D Engine will ich nicht, dass will ich alleine programmieren. Nur fehlt mir der Ansatz.

Code:
NW      N      NO
  +--+--+--+--+
  |  |  |  |  | 
  +--+--+--+--+
  |  |  |  |  | 
W +--+--+--+--+ O
  |  |  |  |  | 
  +--+--+--+--+
  |  |  |  |  | 
  +--+--+--+--+
SW      S      SO
Womit ich keine Probleme habe ist die 3D-Perspektive. Wenn ich also im Süden stehe, kann ich die Welt perspektivisch korrekt darstellen. Auch habe ich keine Probleme Objekte darzustellen die eine andere Perspektive haben, also zum Beispiel von Südwest nach Nordost ausgerichtet sind. Solange ich auf der Linie bleibe, kann ich nach Norden alles 3D darstellen.

Ich weiß nur nicht wie ich mich drehen soll. Wie machen es die 3D Spiele? Meine bisherige Idee ist, dass ich Punkt S als absoluten Nullpunkt wähle und passend zum Drehwinkel jeden Punkt im Raum umrechne. Ist eine Idee. Hat jemand Erfahrungen mit so was?
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

AW: In einer 3D Welt bewegen.

  Alt 2. Nov 2017, 16:14
Im Grundlegenden ist die Antwort auf deine Fragen relativ einfach: Lineare Algebra.
Du kannst bspw. schauen, wie eine solche Aufgabe mit DirectX gelöst werden würde (Projektionsmatrizzen und Vektoren). Dich durch einführende Tutorials arbeiten wäre da ein guter Anfang, auch ein grundlegendes Verständnis zu entwickeln. Danach kannst du den Teil, den DirectX erledigt, manuell umsetzen. Aber als Vorwarnung: Das wird nicht einfach, sehr zeitintensiv, und der Lerneffekt wird das einzig Brauchbare davon sein.

Aus Neugier muss ich jetzt aber fragen: Wie zeichnest du derzeit Objekte aus unterschiedlichen Perspektiven? Deine Beschreibung was funktioniert und was nicht gibt mir Rätsel auf.
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: In einer 3D Welt bewegen.

  Alt 2. Nov 2017, 16:25
Habe deine Beschreibung nicht ganz verstanden. Willst du wirklich ein 3D Modell zeichnen, oder willst du lediglich die 2D Abbildung eines 3D Modells zeichnen (das was ich als "Minimap" bezeichnen würde, wie man sie auch aus Spielen kennt)?

Im ersten Falle, würde ich dir auch dringend dazu raten DirectX oder OpenGL zu verwenden.

Soll es nur die 2D Abbildung von Punkten sein, ist lineare Algebra schon das richtige Stichwort. Die Umrechnung von 3D Koordinaten nach 2D ist relativ trivial. Für Rotation oder Zentrierung auf einen Ursprungspunkt (z.b. eigener Spieler) verwende ich am liebsten Transformationsmatrizen. Dazu gibt es in DirectX 9 auch schon diverse Klassen und Hilfsfunktionen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
150 Beiträge
 
#4

AW: In einer 3D Welt bewegen.

  Alt 2. Nov 2017, 18:09
Im Grundlegenden ist die Antwort auf deine Fragen relativ einfach: Lineare Algebra.
Danke für den Tipp, dann muss ich mich damit näher beschäftigen.

Zitat:
Aus Neugier muss ich jetzt aber fragen: Wie zeichnest du derzeit Objekte aus unterschiedlichen Perspektiven? Deine Beschreibung was funktioniert und was nicht gibt mir Rätsel auf.
Vielleicht habe ich etwas übertrieben, als dass ich das alle Perspektiven genau zeichnen (berechnen) kann, aber für meine Ansprüche (Genauigkeit) reicht es. Grundlage sind die drei Punkte Standpunkt, Fluchtpunkt und Differenzpunkt. Mit etwas Geometrie und paar Winkelberechnungen lassen sich Entfernungen in die Tiefe und der Tiefe ermitteln. Aber wie gesagt funktioniert das nur in der Perspektive. Anscheinen muss ich mich etwas mit linearen Algebra beschäftigen um eine Fläche auf der ich mich befinde (ich nenne es mal Minimap) zu drehen.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: In einer 3D Welt bewegen.

  Alt 3. Nov 2017, 02:53
Vielleicht habe ich etwas übertrieben, als dass ich das alle Perspektiven genau zeichnen (berechnen) kann, aber für meine Ansprüche (Genauigkeit) reicht es. Grundlage sind die drei Punkte Standpunkt, Fluchtpunkt und Differenzpunkt. Mit etwas Geometrie und paar Winkelberechnungen lassen sich Entfernungen in die Tiefe und der Tiefe ermitteln. Aber wie gesagt funktioniert das nur in der Perspektive. Anscheinen muss ich mich etwas mit linearen Algebra beschäftigen um eine Fläche auf der ich mich befinde (ich nenne es mal Minimap) zu drehen.
Das solltest du mit den Transformationsmatrizen auch recht komfortabel hinbekommen. Stichwort ist hier die ViewMatrix (= Kamera). Die setzt du entsprechend deiner aktuellen Position und Blickrichtung und transformierst dann sämtliche Punkte aus deiner WorldMatrix.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz