Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.12.2011, 16:41

Perspective Texturemapping, Ich komme nicht weiter

Nabend allerseits,

Habe soeben angefangen Texturemapping in meinen Softwarerenderer einzubauen.
Mit Hilfe der Artikel

Link
Link(Googlecache)

Ok, planar klappts auch super, nur perspektive geht nach hinten los. Heißt ich nutze wohl noch Affine Texture-Mapping.

So kalkuliere ich die U/V koordinaten:

Quellcode

1
2
 LU := Trunc(-(FUA*LX + FUB * LY + FUD)/FUC * (FTexture.Width-1));
 LV := Trunc(-(FVA*LX + FVB * LY + FVD)/FVC * (FTexture.Height-1));


Da U/V hier am ende Cardinals sind, muss ein Trucn drumherum(Float->Integer).
Alles was ich bisher über Perspektives Texturemapping gelesen habe, leuchtet mir nicht ganz ein oder will nicht funktionieren. Wie berücksichtige ich den die Tiefe? In einigen Artikeln wird einfach durch Z geteilt.(Z liegt hier normalisiert vor, 0-1 in meiner clipprange).

Vielleicht kann mir jemand von euch dass mal verständlicher erklären >.<

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

2

06.12.2011, 20:28

Entschuldigt den Push, aber hat keiner ne Idee :(.

Es ist wahrscheinlich irgend etwas simples was ich übersehe, aber ich komme nicht drauf v.v

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

06.12.2011, 23:37

Ich denke das ist eine Sache, die hier noch fast keiner selber implementieren musste ...
Von daher würde es mich wundern, wenn jetzt hier jemand aus dem Nähkästchen plaudern könnte.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

07.12.2011, 09:23

Chris Hecker hat vor Jahren eine Tutorial-Reihe zu dem Thema geschrieben: http://chrishecker.com/Miscellaneous_Technical_Articles
@D13_Dreinig

5

07.12.2011, 23:25

@David: ach mist wie konnte ich den den vergessen^^. Vor nem Jahr mal da gewesen, aber da war mein rasterizer nicht so weit dass ich über Texturemapping hätte nachdenken können. Der hatte noch ganz andere probleme :P.

Werde ich mir bei zeiten zu gemüte führen :)

@David: wen ichs hinbekomme kann icht vllt demnächst aus dem nähkästchen plaudern^^
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

6

18.05.2012, 23:05

Bezüglich meines letzten komments wollte ich nur mal updaten dass ich es NICHT geschafft habe. Es ist zum verzweifeln.

Zuletzt das hier gefunden:
http://www.flipcode.com/archives/The_Art…e_Mapping.shtml

Was auch gut zu verstehen war, allerdings lässt er normales UV mapping außen vor und generiert sich seine UV koordinaten direkt aus den polygon vectoren. Da muss ich nochmal gucken. BAer das ergebnis wirkt auch so noch nicht ganz korrekt -.-
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

7

19.05.2012, 00:13

Eventuell einfach nochmal woanders nachfragen. Vielleicht auf einer Internationalen Seite/Mailingliste.
Lieber dumm fragen, als dumm bleiben!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

19.05.2012, 09:30

Bezüglich meines letzten komments wollte ich nur mal updaten dass ich es NICHT geschafft habe. Es ist zum verzweifeln.


Man könnt jetzt raten.. Aber was ist denn konkret das Problem?
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

19.05.2012, 12:50

Rein prinzipiell funktioniert perspective correct interpolation einfach so, dass du eben nicht u und v direkt, sondern stattdessen u/w, v/w und 1/w linear interpolierst. Dann berechnest du an jedem Pixel den Kehrwert des interpolierten 1/w und multiplizierst deine interpolierten u/w und v/w Werte damit um u und v zu erhalten...

10

19.05.2012, 13:43

@Dot: und ja genau dort scheint etwas schief zu laufen.
und ich weiß nicht was(ist übrigens das erste mal das ich etwas von kehrwert fürs texturemapping lese)

also Z ist normalisiert vorhanden(0 - 1)
X/Y im Screenspace (-256 - +256)
U/V im Bereich (0 - 1)

frontalansicht stimmt, erst wenns gedreht wird wirds schief/verzert.

Ist W = Z, oder mache ich hier den fehler?

EDIT @Dot: ach wo du das gerade schreibst fällt mir auf dass ich U/V linear interpoliere und am ende versuche das perspektivisch zu korrigieren.
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

Werbeanzeige