| Will there be an Emacsmerse compatibility mode? ;) But more seriously (but still on the spirit of Emacs), how will your 3D video player be scriptable and extensible at runtime? I have some positive experience with extensible 3D panoramic stereo videos players, which I'd love to share with you: I developed a system for JauntVR that enables cross-platform scripting of Unity3D applications in JavaScript, for Jaunt's 3D panoramic video player. It also greatly eases and accelerates development and debugging, which is otherwise extremely slow and tedious with Unity. Unfortunately JauntVR ran out of money for that project and pivoted to other stuff before publishing it, but Arthur van Hoff generously let me open source the general purpose Unity/JavaScript scripting system I'd developed for it, which I call "UnityJS". It's useful for all kinds of other things beyond scripting 3D videos, and it works quite nicely not just on mobile devices but also with WebGL, but scripting interactive 3D video was the problem I originally created it to solve. I've used for several applications and integrated it with several libraries, including financial data visualization on WebGL, TextMeshPro in Unity, ARCore on Android, and ARKit on iOS. UnityJS also makes developing and debugging scriptable Unity apps much easier and quicker (by orders of magnitude) because you can use the standard JavaScript debuggers (even on mobile devices) and just restart the app to reload new code in seconds, instead of waiting the 10-60 minutes it takes to totally rebuild the app in Unity. By using the same standard built-in JavaScript engine of the web browser on each platform, you can implement cross-platform interfaces in JavaScript instead of re-tooling the interface for each platform in different languages, and incorporate standard up-to-date off-the-shelf JavaScript libraries. I believe the 3D video player should be much more like an extensible scriptable browser (and like Emacs and NeWS!), instead of just a dumb fixed-function play/pause/rewind/fast-forward video player (like piping a text file through "more" on a VT100). So you can download dynamic content and scripts that implement custom interfaces for 3D videos, like interactive titles and credits, custom menus, theater lobbies, even networked multi player environments for watching 3D videos together. It's great fun to overlay live 3D graphics, text, physics simulation, interactive kinetic typography, particle systems, etc, into 3D videos. It's extremely useful for selecting and navigating content, displaying interactive titles and credits, or anything else you might imagine, like games and applications embedded in and orchestrating 3D video. And of course you can publish new content, hot updates, and extend the experience by downloading new code and data over the internet, instead of pushing out a new version of the app through the app store every time you want to improve the experience or publish a new video or series. Some obvious and useful application for 3D videos is designing compelling opening and closing credits, captions, subtitles, pop-up notifications, pie menus, player controls, navigation, bookmarking, tagging, and any other kinds of user interfaces, that can adapt to the content and environment in whatever direction you're currently looking, so you don't miss them and they're not unusable, just because you were looking in the wrong direction at the wrong time. 3D videos suffer practically and creatively from hard-coded static title sequences and credits, because you might not be looking in the right direction at the right time to see them. It's like pointing a movie camera at a stage to film a play, instead of inventing a whole new expressive cinematic language appropriate for the new medium. And I'm not just talking 3D scrolling Star Wars credits! Of course you could just build a dumb non-extensible 3D video player with just one hard-coded style of menus and scrolling credits, or burn the title sequence and credits into the 3D video itself, but that would be static, boring, and inflexible, because the title sequence itself is an important thematic art form, which should ideally be designed for each different video, collection or channel. The point is to enable the infinite creative possibilities of interactive titles and credits that respond to the viewer's attention and interest: scrolling back and forth, revealing more information about the names you focus on in the credits, and all kinds of other cool innovations that run-time scripting, dynamic downloadable content, and interactive 3D graphics enable. Saul Bass realized that 2D movie title sequences could be so much more than simply scrolling a list of names up the screen, and he designed the groundbreaking opening credits to movies by Hitchcock, Scorsese, Kubrick, and Preminger. Imagine how intense the interactive panoramic opening titles of a 3D film like Psycho or North by Northwest could be, to set the mood for the rest of the movie! https://en.wikipedia.org/wiki/Saul_Bass >During his 40-year career, Bass worked for some of Hollywood's most prominent filmmakers, including Alfred Hitchcock, Otto Preminger, Billy Wilder, Stanley Kubrick and Martin Scorsese. Among his best known title sequences are the animated paper cut-out of a heroin addict's arm for Preminger's The Man with the Golden Arm, the credits racing up and down what eventually becomes a high-angle shot of a skyscraper in Hitchcock's North by Northwest, and the disjointed text that races together and apart in Psycho. Psycho's opening credits https://www.youtube.com/watch?v=hwq1XHtJEHw Saul Bass: North by Northwest (1959) title sequence https://www.youtube.com/watch?v=1ON67uYwGaw The Art of Movie Title Design | Saul Bass and Beyond https://www.youtube.com/watch?v=Q_Mo0MqICXI Saul Bass- Style is Substance https://www.youtube.com/watch?v=frWLpyI3lXY >"I have felt for some time that the audience involvement with the film should really begin with the first frame. You have to remember that until then, titles tended to be just some dull credits, mostly ignored, or used for popcorn time. So there seems to be a real opportunity to use titles in a new way. To actually create a climate for the story that was about to unfold." -Saul Bass UnityJS is useful for other stuff too: Here's a great example of an interactive WebGL based business model and structured financial data visualization system that I developed with UnityJS for Jen van der Meer of Reason Street. The lion's share of the code is written in JavaScript, plus a bunch of generic and bespoke modular Unity components and prefabs that JavaScript plugs together and orchestrates. On top of Unity's 3D graphics, it uses the canvas 2D API and D3 to draw the user interface, info overlay panels, and translucent pie menus with live tracking feedback, all written in JavaScript so it's easy to iteratively develop and debug! It's totally data driven by JSON data and CSV spreadsheets. So Jen can just enter fresh data into google sheets, turn the crank, and play around with the interactive visualizations within seconds. And I can just as quickly and easily modify the code or data, then quickly run and debug the new version! Amazon FY2018 Visualization: https://www.youtube.com/watch?v=J8uOjelouUM >"I created this tool as a way to kind of tell the story of how companies shift from e-commerce, and build these combinatorial, complex, technical system type business models. It's a little bit of an obsession of mine. If you're curious about this project you can find me in the links below. I'll be collaborating with my long time collaborators here to see how complex companies and ecosystems [work], and help us all better understand how to think about these technology business models, and how they so substantially shape our world." -Jen van der Meer Apple Services Pivot: https://www.youtube.com/watch?v=TR_4w7OCW4Y Facebook FY 2018 Financials Visualization: https://www.youtube.com/watch?v=cMQgjmj_mnQ Here are some link to some doc, notes, and posts about UnityJS I've written. And if you're interested in using it, I have a more recent, modular, up-to-date version that I'm refactoring to use the Unity package system instead of git sub modules and symbolic links, and it also has some nice improvements for WebGL, and much better JSON.net<=>Unity integration: https://github.com/SimHacker/UnityJS/blob/master/doc/Anatomy... https://github.com/SimHacker/UnityJS/blob/master/notes/talk.... https://github.com/SimHacker/UnityJS/blob/master/notes/unity... https://news.ycombinator.com/item?id=21932984 https://news.ycombinator.com/item?id=22689008 https://news.ycombinator.com/item?id=22691004 |
I'm curious why you're recommending UnityJS instead of just a straight WebGL implementation.
Unity is an amazing tool, but my understanding is that the assets need to be packaged with the player, and that isn't done in real-time. So adding new functionality would mean either some of your videos don't have the full capabilities, or you're recompiling them.
We've been mostly out of this space for the last two years, so it's also possible that I'm entirely wrong about that.