UV-Koordinaten um 90° rotieren *grübel*
Übersicht

Kernel32Betreff: UV-Koordinaten um 90° rotieren *grübel* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe ein Level voller Steinquader. Auf der Steintextur ist der Lichteinfall fest eingezeichnet und kommt von links oben. Wenn ich viele Quader im Level benutze und einige nach links, andere rechts herum drehe, kommt bei jedem Quader der Lichteinfall von einer anderen Seite. Deshalb möchte ich das so machen, das man zwar die Quader immer um 90° drehen kann, die Texturen aber alle gleich ausgerichtet bleiben.
Dafür müsste man die UV-Koordinaten beim Drehen eines Quaders neu anpassen, also um 90° in die entgegengesetzte Richtung drehen, damit die Textur wieder wie vorher ausgerichtet ist. Habe das mal versucht (Textur um 90° nach rechts drehen), aber es zeigt keine Veränderung: Code: [AUSKLAPPEN] For i = 0 To CountVertices(Surf)
u# = VertexU(Surf,i) + Sin(90) v# = VertexV(Surf,i) + Cos(90) VertexTexCoords Surf,i,u,v Next Mir qualmt schon der Kopf, weil ich die ganze Nacht durchgeproggt habe. Was habe ich übersehen? ![]() |
||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Transformation ist auch inkorrekt.
Die Rotationstransformation ist x = oldX*cos(winkel) + oldY*sin(winkel) y = oldX* -sin(winkel) + oldY*cos(winkel) Wobei in deinem Fall hier auch noch vereinfacht würde, da cos(+- 90) = 0 Somit bliebe x = oldY*sgn(winkel) ; um +- 90 zu ermöglichen y = -oldX*sgn(winkel) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am So, Nov 19, 2006 16:38, insgesamt 3-mal bearbeitet
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
öhm, dreamora, kann das sein, dass du da gerade bei deiner letzten formel x und y vertauscht hast? | ||
MrKeks.net |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Peinlich peinlich.
Natürlich ist cos(90) = 0, nicht sin, insofern dreht sich das ganze. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] | cos(90°) sin(90°) |
| -sin(90°) cos(90°) | -> Code: [AUSKLAPPEN] | 0 1 |
| -1 0 | Code: [AUSKLAPPEN] | U |
x | V | -------+----+ | 0 1 | V | | -1 0 | -U | -> Code: [AUSKLAPPEN] For Index = 0 To CountVertices(Surface) - 1
u = VertexU(Surface, Index) v = VertexV(Surface, Index) VertexTexCoords Surface, Index, V, -U Next mfg olli |
||
vertex.dreamfall.at | GitHub |
Kernel32 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klappt, danke! ![]() |
||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group