Page 1 of 1

[CG] Passieve transformatie in praktijk

Posted: Sat Jun 21, 2008 7:16 pm
by Fristi
Loha

Ik was dus Cg (duh) aant leren en ik vroeg me iets af over actieve /passieve transformaties.

Het theoretische concept snap ik wel voor zover ik weet, bij ctief verplaatst me neen object, bij passief verplaatst men de assenstelsels tov de wereld.

Nu vroeg ik mij af hoe dit zich uit in praktijk, als men dit bijv. wil implementeren in een engine.

Wij deden al onze transformaties over al onze objecten, of een van de objecten in de wereld, is het ook mogelijk om bijvoorbeeld het beeld te roteren zonder daadwerkelijk u objecten aan te passen? (dus passief te transformeren)

Of uit zich dit praktisch gezien altijd in u objecten allemaal verplaatsen? (gezien men toch nieuwe coordinaten moet geven..)

Greets
fristi

Posted: Sat Jun 21, 2008 7:24 pm
by Pieter Belmans
Je transformeert altijd coordinaten. Actief en passief verschillen enkel in ten opzichte van wat je ze verandert. Basically is het:

* actief: je verplaatst (meestal toch) een deel van de aanwezige objecten tegenover de oorsprong;
* passief: je verplaatst de oorsprong tegenover alle objecten.

Als je dus nu je beeld wil roteren (je wereld that is), zal je toch ofwel een actieve transformatie moeten uitvoeren, ofwel de inverse passieve transformatie (het is immers pretty obvious dat ze invers zijn). Als je gewoon de uiteindelijke render wil linksom/rechtsom draaien gebruik je een voorgeprogrammeerde Gfx methode :P. (Is die er niet mag je zelf gaan programmeren, maar het is in elk geval 2D vanaf daar, en Oberon bevat afaik echt wel mogelijkheden tot 2D-transformaties in Gfx/Images dmv transformatiematrices, dus zo generiek als je maar wil).

Posted: Sat Jun 21, 2008 7:27 pm
by Fristi
uhu, cava, had al zon grijs vermoeden maar was ni zeker. nuja, niet dat het nu nog zo veel uitmaakt :)

Thanks anyway :)

Posted: Sat Jun 21, 2008 8:29 pm
by Pieter Belmans
Het zou nogal tovenarij zijn he, zonder iets te doen plots een transformatie doorgemaakt hebben ;).

Posted: Sat Jun 21, 2008 9:54 pm
by Fristi
haha, ja, kzie u al doen op u presentatie..*magic happens here* :D

Posted: Sun Jun 22, 2008 10:54 am
by racekakje
Kunde ook ni uwe engine zo opbouwen dage een representatie opslaagt van uw punten (die ge dan moet vermenigvuldigen met u basisvectoren om u coordinaten te kennen). Als ge dan gewoon u basis vectoren (passief) transformeert, zullen alle punten ook ineens ge transformeert uit uwe engine komen..

Dit lijkt me een stuk eenvoudiger als ge bv uwe camera wilt laten draaien..

Posted: Sun Jun 22, 2008 11:26 am
by Fristi
uhu, mja, uiteindelijk gade dan nog al uw punten moeten overlopen en vermenigvuldigen, dus kunde evegoe actief transformeren :)

KWeet nu ni wa het efficientste is.
tis of al u punten vermenigvuldigen met transformatie matrix of u basisvectoren verm. met transformatiematrix en dan al u punten met die drie.

Maar ge moet rekening houde me het feit dat ge dan altijd u punte moe vermenigvuldigen me die basisvectoren als ge er iets me wilt doen dus ik vermoed da da minder efficient is..

Posted: Sun Jun 22, 2008 11:52 am
by Pieter Belmans
Je werkt sowieso al in een representatieruimte. We hebben immers orthogonale basisvectoren genomen, waarin we alle punten en vectoren uitdrukken dmv coëfficiënten die op hun beurt ook weer vectoren vormen.

Je kan dan wel je basisvectoren aanpassen, maar dat is dan hetzelfde als een transformatie in een gegeven basis uitvoeren. Altijd zal je met een transformatiematrix moeten werken. Je moet immers de coëfficiënten uit de representatieruimte wijzigen.

Moraal: magic cannot happen there :P.