AnalyticalGraphicsInc / gltf-vscode

This is an extension for Visual Studio Code to add support for editing glTF files.
Apache License 2.0
457 stars 63 forks source link

Feature Request: Unify default camera positions, keep camera position on changing renderers #192

Open hybridherbst opened 4 years ago

hybridherbst commented 4 years ago

We use switching between renderers as a means to compare color correctness etc. between render engines.

Would be great if switching between them would be more seamless, ideally trying to keep

as close as possible. (currently switching render engines does a complete reload)

emackey commented 4 years ago

Currently the skybox on/off setting is already preserved like this. (Except for Cesium, which uses a procedural skybox)

Preserving the camera location is much more tricky, as each engine has its own ideas about how the camera works and what UI controls are hooked up to it. For example, Filament leaves camera control entirely up to the app developer, and this app doesn't even have a panning control hooked up to it. Cesium's panning requires the SHIFT key, and doesn't change the center of rotation with the pan.

I think one solution here could be to develop an engine-agnostic helper class for tracking user inputs and positioning a virtual camera in response to those inputs. Then each of the rendering engines would have their own input UI processing turned off (somehow) and instead would always get camera position from the new agnostic helper, each frame. One would need to work out how to get camera position from the helper into each of the engines' own camera systems. I wonder if something like the ThreeJS OrbitControls could be used to drive non-ThreeJS cameras?