A stored (world) viewpoint, expressed in the shifted render frame a viewer
draws in: the inverse of translateViewpoint(viewpoint, offset) (#4879).
offset is the render frame -> world translation (IFC Z-up). Before #4806
ifc-lite wrote render-frame cameras, and those files and stored projects
still exist. For them, subtracting the offset would throw the camera as far
off as the bug did in the other direction. The two readings differ by the
whole offset, which is only non-zero past the 10 km large-coordinate
threshold, so whichever reading puts the camera nearer renderBounds (the
loaded model, Y-up render frame) is unambiguous in practice. Without a
camera or bounds there is nothing to compare, and the viewpoint is read as
the spec says: world.
A stored (world) viewpoint, expressed in the shifted render frame a viewer draws in: the inverse of
translateViewpoint(viewpoint, offset)(#4879).offsetis the render frame -> world translation (IFC Z-up). Before #4806 ifc-lite wrote render-frame cameras, and those files and stored projects still exist. For them, subtracting the offset would throw the camera as far off as the bug did in the other direction. The two readings differ by the whole offset, which is only non-zero past the 10 km large-coordinate threshold, so whichever reading puts the camera nearerrenderBounds(the loaded model, Y-up render frame) is unambiguous in practice. Without a camera or bounds there is nothing to compare, and the viewpoint is read as the spec says: world.