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

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Kernel32

Betreff: UV-Koordinaten um 90° rotieren *grübel*

BeitragSo, Nov 19, 2006 12:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Sad
-------------
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

BeitragSo, Nov 19, 2006 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 19, 2006 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm, dreamora, kann das sein, dass du da gerade bei deiner letzten formel x und y vertauscht hast?
MrKeks.net
 

Dreamora

BeitragSo, Nov 19, 2006 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 19, 2006 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 19, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Klappt, danke! Very Happy
-------------
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group