Rotationsproblem i 3D, oberoende 0-punktsrotation (XYZ)?

Permalänk
Medlem

Rotationsproblem i 3D, oberoende 0-punktsrotation (XYZ)?

Hallå!

Sitter nu igen med ett gammalt projekt och filar på rotationer för 450ionde gången, förr hade jag representerat rotation med grader runt lokalt x, y och z men bytte till en uppvektor samt forwardvektor som matrisen enkelt ställs in genom zui_lookAt(...). Jag trodde det skulle vara enklare på detta vis men kan inte få oberoende rotering runt 0-punkten, hur jag än gör så roterar den ju x eller y först, är det möjligt ens att få till detta? Jag vill rotera min upp samt forwardvektor som jag drar musen men det resulterar alltid i att rotationen verkar lokal & inte global. Objektet skall rotera upp som en hjul även om det är roterat exempelvis 45 grader rund varje axel. Jag har tillgång till global modelviewmatris, den lokala matrisen för objektet och dessas inverser.

Jag fick tipps om att använda några andra sätt förut, euler eller quarternions men det verkar vara komplicerat att implementera i en scengraf. Jag tänkte att det kanske var möjligt att lösa det på detta vis då det gör andra grejer simpla. En av matriserna jag bygger upp roterar ju först en identitetsmatris i x-led, sedan y-led som sedan används för att rotera upp & forward, vet ej hur jag ska lösa detta!

Tanken är alltså att exempelvis rotera en boll obehindrat mha musen åt valfritt håll i ett OpenGL/SDL-program.

Hjälp, tips och kommentarer uppskattas
Edit: Jag hittade denna, arcballexempel, får se om man kan lyckas få något ur detta.

Mvh Dalton Sleeper