1
LWJGL ve OpenGL 3.2'yi kullanarak OpenGL için bir java Game Engine yazılımı yazıyorum. Fare, kamerayı döndürmek için hareket ettirildiğinde, perdeyi ve zifti de ekleyebilir.İlk Şahıs Fotoğraf Makinesi Rulosu
Kamera kodu
public Matrix4f getViewMatrix() {
getParent().getTransform().getWorldRot().mul(rotation, (Quaternion) null).toRotationMatrix(viewMatrix);
viewMatrix.mul(Matrix4f.setTranslation(getParent().getTransform().getWorldPos(), null));
return viewMatrix;
}
public boolean mouseMoved(MouseEvent event) {
Quaternion.mul(rotation, new Quaternion((float) Math.toRadians(event.x/1f), rotation.getUp(null)), rotation);
Quaternion.mul(rotation, new Quaternion((float) Math.toRadians(event.y/1f), rotation.getRight(null)), rotation);
return true;
}
Kuaterniyon kodu
public Vector4f getRight(Vector4f dest) {
if (dest == null)
dest = new Vector4f();
dest.x = 1.0f - 2.0f * (y * y + z * z);
dest.y = 2.0f * (x * y - w * z);
dest.z = 2.0f * (x * z + w * y);
return dest;
}
public Vector4f getUp(Vector4f dest) {
if (dest == null)
dest = new Vector4f();
dest.x = 2.0f * (x * y + w * z);
dest.y = 1.0f - 2.0f * (x * x + z * z);
dest.z = 2.0f * (y * z - w * x);
return dest;
}
public Vector4f getForward(Vector4f dest) {
if (dest == null)
dest = new Vector4f();
dest.x = 2.0f * (x * z - w * y);
dest.y = 2.0f * (y * z + w * x);
dest.z = 1.0f - 2.0f * (x * x + y * y);
return dest;
}