MCPcopy Create free account
hub / github.com/LuxCoreRender/LuxCore / LookAt

Function LookAt

src/luxrays/core/geometry/transform.cpp:115–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

113}
114
115Transform LookAt(const Point &pos, const Point &look, const Vector &up) {
116 float m[4][4];
117 // Initialize fourth column of viewing matrix
118 m[0][3] = pos.x;
119 m[1][3] = pos.y;
120 m[2][3] = pos.z;
121 m[3][3] = 1;
122 const Vector dir = Normalize(look - pos);
123 const Vector right = Normalize(Cross(dir, up));
124 const Vector newUp = Cross(right, dir);
125 m[0][0] = right.x;
126 m[1][0] = right.y;
127 m[2][0] = right.z;
128 m[3][0] = 0.;
129 m[0][1] = newUp.x;
130 m[1][1] = newUp.y;
131 m[2][1] = newUp.z;
132 m[3][1] = 0.;
133 m[0][2] = dir.x;
134 m[1][2] = dir.y;
135 m[2][2] = dir.z;
136 m[3][2] = 0.;
137 const Matrix4x4 camToWorld(m);
138 return Transform(camToWorld.Inverse(), camToWorld);
139}
140
141bool Transform::HasScale() const {
142 //#if 0

Callers 5

TessellateRibbonMethod · 0.85
TessellateSolidMethod · 0.85
InitCameraTransformsMethod · 0.85
InitCameraTransformsMethod · 0.85
InitCameraTransformsMethod · 0.85

Calls 4

InverseMethod · 0.80
NormalizeFunction · 0.50
CrossFunction · 0.50
TransformClass · 0.50

Tested by 1

InitCameraTransformsMethod · 0.68