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

Aktuelle Zeit: So Jul 13, 2025 16:49

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: UV -> Weltkoordinate
BeitragVerfasst: Di Jun 05, 2007 16:18 
Offline
DGL Member
Benutzeravatar

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

ich brauch grad mal einen kleinen denkanstoß.. ich habe ein Mesh aus Polygonen und deren UVs.
Die polygone überlappen sich im UV Layout nicht, so das jedes UV eindeutig zu einem Polygon gehört.

Ich möchte jetzt wissen, an welcher stelle in Weltkoordinaten (X, Y, Z) das Fragment an UV 0.3, 0.4 ist.
Gibt es da irgendeinen ganz tollen, schnellen algorithmus für?

Im moment gehe ich in ner for-schleife jedes Polygon durch und schaue via PtInPoly function erstmal nach ob die uv koordinaten innerhalb dieses Polygons liegen.. wenn ja berechne ich dann anhand dessen die Weltkoordinate.

Das klappt soweit wunderbar, ist aber leider verdammt langsam... hat da jemand eine idee wie ich das schneller bekommen könnte?

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Nur so ne fixe Idee: In Shadern arbeitet man ja mit der Variable gl_FragCoord, über diese könnte man die Position des Fragments ja abfragen.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 16:34 
Offline
DGL Member
Benutzeravatar

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

La Boda hat geschrieben:
Nur so ne fixe Idee: In Shadern arbeitet man ja mit der Variable gl_FragCoord, über diese könnte man die Position des Fragments ja abfragen.

das hatte ich vergessen zu sagen.. ich brauche es so, ohne OpenGL.. :)

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich verstehe Deine Frage nicht, Aya. Wenn die Zuordnung Vertex(X,Y,Z) ==> UV eine eindeutige ist, dann muss es eine Funktion geben:
  • 3D-Flächenpunkt aus Ebene => Textur-Flächenpunkt
  • Zylinderoberflächenpunkt => Textur-Flächenpunkt
  • Kugeloberflächenpunkt => Textur-Flächenpunkt
  • Sonstwieflächenpunkt => Textur-Flächenpunkt

und Du musst einfach nur die Umkehrfunktion nehmen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 19:13 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Traude hat geschrieben:
Ich verstehe Deine Frage nicht, Aya. Wenn die Zuordnung Vertex(X,Y,Z) ==> UV eine eindeutige ist, dann muss es eine Funktion geben:

Es ist nicht ganz so einfach, da Aya ja behauptet, daß sie mehrere faces hat und er möchte also das passende face zu UV finden - sucht also eine Funktion UVs -> FaceNummern. (Ausserdem sind Umkehrfunktionen manchmal nicht so ganz leicht zu berechnen. In der Mathematik genügt häufig freundlicherweise das Wissen, daß das existiert und daß man das Inverse bestimmen könnte ;-) ) Ich denke aber der einfachste Trick ist, jedes Face zu nehmen und seine "Nummer" in ein Bitmap zu malen, das die selben Ausmaße hat, wie die Textur. Zu zeichnest Quasi die UV Koordinaten des Face in die Textur zurück und als Füllfarbe nimmst du die nummer des Faces - jedenfalls von der Idee her. Obs tatsächlich super geschickt, ein echtes Bitmap zu nemen und echt zu zeichnen sei dann mal dahingestellt ;-) Ansonsten kann man die UV-Koordinaten der Faces auch in Quadtree manier ablegen, allerdings hat die Facekartenvariante den Vorteil, daß du das gesuchte Face in konstanter Zeit findest, während eine Quadtree/BSP-tree-suche auf n*log(n) hinauslaufen wird.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 20:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Hallo Nico,
Die Methode mit der Bitmap ist ausgezeichnet (eine Bitmap-Datenbank :wink:). Werde ich mir mal vormerken.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.008s | 16 Queries | GZIP : On ]