3d engine and viewer