Hej, Nu gissar jag... :D Du måste utföra rotationen relativt meshens rotation, dvs. spara den tidigare rotationen och sedan lägga till en relativ rotation utifrån (dx, dy). Lite osäker på tillvägagångssättet dock. Jag antog att det var något liknade. I meshviewer när meshen ligger 180 grader i X axlen roterar den 100% i Z axlen när man drar meshen i Y axlen. Kan det möjligtvis fungera om man beräknar det i procent?, te.x. om den är 90 grader i X axlen är 50% av rotationen i Z axlen och resten i Y axlen? <b>>Kan det möjligtvis fungera om man beräknar det i procent?</b> Inte för jag förstår hur.. men det fungerade! :D,Problem med Direct3D
Jag har försökt lära mig Direct3D på den senaste tiden med VB.net.
Jag håller på med ett program som liknar Mesh Viewer (man får med det i DirectX SDKn), bara för att lära mig mer om Direct3D.
Jag vill alltså kunna rotera en mesh i både X,Y och Z, Hittils har jag bara lyckats med X och Y
Device.Transform.World = Matrix.Multiply(Matrix.RotationY(Geometry.DegreeToRadian(pos.x)), Matrix.RotationX(Geometry.DegreeToRadian(pos.y))). pos.x och pos.y står för hur mycket musen har rört sig i diverse riktningar
Eftersom musen rör sig i 2D är det rätt simpelt, men i Meshviewer kan man röra sin mesh i alla tre dimensioner, Jag har ingen som helst aning hur dem lyckas med detta. Någon som har erfarenhet av detta?Sv: Problem med Direct3D
Spara en matrix som beskriver rotationen.
I stället för att beräkna utifrån pekarens position kan du använda pekarens förflyttning. (dx,dy)
T.ex. om man rör musen uppåt så roterar du rotationmatrixen i y-led med dySv: Problem med Direct3D
/PeterSv:Problem med Direct3D
Sv: Problem med Direct3D
Nej, bl.a. för att sin/cos inte är proportionella mot vinkeln.
Jag provade lite grann och kom fram till att det faktiskt är superenkelt :)
Skapa en temporär matris med hjälp av (dx, dy) precis som förut. Multiplicera sedan mesh:ens rotationsmatris med den temporära matrisen (inte tvärt om). Du har nu lagt till den relativa rotationen som önskat!
/PeterSv:Problem med Direct3D
Tack så mycket för hjälpen!