Bedeutung und Anwenden der Zahlen in 3D-Befehlen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Berti27
Beiträge: 49
Registriert: 22.03.2008 14:12
Wohnort: Mecklenburg Vorpommern

Bedeutung und Anwenden der Zahlen in 3D-Befehlen

Beitrag von Berti27 »

Hallo,
nun schon seit vielen Stunden versuche ich, mich in die Systematik der 3D-Befehle anhand der zahlreichen Beispiele einzuarbeiten. Eine Suche hier im Forum, in der "PB-Hilfe" und auch sonstwo, wie dem "Pure-Basic-Buch" brachten nicht die Erkenntnis, die ich haben wollte.
Natürlich sind Koordinaten x,y,z klar. aber was ist mit Größe, WeltGröße, Skalierung usw.?
In diesem Zusammengang bin ich auch noch nicht dahintergekommen, wie das von der Kamera erfasste Bild des Geländes (Terrain) verändert werden kann. Gut, ich kann in den Beispielprogrammen mit der PageDown-Taste zurückgehen, aber wo wird dieser Anfangs-Wert gesetzt?
Ich hoffe, dass ich durch Eure Antworten bald den Aha-Effekt erlebe!
Herzliche Grüße
Berti27
Mit freundlichen Grüßen
Berti27
PureBasic 4.60 und 5.46 auf Windows 7 und Xubuntu
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Bedeutung und Anwenden der Zahlen in 3D-Befehlen

Beitrag von STARGÅTE »

Da niemand anderes hier antwortet schreib ich mal was, obwohl ich nicht genau weiß, ob ich die Frage richtig verstanden hab.
Berti27 hat geschrieben:Natürlich sind Koordinaten x,y,z klar. aber was ist mit Größe, WeltGröße, Skalierung usw.?
Genau so wie X,Y und Z die Position (in Meter) in der Welt angeben, so gibt WeltGröße die Abmessungen des Terrain in Meter an. Größe gibt die Anzahl der Unterteilungen (des Meshs) an, also sowas wie die Anzahl der Pixel, wenn du z.B. eine Höhenkarte als Bild hast. Skalierung ist halt einfach nur n Wert um 1.0, welches das Terrain vergrößert/verkleinert.
Berti27 hat geschrieben:In diesem Zusammengang bin ich auch noch nicht dahintergekommen, wie das von der Kamera erfasste Bild des Geländes (Terrain) verändert werden kann. Gut, ich kann in den Beispielprogrammen mit der PageDown-Taste zurückgehen, aber wo wird dieser Anfangs-Wert gesetzt?
Hier weiß ich nicht welches Beispielprogramm du meinst.
Aber generell hängt es von der Kameraposition ab, wo diese steht, und somit was vom Terrain gesehen wird.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Berti27
Beiträge: 49
Registriert: 22.03.2008 14:12
Wohnort: Mecklenburg Vorpommern

Re: Bedeutung und Anwenden der Zahlen in 3D-Befehlen

Beitrag von Berti27 »

Danke, Stargate!
Einiges habe ich am nächsten Morgen selbst herausgefunden (wie das immer so ist).
Ich habe die (verrückte) Idee, die Terrainhöhe als Höhenbild für ein menschliches Gesicht zu missbrauchen. Eine einfache fleischfarbene Textur und Licht dazu, und durch die Schattenblidung entsteht dann das Gesicht.
Dazu müsste natürlich als Höhenbild nur ein Höhenbild angezeigt werden, also nicht 3*3, wie in den 3D-Beispielen und die eingefügte Textur auch nur ein Mal. Beides habe ich inzwischen (mit Abstrichen) hinbekommen. Außerden sollte die Kamera einigermaßen senkrecht auf dieses Objekt sehen. Die Angaben zum Kamerawinkel sind dabei in Grad anzugeben; also beispielsweise bei "RotateCamera" in meinem Falle x=90 Grad, also 90 eingetragen.
Die Angaben von "WorldSize" und "Scale" sind wahrscheinlich Prozentangaben im Verhältnis zur Terrainhöhe (256 Höhenstufen). Jedenfalls stellt sich das bei mir so dar, wenn ich für beide Werte "100" eingetragen habe.
Quasi die "Brennweite des Kameraobjektives" kann mit FOV in "CameraFOV(#Camera, FOV)" eingestellt werden.
Nun tut sich aber ein nächstes Problem für mich auf: Man sieht die einzelnen Höhenstufen (es sind ja nur 256, also grob gerechnet 1 mm/Höhenänderung im Gesicht) bei einer einfarbigen Textur wie Höhenlinien auf einer Landkarte. In den 3D-Beispielen ist derlei bei den dort eingesetzten drei verschiedenen Texturen (eigentlich sech, da bei "AddTerrainTexture" immer zwei angegeben werden) der Beispiele nicht einmal ansatzweise, egal, welcher AntialiasingModes, nicht sichtbar.
Welche Funktion haben diese beiden Texturen?
Gibt es irgendwo einen Glättungsmodus)?
Lässt sich das gerenderte Bild auch in einem Image- oder Canvas-Gadget und nicht nur auf einem Fenster darstellen?
Wo kann ich mich da informieren?

Mit freundliche Grüßen
Bert27
Mit freundlichen Grüßen
Berti27
PureBasic 4.60 und 5.46 auf Windows 7 und Xubuntu
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Bedeutung und Anwenden der Zahlen in 3D-Befehlen

Beitrag von man-in-black »

Hi Berti,

eigentlich wollte ich dir neulich schon antworten,
leider hat mich das Netz und später die Erinnerung verlassen. ;)
Aktuell bin ich wieder nur mobil hier, würde mir aber dein
Problem Heute Abend angucken, wenn du bis dahin deinen aktuellen Code reinstellst.
Bis dahin solltest du dir dein Höhenbild genauer angucken.
Wenn dort alle 2 Pixel den gleichen Wert haben, ist das später als Stufe sichtbar.
Umgekehrt habe ich den Effekt auch bei der Schattenberechnung gesehen.
Hier könntest du auch die 'Glätte' optimieren.

Alles andere später.

MFG
MIB
(hab alles, kann alles, weiß alles!!^^)

Bild
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

Re: Bedeutung und Anwenden der Zahlen in 3D-Befehlen

Beitrag von xdes »

hi,

auch wenn man-in-black bestimmt die bessere Lösung hat :lurk:

aber evtl schon mal zum vorlesen (evtl hilfst ja):

zu den Texturen..... ich bin mir nicht sicher aber ich vermute es ist besser als meine Erklärung....
(kurzum es gibt eine haupt Grafik und eine die hilft bei der licht Interaktion das beste ist denke ich die pb hilfe...)

hier ein link der es vielleicht besser darstellt aber ich garantiere für nichts (Nutzung auf eigene Gefahr) https://wiki.splashdamage.com/index.php ... oldid=3837

zum Glättung Modus ... mir ist keiner bekannt aber du kannst versuchen es auf zu teilen so das du mehr punkte hast .... und dann ein Mittelpunkt zu berechnen so das das ganze nicht so eckig ist ... wäre meine Idee ... (noch nie versucht)

zu den Gadget Thema ...
ich kann mir vorstellen das das OpenGLGadget() das ist was du suchst ... sonst würde mir noch eher schlechte Ideen über ein Screenshot einfallen... (da bin ich auf die Lösung von man in Black besonders gespannt)

ps: ich vermute es geht um eine modifizierte Version von der Terrain.pb beispiel Datei?
Antworten