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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

13.11.2013, 00:52

Meinst du ich soll dieses Texture Rect als Basis meiner Texturekoordinaten nehmen und dann erst diese an das Shape anpassen?

Genau, anstatt den Bereich §[0, 1]^2§ auf das Polygon zu mappen, mappest du nun eben einen Ausschnitt davon auf das Polygon...

Deine Punkte machen mich immer noch verrückt. :D

So bin ich nunmal... :P

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

22

13.11.2013, 11:20

Irgendwie steig ich nicht dahinter wie ich das anstellen soll. Rechne ich dieses Offset temporär auf meine Vertices und berechne mir so die Texture Koordinaten? Oder wie muss ich das verstehen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

23

13.11.2013, 13:40

Spielen wir das mal theoretisch für ein Sechseck durch.

Ich habe eine Texture mit den Maßen: 140x140px
Mein Texture Rect ist: (25, 25, 100, 100)

Die Texturkoordinaten angepasst an das Texture Rect:
tx = 25 / 140 = 0.17857
ty = 25 / 140 = 0.17857
tw = 100 / 140 = 0.714
th = 100 / 140 = 0.714

Meine Vertices:
(100, 100)
(125, 50)
(175, 50)
(200, 100)
(175, 150)
(125, 150)

Durch die Vertices errechnete Texturkoordinaten:
(0, 0.5)
(0.25, 0)
(0.75, 0)
(1, 0.5)
(0.75, 1)
(0.25, 1)

Nun muss ich meine an Hand der Vertices errechneten Texture Koordinaten und die durch das Texture Rect errechneten ja irgendwie kombinieren.
Ich verstehe bloß nicht wie. Direkte Kombinierung (also Addition) kann ja nicht klappen. Also wie mache ich das am schlausten? :hmm:
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

13.11.2013, 13:42

Ich würde mal sagen: Deine texcoords mit tw/th multiplizieren und tx/ty addieren... ;)

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

25

13.11.2013, 14:01

Ich würde mal sagen: Deine texcoords mit tw/th multiplizieren und tx/ty addieren... ;)

Hmm, das macht Sinn.
Also wird aus (0, 0.5) -> [(0 * 0.714) + 0.071, (0.5 * 0.714) + 0.071] = (0.071, 0.428)
Sollte passen, oder?

Aber da steckt doch 'ne Logik hinter die sich mir nicht ganz offenbart. Magst du mir mal Nachhilfe geben und erklären, warum es sich so verhält wie es sich verhält? :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

26

13.11.2013, 14:02

Die Logik ist ganz einfach: Du hast ein größeres Rechteck und willst es in ein kleineres, etwas verschobenes Rechteck einpassen → skalieren + verschieben... ;)

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

27

13.11.2013, 14:08

Die Logik ist ganz einfach: Du hast ein größeres Rechteck und willst es in ein kleineres, etwas verschobenes Rechteck einpassen → skalieren + verschieben... ;)

Ich hab' scheinbar ein paar Wissens Lücken... :)
Danke Dot, du wirst deinem Namen gerecht. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

13.11.2013, 17:12

Machen wir's mit deinen konkreten Zahlen, dann ist es vielleicht verständlicher.

Du mappest dein Polygon anfangs erstmal in den 0..1 Bereich, d.h. du mappest die Vertices in ein 1×1 Rechteck, dessen linke untere Ecke (OpenGL, nehmen ich mal an!?) bei (0,0) liegt.
Eigentlich hättest du sie aber gerne in ein 0.714×0.714 Rechteck gemapped, dessen linke untere Ecke bei (0.17857, 0.17857) liegt.
Nichts leichter als das, da deine Koordinaten ja im Moment 0..1 sind, kannst du sie einfach mit 0.714 multiplizieren, um sie in den 0..0.714 Bereich zu bekommen. Dann nur noch die Verschiebung draufaddieren, da du ja nicht bei 0, sondern bei 0.17857 anfangen willst.

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

29

13.11.2013, 17:42

Machen wir's mit deinen konkreten Zahlen, dann ist es vielleicht verständlicher.

Du mappest dein Polygon anfangs erstmal in den 0..1 Bereich, d.h. du mappest die Vertices in ein 1×1 Rechteck, dessen linke untere Ecke (OpenGL, nehmen ich mal an!?) bei (0,0) liegt.
Eigentlich hättest du sie aber gerne in ein 0.714×0.714 Rechteck gemapped, dessen linke untere Ecke bei (0.17857, 0.17857) liegt.
Nichts leichter als das, da deine Koordinaten ja im Moment 0..1 sind, kannst du sie einfach mit 0.714 multiplizieren, um sie in den 0..0.714 Bereich zu bekommen. Dann nur noch die Verschiebung draufaddieren, da du ja nicht bei 0, sondern bei 0.17857 anfangen willst.

Jap. Ist mein Beispiel aus meinem vorherigen Post etwa falsch? Hier nochmal:
Ich würde mal sagen: Deine texcoords mit tw/th multiplizieren und tx/ty addieren... ;)

Hmm, das macht Sinn.
Also wird aus (0, 0.5) -> [(0 * 0.714) + 0.071, (0.5 * 0.714) + 0.071] = (0.071, 0.428)
Sollte passen, oder?

Aber da steckt doch 'ne Logik hinter die sich mir nicht ganz offenbart. Magst du mir mal Nachhilfe geben und erklären, warum es sich so verhält wie es sich verhält? :)


Meine Aussage über Wissenslücken sollte eig. meinen, dass es von diesen zeugt, das ich nicht alleine auf so etwas simples gekommen bin. :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

30

13.11.2013, 17:56

Achso, ich dachte, es wäre noch was unklar, aber dann passt ja alles... ;)

Werbeanzeige