I stumbled across THREE.js’s prototype editor earlier – http://threejs.org/editor/ – and a few of its editing concepts might be interesting to consider in general:
- Object Translations:
- To move linearly, you grab an axis.
- To move along the ground, you grab a planar handle (like below image).
- To move within screen space, you grab at the center point.
I like how this compresses 7 translation possibilities into 3 kinds of gestures that only require 1 controller button to use (and a pointing device – but without need of keyboard). Also the axis and planar handles are symbolic representations of their effects.
This factoring appears to offer incremental “dexterity zones” – ie: grabbing at the axes is easier compared to grabbing at the planar handles, which in turn are easier to grab than the singularity in the middle. I believe that’s in dexterity-order for performing actual translations once activated too.
- Uses a command-pattern implementation with built-in persistence.
- (if curious their documentation has more details)
This seems like a powerful pattern for decoupling the concept of “editing session” from local time and space (even without a centralized server). Right now it seems to be used for restoring the undo stack across page refreshes, but something like “macros” can be recorded by causing undo histories and distributing/playing back elsewhere/later (provided something like keyframes can be found).
- The whole Scene can be “published” into a self-contained Zip file…
I like this kind of bundling because it means artifacts can be “passed around” as single files, but without necessarily becoming obfuscated as a side-effect – ie: they could remain well-organized while still supporting binary and compression. Fun nathanoid: just about everything with the THREE editor appears to run locally in the browser – including import, export and publishing to Zipfile.
There are some other neat “game” concepts in there too, but nothing that struck me as noteworthy just yet.