Maybe the forward vector could also be obtained by
TformVector 0,0,1,camera,0
and the up vector by
TformVector 0,1,0,camera,0.
The tform commands take care of the matrix stuff for you. If you need go the opposite way and set the blitz object to an orientation defined by an up and forward vector you could perhaps use AlignToVector on the appropriate axis:
AlignToVector camera,upx,upy,upz,2
AlignToVector camera,fwdx,fwdy,fwdz,3
Those two vectors may well describe the exact rotation of the camera in global terms since roll and pitch would uniquely effect the global up vector and yaw and pitch would uniquely effect the global forward vector.
Thinking about it that may not be entirely correct, but it does not matter because there is only one way to interpret an up vector and a forwards vector. No need to worry about rotation order etc. Hence this may be a more reliable way to store orientation. That's my guess anyway.
TformVector 0,0,1,camera,0
and the up vector by
TformVector 0,1,0,camera,0.
The tform commands take care of the matrix stuff for you. If you need go the opposite way and set the blitz object to an orientation defined by an up and forward vector you could perhaps use AlignToVector on the appropriate axis:
AlignToVector camera,upx,upy,upz,2
AlignToVector camera,fwdx,fwdy,fwdz,3
Those two vectors may well describe the exact rotation of the camera in global terms since roll and pitch would uniquely effect the global up vector and yaw and pitch would uniquely effect the global forward vector.
Thinking about it that may not be entirely correct, but it does not matter because there is only one way to interpret an up vector and a forwards vector. No need to worry about rotation order etc. Hence this may be a more reliable way to store orientation. That's my guess anyway.