I have a small doubt with regards to the pbrtCamera() function implemented in pbrtv3.
I don't want to use the pbrtLookAt() API call to initialize the camera, but rather provide a rotation and translation component to place the camera. My intent is to move the camera [-100,100,100] from the world origin. I don't have a rotation component. I guess this can be done by using the following syntax in the scene file
Translate -100 100 100
Camera "perspective" "float fov" [45]
The current transformation matrix after the Translate call would be
[1 0 0 -100
0 1 0 100
0 0 1 100
0 0 0 1]
However the pbrtCamera() API initializes the CameraToWorld as the inverse of the current transformation matrix which would be
[1 0 0 100
0 1 0 -100
0 0 1 -100
0 0 0 1]
In the camera coordinate system, rays have a origin of 0,0,0 and hence when moved from camera to world, shouldn't the rays start from [-100,100,100]. If I use the inverse as the code does, the rays would start from [100, -100, -100]. Is this a genuine bug or am I abusing the file format notation?