Ich habe einen Code für mein C gehen ++ Transform-Klasse, die den Benutzer der Klasse eine Modellansicht MatrixWie von GLM zu JOML (OpenGL Mathematik Bibliotheken)
Code-Listing 1 geben soll:
glm::mat4 Transform::GetModel(glm::vec3 pos, glm::vec3 rot, glm::vec3 scale, glm::mat4 parentTransformationMatrix){
glm::mat4 posMat = glm::translate(pos);
glm::mat4 scaleMat = glm::scale(scale);
glm::mat4 rotX = glm::rotate(rot.x, glm::vec3(1.0, 0.0, 0.0));
glm::mat4 rotY = glm::rotate(rot.y, glm::vec3(0.0, 1.0, 0.0));
glm::mat4 rotZ = glm::rotate(rot.z, glm::vec3(0.0, 0.0, 1.0));
glm::mat4 rotMat = rotX * rotY * rotZ;
return parentTransformationMatrix * posMat * rotMat * scaleMat;
}
ich habe einen Teil des Codes mit JOML (für LWJGL3) schon, aber ich bin fest mit anderen Teilen (kommentiert)
Code-Listing 2:
public Matrix4f GetModel(Vector3f pos, Vector3f rot, Vector3f scale, Matrix4f parentTransformationMatrix){
Matrix4f posMat ;// = translate(pos);
Matrix4f scaleMat ;// = scale(scale);
Matrix4f rotX ;// = rotate(rot.x, Vector3f(1.0, 0.0, 0.0));
Matrix4f rotY ;// = rotate(rot.y, Vector3f(0.0, 1.0, 0.0));
Matrix4f rotZ ;// = rotate(rot.z, Vector3f(0.0, 0.0, 1.0));
Matrix4f rotMat = rotX.mul(rotY).mul(rotZ);
return parentTransformationMatrix.mul(posMat).mul(rotMat).mul(scaleMat);
}
Es gibt Operationen wie 'translate',' rotateX' ... - siehe [Klasse Matrix4f] (https://joml-ci.github.io/JOML /apidocs/org/joml/Matrix4f.html) – Rabbid76