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

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

1

17.05.2008, 15:40

wie funktioniert tbMatrix Scaling?

Hey,
ich habe ein kleines Prob und zwar sind meine Modelle größer als ich sie haben möchte. Jetzt habe ich hier mal ein bisschen die Forensuche angestrengt und bin wie bei meinen Recherchen im Buch auf die Skalierungsmatrix gestoßen. Jetzt ist aber das Problem, dass die nicht so funktioniert wie ich denke das sie es sollte. Vllt. kann mir jemand den Fehler zeigen.

ich habe das in etwas so:

C-/C++-Quelltext

1
mWorld = tbMatrixScaling(0.5f) * tbMatrixRotationY(TB_DEG_TO_RAD(90.0f)) * tbMatrixTranslation(0.0f, 0.1f, 130.0f);


wenn ich das richtig sehe sollte diese Weltmatrix jetzt eig. das Model mit einer 90 Graddrehung und einer Verschiebung von 130 und en paar zerqutschte halb so groß wie original abbilden oder? das tut sie aber bei mir nicht :(

ich hab auch schon einfach mal g_fTime der Skalierungsmatrix übergeben aber dann sehe ich nur wie mein Model auf mich zukommt und nicht an der stelle bleibt und größer wird wie es das eig. sollte :?:

würde mich echt freuen wenn mir jemand kurz auf die Sprünge helfen könnte

thx

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

17.05.2008, 16:12

Weiss jetzt nicht, ob das hilft, aber probier mal zuerst zu rotieren und dann zu skalieren.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

17.05.2008, 16:31

nicht ganz so gut, drakon^^die reihenfolge ist schon richtig :)

du musst aber einen vektor übergeben, da du in 3 achsen scalieren kannst. so sollte es gehen:

C-/C++-Quelltext

1
mWorld = tbMatrixScaling(tbVector3(0.5f,0.5f,0.5f)) * tbMatrixRotationY(TB_DEG_TO_RAD(90.0f)) * tbMatrixTranslation(0.0f, 0.1f, 130.0f);

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

17.05.2008, 16:34

Zitat von »"TrommlBomml"«

nicht ganz so gut, drakon^^die reihenfolge ist schon richtig :)

du musst aber einen vektor übergeben, da du in 3 achsen scalieren kannst. so sollte es gehen:

C-/C++-Quelltext

1
mWorld = tbMatrixScaling(tbVector3(0.5f,0.5f,0.5f)) * tbMatrixRotationY(TB_DEG_TO_RAD(90.0f)) * tbMatrixTranslation(0.0f, 0.1f, 130.0f);


Keine Ahnung, wie man die Tribase benutzt. :) - Hätte ja sein können (Obwohl es mich eher gewundert hätte, wenns funktioniert hätte ;))

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

17.05.2008, 16:41

Zitat von »"drakon"«

Keine Ahnung, wie man die Tribase benutzt. - Hätte ja sein können (Obwohl es mich eher gewundert hätte, wenns funktioniert hätte )


is ja kein problem :D

das geht schon, eventuell sieht das genau aus wie wenn du zuerst die skalierung durchführst, müsste man testen^^ (so vom reinen vorstellunsgvermögen sollte es gehen).

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

17.05.2008, 16:51

Zitat von »"TrommlBomml"«

Zitat von »"drakon"«

Keine Ahnung, wie man die Tribase benutzt. - Hätte ja sein können (Obwohl es mich eher gewundert hätte, wenns funktioniert hätte )


is ja kein problem :D

das geht schon, eventuell sieht das genau aus wie wenn du zuerst die skalierung durchführst, müsste man testen^^ (so vom reinen vorstellunsgvermögen sollte es gehen).


Wenn du auf jeder Achse die gleiche Rotation hast, sollte es gehen. ;)

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

7

17.05.2008, 17:01

hab ich auch ausprobiert! wenn ich schreibe:

C-/C++-Quelltext

1
mWorld = tbMatrixScaling(tbVector3(g_fTime, g_fTime, g_fTime));

dann ändert das auch nichts! wenn ich diesen oben gezeigten code habe müsste das model doch eig. immer größer werden ohne seine Position zu verändern sehe ich das richtig?

wenn ja funktioniert es bei mir nicht denn es ist iwann ganz aus dem bildschirm verschwunden warum?????

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

8

17.05.2008, 17:18

das kommt natürlich auf den wert von g_fTime an. da der wert ziemnlich schnell steigt, solltest du eher sowas probieren:

Quellcode

1
2
float fTime = 1.0f + g_fTime * 0.01f; //wert rumprobierrn
mWorld = tbMatrixScaling(tbVector3(fTime,fTime,fTime));


weil wenn die skalierung so schnell steigt, dann sieht man es natürlich irgendwann nicht mehr, weil man das model von innen /hinten sieht und durch das backface-culling siehste nüscht ;)

Ich00nix

Frischling

  • »Ich00nix« ist der Autor dieses Themas

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

9

17.05.2008, 17:22

ich überlege grade: sieht man einen unterschied wenn ein model sich entfernt/näherkommt oder schrumpft/wächst?

10

17.05.2008, 17:53

Kommt drauf an was sich verändern soll... Verändern tut sich natürlich eine menge!

Das Modell wird kleiner oder größer, das ist schonmal das größte was sich verändert, wenn eine textur drauf ist wird sie bendfalls größer oder keiner, genausowie das licht. Bei einer extur solltest du das eventuell leicht erknnen könne, also unterschiede, weil ein pixel halt nur ein pixel groß ist, und directx bei doppelter verkleinerung 4 pixel in ein pxel stecken will, dabei wird dann der mittelwert berechnet, und das erkennt man beim genaueren hinsehen

Werbeanzeige