Aktuelle Zeit: 06.04.2020 07:26

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 08:16 
Offline
Benutzeravatar

Registriert: 25.01.2011 04:48
Hi.

Es kam mir der Gedanke, es dürfte doch möglich sein, mittels mathematiischer Berechnungen eine 3D-Welt auf einem Canvas oder via Sprite-Library auf einem Screen zu rendern.

Meine Frage ist, wie ermittelt man die Screenpositionen der 3D-Punkte und wie erfährt man, ob eine Textur/Oberläche im Vordergrund oder hinter anderen Oberflächen/Texturen posioniert ist?

Ich saß im Mathe-Leistungskurs, ihr könnt also gern Formeln herballern. Mir persönlich fehlt jeglicher Ansatz...

Grüße

es_91


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 09:52 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
es_91 hat geschrieben:
Es kam mir der Gedanke, es dürfte doch möglich sein, mittels mathematiischer Berechnungen eine 3D-Welt auf einem Canvas oder via Sprite-Library auf einem Screen zu rendern.

Mittels Drawing2D und einem Canvas ist es ohne weiteres möglich eine 3D Welt zu rendern, hier ein Include von mir:
Drawing3D - Draw-Befehle für 3D-Szenen
Mit der Sprite-Library geht es leider nur eingeschränkt. Zwar ist es ohne Probleme möglich Sprites als 3D-Welt zu rendern (http://www.purebasic.fr/german/viewtopic.php?p=336371#p336371), da jedoch die Sprites nacheinander gerendert werden, ist zwar eine Z-Sortierung möglich, aber keine Durchdringung!

es_91 hat geschrieben:
Meine Frage ist, wie ermittelt man die Screenpositionen der 3D-Punkte und wie erfährt man, ob eine Textur/Oberläche im Vordergrund oder hinter anderen Oberflächen/Texturen posioniert ist?

Dazu benutzt man homogene Koordinaten, also 4-Dimensionale Vektoren, von denen 3 die drei Raumrichtungen X, Y und Z präsentieren und die 4. Komponente W = 0 (Richtung) oder W = 1 (Ort) ist. Mit zusätzlichen 4D-Matrizen können dann alle möglichen Transformationen durchgeführt werden und Schluss endlich bekommt man wieder ein 4D-Vektor, von dem X und Y deine Screenkoordinaten sind und Z und W Informationen zur Tiefe enthalten.
Weiterführende Links:
https://en.wikipedia.org/wiki/3D_projection
http://www.songho.ca/opengl/gl_projectionmatrix.html

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 11:20 
Offline
Benutzeravatar

Registriert: 25.01.2011 04:48
es_91 hat geschrieben:
Es kam mir der Gedanke, es dürfte doch möglich sein, mittels mathematiischer Berechnungen eine 3D-Welt auf einem Canvas oder via Sprite-Library auf einem Screen zu rendern.
>>
STARGÅTE hat geschrieben:

Hierfür danke! Ich werde mich damit auseinandersetzen, doch zuerst noch ein paar Fragen zu viewtopic.php?f=10&t=22128
STARGÅTE hat geschrieben:
Das Include soll nicht als 3D-Engine benutzt werden (dafür ist es zu langsam), sondern dient zum Rendern von kleinen Szenen.

Ein Grund, warum ich hier die Frage stelle, ist das Ding mit SpiderBasic. Dort hat es derzeit keine 3D-Engine und ein Browser dürfte sowieso nochmal viel langsamer reagieren, als eine "echte" Grafik-CPU, darum frage ich Dich direkt:

Könnte Dein include irgendwie auf moderneren Rechnern noch eine 3D-Engine für Spiele/kleinere Welten und Szenerien im Browser abgeben?

Sicher verwendest Du auch Pointer, die unter SpiderBasic ja meiner Festellung nach nur sehr eingeschränkt funktionieren.

Des Weiteren:

STARGÅTE hat geschrieben:
Mit der Sprite-Library geht es leider nur eingeschränkt. Zwar ist es ohne Probleme möglich Sprites als 3D-Welt zu rendern [...], da jedoch die Sprites nacheinander gerendert werden, ist zwar eine Z-Sortierung möglich, aber keine Durchdringung!

Das hieße nicht nur, dass Transparenz unmöglich wäre, sondern auch jede Art "interner" Beleuchtung, richtig ? Aber es gab doch die Möglichkeit, Sprites auch transparent darzustellen, könntest Du bitte dazu etwas sagen?



:D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 12:54 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
>> "Könnte Dein include irgendwie auf moderneren Rechnern noch eine 3D-Engine für Spiele/kleinere Welten und Szenerien im Browser abgeben?"
Ich denke nicht. "Heute" schreibt man keine CPU-3D-Engine mehr, dafür ist die Erwartungshaltung für das was dargestellt wird zu hoch. Was ich damit sagen will ist: Wenn deine 3D-Welt nur auch Linien besteht, ist meine Engine durchaus geeignet, aber sobald Texturen gargestellt werden sollen (was ja gehen würde) wäre die CPU-Lösung viel zu langsam.
Auch Browsergames nutzen ja nicht die CPU sondern haben ebenbürtige "echte" 3D-Engines.

>> "Das hieße nicht nur, dass Transparenz unmöglich wäre, sondern auch jede Art "interner" Beleuchtung, richtig ? Aber es gab doch die Möglichkeit, Sprites auch transparent darzustellen, könntest Du bitte dazu etwas sagen?"
(halb)-Transparente Sprites darzustellen ist ohne weiteres möglich. Man muss dabei nur auf die genaue Reihenfolge achten.
Wenn also alle anzuzeigenden Sprites (bzw. Texturflächen) erst nach Z-Tiefe sortiert werden und dann von hinten nach vorne angezeigt werden, funktioniert das.
Die Beleuchtung ist da etwas komplizierter. Da du keinerlei Zugriff auf die Pixel hast (im Rahmen der Sprite-Lib) und nicht mal die 4 Ecken des Sprites kontrollieren kannst, können nur immer ganze Sprites einheitlich in der Farbe geändert werden.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 13:05 
Offline
Benutzeravatar

Registriert: 25.01.2011 04:48
Ok. Was wäre, wenn die Welt nicht aus Texturen, sondern nur aus einfarbigen Flächen bestehen würde? Kannst Du dazu derzeit eine Aussage treffen?

(Wenn ich Dich richtig verstanden habe, würde schon ein berechneter Farbverlauf/Gradient zuviel Leistung ziehen, stimmt das auch?)

_________________________________

>> Wenn deine 3D-Welt nur auch Linien besteht, ist meine Engine durchaus geeignet, aber sobald Texturen gargestellt werden sollen [...] wäre die CPU-Lösung viel zu langsam.
_________________________________


Wieder ein Dankeschön. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 15:14 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
es_91 hat geschrieben:
Ok. Was wäre, wenn die Welt nicht aus Texturen, sondern nur aus einfarbigen Flächen bestehen würde? Kannst Du dazu derzeit eine Aussage treffen?

Textur oder Fläche ist egal, es kommt auf die gerenderten Pixel an.
es_91 hat geschrieben:
(Wenn ich Dich richtig verstanden habe, würde schon ein berechneter Farbverlauf/Gradient zuviel Leistung ziehen, stimmt das auch?)

Nein. Wenn eine Fläche eh berechnet werden muss, und Pixel für Pixel gerendert wird, ist ein "bisschen" Farbverlauf auch nicht mehr wild.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Self-made 3D innerhalb 2D-Engine?
BeitragVerfasst: 24.09.2016 16:09 
Offline
Benutzeravatar

Registriert: 25.01.2011 04:48
Und könnte man die pixelgenaue Renderung nicht umgehen, indem man jede Textur der Reihe nach zweidimensional verzerrt und dann, rundum transparent, alle übereinanderzeichnet?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye