Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 09, 2025 22:35

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 41 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Mathematik: Planare Texturprojektion
BeitragVerfasst: Mi Apr 23, 2008 15:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich möchte gern eine planare textur projektion berechnen.. aber nicht via OpenGL sondern von hand :)

Also ich habe lauter vertices die im raum verteilt liegen und einen "Projektor" an XYZ der in richtung XYZ strahlt und eine höhe und breite besitzt.. Alle vertices die der jetzt anleuchtet sollen entsprechend die textur koordinaten bekommen.

Wie das ganze theoretisch funktioniert ist kein thema, bei mir hapert es eher an der umsetzung.. wenn es eine orthogonale projektion ist bekomme ich das auch problemlos hin, nur sobald halt der projektor verdreht ist hört es bei mir auf und ich hab ka wie ich da nun berechne welches vertex wo auf fer projektions plane liegt.. :(

Hilfe~

Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2008 17:02 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Und warum drehst du den Projektor nicht zuerst wieder gerade? Dann isses wieder wie zuvor.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2008 17:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hmm... und dann die ganzen vertices einfach mit drehen?
Das wär natürlich auch machbar.. müßte ich halt die punkte alle um den projektor drehen :)

ok, probier ich mal aus ^^
aber falls jemand noch andere tolle ideen hat, ich bin immernoch offen :p


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 07:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Also an sich setzt du nur deine Projektorquelle als Kamera (View-Matrix), dazu die richtige Projektions-Matrix. Dann musst du in OGL nur folgende Matrix noch dazu mulen:

TP =

0.5 0 0 0.5
0 0.5 0 0.5
0 0 0.5 0.5
0 0 0 1

Wäre also: Vertex' = TP * Proj * View * Model * Vertex.
Die xy-Werte von Vertex' sind jetzt die Texturkoordinaten die du suchst.

Bei DX ist die TP-Matrix leicht anders, weil der Texturspace dort mit y-Achse nach unten verläuft und nicht wie in OGL nach oben.

Kannst du auch zB hier nachlesen (in der Mitte von der Seite ca.):
http://www.gamedev.net/reference/articles/article2138.asp

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 24, 2008 08:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Aya hat geschrieben:
Hich möchte gern eine planare textur projektion berechnen.. aber nicht via OpenGL sondern von hand :)


Dennoch, wenn du dir mal anschaust, wie die einzelnen Matrizen berechnet werden und sie dann "von hand" im Programm erstellst und anwendest, könnte aus dem, was Pallaeon vorgeschlagen hat, was werden.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 08:30 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Und was ist, wenn man keine Viewmatrix hat? Dann sieht man ein bisschen alt aus. :roll:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 09:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

mhh.. aber alles was ich habe ist die position und rotation der projektion... ich bräuchte also da jetzt die View und Projections matrix von...

Hat da jemand zufällig grad was zur hand wie ich die berechne? ^^ (Falls ich auf meiner suche gleich nicht fündig werde)

Die projektion müßte ja in dem fall wie eine orthogonale camera sein, also nicht perspektivisch.

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 10:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Das war auch so gemeint, dass die Matrixberechnung "per Hand" zu machen ist und nicht via OGL-Funktionen. Das OGL und DX sollte sich wirklich nur auf den Texture-Space beziehen in den Systemen.

Die Formeln für die Matrizen sollten doch alle im Wiki hier zu finden sein?
Ach ja und ein typischer Projektor dürfte doch eher persp. Proj sein und keine orthogonale, oder? Aber kannst ja testen, musst ja nur die Matrix anpassen.

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 10:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Projektionsmatrix: gluPerspective
Und die anderen Operationen findest du in: Tutorial Nachsitzen

Ich denke, du solltest das so machen, wie du auch in OpenGL eine Matrix aufsetzen würdest. Erst baust du dir eine Modelviewmatrix mit der Drehung und der Verschiebung des Projektors. Dann baust du dir die Projektionsmatrix indem du in den im Artikel genannten Formeln deine Werte einsetzt und dann multiplizierst du beide miteinander (aber ich bin mir gerade nicht über die Reihenfolge sicher, ich glaube aber ModelView * Projection).

Dann musst du nurnoch deine Vertices mit der resultierenden Matrix multiplizieren und theoretisch bekommst du dann Werte von 0 - 1 heraus, die sich wunderbar auf Texturkoordinaten mappen lassen sollten.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 10:47 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu,

was is denn der unterschied zwischen view und model matrix?

Die projection matrix hab ich jetzt mal so wie im wiki bei glOrtho beschrieben berechnet... die modelview matrix muß ich ja jetzt anhand der kamera position/rotation berechnen oder?

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 10:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja, die Modelview berechnest du mittels deiner Position und drehung.

Aber warum benutzt du für einen Projektor eine Orthogonale Projektion? Das verstehe ich nicht ganz... Naja, komischer Projektor halt :wink:

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 10:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Na weil es halt ne planare projektion sein soll ohne perspektivische verzerrung :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 11:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich würde meinen, glOrtho ist schon OK. Der Untersched zwischen Model- und ViewMatrix ist, das die ViewMatrix nur von der Position/Rotation der Kamera abhängig ist und die ModelMatrix ZUSÄTZLICH noch von der Position/Rotation des Objekts. Also wenn Du mehrere Objekte hast, braucht jedes davon eine eigene Modelmatrix, die zur Viewmatrix hinzumultipliziert wird (Push/Pop usw.) Aber ich glaube das brauchen wir hier garnicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 13:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

klappt soweit, hab nur noch ein kleines problem... was geb ich denn bei der Ortho-Matrix als höhe/breite an? (bzw Top, Left, Bottom und Right)
Ich würd jetzt spontan die breite von meiner textur benutzen, aber.. ist das sinnvoll?

Bzw, ich würd gern jetzt meinen "projektor" im 3Dview anzeigen, position ist ja kein problem, aber wenn ich ihn als Quad darstellen will, was nehm ich da als höhe/breite von dem quad? Also ich meine... wie schließe ich von meiner höhe/breite meiner ortho-matrix auf die höhe/breite von meinem quad in pespective 3D?

Aya~

PS: Um euch kurz zu erklären warum ich kein OpenGL für die berechnung nehmen kann, obwohl ich es in 3D darstelle... es ist ein plugin für ein programm welches zwar einen 3D Space hat, der aber nur zur darstellung von dingen da ist. Die berechnung des ganzen muß halt trotzdem ohne OpenGL passieren :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 24, 2008 14:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
habs hinbekommen ^.^


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 41 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 16 Queries | GZIP : On ]