Repository: three.js
Issue: Editor Local Mode: File-open/save and Folder-browser-tab
Labels: Editor

Editor Local Mode: File-open/save and Folder-browser-tab

**Is your feature request related to a problem? Please describe.**

The current editor is difficult to use for local project editing, lacking a **folder browser**, **file open/save** capabilities, and isn't oriented towards 'path-based' scenes that link to other content/sub-scenes via file paths. This is in contrast to other major editors (such as Unity/Unreal/Godot) which are wholly project oriented and provide excellent tools for browsing/editing large collections of models and resources that are then combined/built into shippable packages. For example the editor is not even particularly good at exploring/editing the example collection of content packaged within the three.js git itself.

**Describe the solution you'd like**

Demo of solution: https://leweyg.github.io/lewcid_editor/   (contains folder view of three.js examples, opened by URL).

Couple main features:
- **Path from URL** - This fundamental feature allows us to open specific assets by path, and also lays the foundation for the editor to have a "current path" that both saves to, and loads resources relative to. 
- **Import from URL as child/sibling/callback** - Currently each importer spawns their assets in different ways, mostly as children of the root note placed at the origin, this makes it very hard to create "composed" scenes of assets (where one scene imports other sub-scenes, ideally with shared resources when instancing), and specifically when adding elements to a scene it is much more convenient to add any new group as a sibling with same transform as the selected object to allow rapid instancing.
- **'Folder' tab** to quick browse/search/open/instance/manage large collections of files, including for the example three.js content itself. A default viewer-scene (with a light if not present) should provided for objects, materials, images, sounds, etc.
- **Local System App** for File Open/Save, ability to launch local file-explorer or code/image/asset editor, system level "open in three.js editor" support, basic git commands, etc. URL-based path selector to allow different content per-tab etc.
- **Path-based Scenes** for scenes whose content is referenced via file paths (to models, materials, sub-scenes, scripts, etc.) rather than within the file itself. Also builds into project-wide optimization tools like material unification, dependancy-based asset builds, and possibly support for importing or editing-in-place whole projects from Unity/Unreal/Godot.
- **Fully WASD Camera** for improved navigation through complex scenes at different scales. Having orbit camera is very limiting, although may be useful as an option.
- **Snapping** of translation/rotation/scale should be user customizable, there is infrastructure for this, just need a UI. Expandable context menus would probably be the easiest approach.
- **Basic Animation Timeline Editor** for setting up automatic or scripted animation timelines.

**Describe alternatives you've considered**

Two main alternatives:
1. Use a traditional editor that does support project/git oriented editing, and effectively export to three.js for runtime only with a custom build pipeline. Seems un-neccasary considering the small additions required.
2. Import and review individual assets in the three.js editor in a somewhat clunky fashion and just avoid trying to review features in the editor that require cross file collaboration or iteration (using a mixture of vscode and different tools to work around these). 

**Additional context**

As a long time professional 3D app/game/open-source developer, while I love the three.js runtime, the Editor is really not in a place where I feel it is ready for large-scale project editing or passing to traditional art teams to work with it in an effective manner that is team/git oriented. Yet it wouldn't take too many additions to get it into that place.

To prototype (or develop this concept for my own purposes), I've made a branch and am working on these features here: https://github.com/leweyg/lewcid_editor 

Thanks for your consideration,

-Lewey Geselowitz
http://lewcid.com/lg/aboutme.html