Any reason to not simply sync .matrix / .matrixWorld ? As long as these are synchronised, and FOV is the same, the rendered view of the cameras will then look similarly (with potential differences only caused by the browser window size.)
If you have orbitcontrols enabled, it will take care of reorienting the camera to look at its target… so as @mjurczyk said… you only need to synchronize controls.target and camera.position, and orbitcontrols should do the right thing.
Trying to set the matrices directly can work, but then you will need to disable orbitcontrols, since it will just overwrite whatever transformations you’re applying to the camera.
You also probably don’t want to sync viewMatrix since viewMatrix is derived from the camera.matrix, and camera.projectionMatrix combined… so you only really need to synchronize camera.matrix, if you’re going the manual route… and the renderer will take care of updating viewmatrix from your matrix + the cameras projection, during the next scene.render.
I’m attempting to implement the View Matrix because, in addition to browser-based synchronization, I also need to synchronize panning from a native app that does not use OrbitControls.
Yeah I would just synchronize .matrix … since threejs computes viewMatrix for you during render by combining camera.matrix and camera.projectionMatrix = camera.viewMatrix