- Hands-On C++ Game Animation Programming
- Gabor Szauer
- 392字
- 2021-06-30 14:46:00
Look at
The view matrix is the inverse of the camera's transformation (the position, rotation, and scale of the camera). Instead of having to create the camera's transform matrix and then invert it, you will be implementing a lookAt function that generates this matrix directly.
A lookAt function typically takes a position, the target point at which the camera is looking and a reference up direction. The rest of the work is finding the inverted basis vectors and figuring out where the position is.
Since the basis vectors are orthonormal, their inverse is the same as their transpose. The position can be calculated by negating the dot product of the position column vector with the inverted basis vectors.
Implement the lookAt function in mat4.cpp. Don't forget to add the function declaration to mat4.h. Remember, the view matrix maps the game world forward to the positive Z axis:
mat4 lookAt(const vec3& position, const vec3& target,
const vec3& up) {
vec3 f = normalized(target - position) * -1.0f;
vec3 r = cross(up, f); // Right handed
if (r == vec3(0, 0, 0)) {
return mat4(); // Error
}
normalize(r);
vec3 u = normalized(cross(f, r)); // Right handed
vec3 t = vec3(
-dot(r, position),
-dot(u, position),
-dot(f, position)
);
return mat4(
// Transpose upper 3x3 matrix to invert it
r.x, u.x, f.x, 0,
r.y, u.y, f.y, 0,
r.z, u.z, f.z, 0,
t.x, t.y, t.z, 1
);
}
The lookAt function is the most convenient way of constructing a view matrix. All of the code samples throughout the rest of this book will use the lookAt function to set up a view matrix.
- Mastering JavaScript Object-Oriented Programming
- Power Up Your PowToon Studio Project
- Machine Learning with R Cookbook(Second Edition)
- Visual Basic程序設計習題解答與上機指導
- Building Minecraft Server Modifications
- Python機器學習編程與實戰
- 零基礎學Python數據分析(升級版)
- The Complete Coding Interview Guide in Java
- 執劍而舞:用代碼創作藝術
- Microsoft Azure Storage Essentials
- 打開Go語言之門:入門、實戰與進階
- JBoss:Developer's Guide
- Hands-On Kubernetes on Windows
- Solutions Architect's Handbook
- Training Systems Using Python Statistical Modeling