Przyjmij DirectX za platformę, jeśli jest to ważne. (Jestem pewien, że tak nie jest)
Zakładając, że mam odpowiednią macierz skali, rotacji i translacji, w jakiej kolejności je pomnożę, aby uzyskać odpowiednią matrycę świata i dlaczego?
Przez „właściwe” mam na myśli „mógłbym wrzucić je bezpośrednio do DirectX i uzyskać najczęściej używaną ramkę 3D”.
Odpowiedzi:
Zwykle jest to skala, potem rotacja i na koniec tłumaczenie. Z oznaczeniem macierzy (tj. T dla macierzy translacji, R dla macierzy rotacji i S dla macierzy skalowania), która byłaby:
T * R * S
Jeśli jednak chcesz obrócić obiekt wokół określonego punktu, to jest to skala, translacja punktów, obrót i wreszcie translacja obiektu.
Dlaczego: Najpierw chcesz skalować obiekt, aby tłumaczenia działały poprawnie. Następnie obracasz osie, aby tłumaczenie odbywało się na skorygowanych osiach. Na koniec tłumaczysz obiekt na jego pozycję.
W OpenGL możesz użyć gluLookAt, aby uzyskać pełną transformację kamery w jednym wywołaniu. Prawdopodobnie istnieje podobne wywołanie dla DirectX.
źródło
rotacja translacji i skalowanie to sekwencja wykonywania operacji
źródło
Wierzę, że to rotacja tłumaczeń i dialacja
źródło