Blender Apps

This document describes the vision for a new way to create and share content with Blender through Blender Apps.

What are Blender Apps?

In a nutshell, Blender apps are “Experiences Powered by Blender”.

Blender Apps can do anything that Blender can, plus so much more when extended. They are designed to be portable, and focused on specific usage.

Examples

Use-cases range from education, to production pipeline, final products or even small games. Let’s go through a couple examples.

“As a studio TD, I want a cross-platform solution that can visualize everything from image sequences to videos and 3D files, and annotate on top of such media so that I can give notes to colleagues.” Combining Blender’s Video Sequencer, Image Editor, Annotation tools, making a nice UI for it and stripping out the rest of the functionality you don’t need would be a good example of a Blender App. A version of this example (using Application Templates) is already in use at the Blender Studio weekly meetings.

“As an architect, I want to send a client a project so that they can navigate around and experience it by themselves.” In this case, the app should be easy to run even if the client has never heard of Blender or 3D software before. You could prepare the scene, add basic navigation controls, and bundle the project .blend files together with Blender itself. The client would receive a .zip file with a single executable file inside (more on that in Distribution).

Just like apps on your phone, Blender Apps can be shipped as standalone, without the need of having Blender installed. They can be designed in a way that require no previous knowledge of Blender.

Blender 101: Monkey App prototype by Dalai Felinto

Creating a Blender App

To get started, a template will be provided for download on blender.org. Alternatively, it’s possible to copy and modify any existing app.

Editing Workflow

Editing an app is an incremental process. In other words, you start with a blank slate and add only the functionality you need.

Authoring principles:

  • You have full control: Start with an empty canvas, and add the components and functionality as you need it.
  • Fast iteration: as you edit any part of the app, you should be able to get a live preview of the changes.

How do you edit an app?

Ideally, you would run Blender in an “app development” mode, where Blender watches the content of your app’s folder and reflects any changes live. While this is the ideal scenario we aim for, in large/complex apps (with lots of editors, assets, etc.) live updates can become slow so there should be a way to reload your app on demand.

Editing the files (mostly Python) that make the app should be possible with your IDE of choice. Boilerplate templates will be provided to achieve core functionality (drag and drop, window management, etc) without the need of typing everything yourself.


Running Blender Apps

To make it easier to differentiate between .blend files that are a Blender App, and regular .blend files, a new extension is introduced: .blendx.

Having a dedicated extension brings many benefits:

  • Blender can run its contents in a “run app” mode to look for specific configuration files.
  • Dedicated icon to tell them apart, and Blender could use it to detect when dragged onto it.
  • Recognized by the operating system as a Blender file.

There are two ways to run a Blender App.

Single File App

The simplest way to Running a Blender App that has been distributed packed as a single file (see Distribution), should be as easy as double clicking on an {app_name}.blendx file.

Bundle

It should be possible to run a Blender App without the need of having Blender installed. For this reason, a Blender App can bundle Blender and a small executable (e.g. {app_name.exe}) that will check for an //app/app.blendx file and run it with the Blender version included in the bundle.


Technical Details

Many of the features needed for creating Blender Apps are already in place for years. Blender 2.80’s “Application Templates” is a good place to start, but some key development features must be addressed.

Inside a Blender App
Inside a Blender App.

Templates

Templates are inspired by the existing Application Templates system, which allows users to start Blender with a custom layout (such as 2D Animation mode, Sculpt, Video Editing). The main difference is that now Templates are stored as part of a Profile.

Profiles

A Profile is a way to group templates, keymaps, theme, add-ons, and asset libraries for a specific workflow or hardware setup. You could have a graphics tablet profile, a VR profile, a profile for recording tutorials, etc.

Profiles are a key requirement for apps, and an important usability improvement for Blender.


Distribution

Ways to distribute a Blender App
Ways to distribute a Blender App.

There are three ways to distribute an app:

  • Single file: a .blend file packed as .blendx
    • Easy to launch.
    • Requires having Blender installed.
  • Zip project: a .blendx file plus the app’s content inside a folder.
    • Allows for packing a larger collection of files/libraries.
    • Requires having Blender installed.
  • Bundle: contains everything needed to run the app
    • The most portable option.
    • Can be heavy (since Blender alone is ~200MB for each platform)
    • Does not require having Blender installed, because it is bundled in.

License

Just like add-ons, the code of Blender Apps inherits the same license Blender has, General Public License v2 or later.

Assets such as textures or shaders can be distributed under a license of your choice.


Conclusions

The initial design of Blender Apps has been developed by Ton Roosendaal, Francesco Siddi, Dalai Felinto, Campbell Barton and Pablo Vazquez. With feedback from Jeroen Bakker, Sergey Sharybin and other core developers.

Feedback on the current proposal is welcome before development starts.

32 comments 36,444 views
  1. This sounds so good, that we would immediately want to try this. Is there an alpha/beta version available, or plans to publish one for people who enjoy a good bughunt?

  2. It’s an excellent idea, especially if you can use something like Serpens visual scripting https://blendermarket.com/products/serpens . People could build specialized, feature-rich CG applications.

  3. Is there any progress on this feature since this post was published?

  4. I think this is an awesome idea.
    Also, I’d suggest checking the user interface of Construct 3.
    https://editor.construct.net/

    Their Logic Sheets are extremely practical when it comes to making apps without the need of coding.

  5. i’m exited to do math teaching using blender app, questions rises, math expressions and formulas ,can be designed as Text in blender or make addons works along the app to generate math expression with the execution of the app in the future ? for more simplicity.
    also i think is a Clever way to push artiste learn python and do more contribution if desining a complexe the app require some knowledge in python win-win

  6. Love this idea! I was thinking about an educational application in which I play back a video and use the annotation tool to highlight details, write text, add marks etc.
    How would I go about building this?

  7. Fantastic news!!

    As informed to be possible the creation of simple games, it would be interesting to implement a programming interface by BLUEPRINT, or organization chart, with exists in the Unreal Engine, only that more simplified, or not… rsss…

    I am very excited to try and learn how to create new applications!

    Congratulations on more this initiative!!

  8. It would be nice if Blender’s output files could contains exposed parameters (like geometry nodes parameters), to be accessible in programs like Unreal via a plugin that interprets the format. Something similar to exposing parameters in Substance format, which unreal can then access in blueprints at set via runtime events.

  9. I love the idea, getting Blender into many hands as possible is important for the future of blender in replacing Autodesk. Specialized apps built for particular uses would make that more possible.

  10. Great idea! This would make Blender way more accessible for the average person who only wants certain aspects and not the entire application! This would most assuredly expand the reach for real-world applications!

  11. will this allow a simple sketchup type UI for blender with limited functionality

  12. Some internet blender files viewer would be better solution then exe or blendX files where viruses can be stored. Something like model-viewer from Google for GLB files.

  13. I think it’s a useless idea, but that’s just my opinion, I’m sure it won’t affect the development

  14. After trying to do exactly the same with ‘Ziel’ for a moment, here is what I would like to improve:

    -Control the design of the UI
    -Choose the logo
    -Propose a simplified keymap (customisable?)
    -The .7z format seems more efficient than the .zip and some people get confused with it (even with .zip, actually). If there was a way to automate the unzipping, it could help some users.

    If you look at the app of ‘Z-Anatomy’, you’ll see that two special shortcuts were made to open HELP (F1) and SETTINGS (F2). It has an option to display an overlay that gives information about the UI. It could inspire you.

    More wishes:
    -Merging the camera to the viewport would facilitate the export&saving of images.
    -Linking the render to the viewport
    -Keeping the lights on with ‘Isolate’ and ‘Local view’
    -Nodes to empower non-coders?
    -Possibility to order objects in the outliner within family/collection
    -Easy way to choose/store the license and copy the attribution(s)
    -Support URL links (See hypertext function in ‘Z-anatomy_app’)

    • Many websites already use sketchfab to display models directly in their page.
      ‘Blend4web’ tried to provide the same with more options but remained too complicated for most people.

      I think that a visualizer similar to ‘Sketchfab’ but with more options would be very appreciated:
      -A few selection and visualisation tools,
      -an outliner with only an eye,
      -illimited label options,
      -optional definitions,
      -optional translations,
      -optional cross sections.

  15. *Opinion:*
    I think documenting the repository (C/C++ aspect, folder structure, document structure) for developers would be a more welcome approach to this – with a more granular GUI switches in the repository for Cmake on compile – because right now you’d have to build in a completely new scaffold to create a user friendly GUI to start working a modular interface system on existing structures, which would require a maaaaassive overhead to refactor the entire GUI code. I think it would be more useful to make the repository “user friendly” and GUI customizable and well documented (even with *.txt files in the repository) for anyone who may want to build a custom Blender build.

    *Suggestion 1: Keep it simple, improve customization in repository*
    It should be as easy as toggle switches in a single document or in the Cmake for what a tech artist would need, then compile – but that also may be a tall order… though I would keep existing scaffolds and add better cmake options for the GUI elements on compile, no new GUI or scaffolding. No need for new editors, modes, or modules.

    Make compiling easier, make the compile process documented with GUI if necessary, make the repository overly documented. You could also add in readme documentation per folder explaining how the repository works in general – and this may allow customizing the source code to quicker and practical heights (and boost collaboration and new devs also).

    Do not make a new module or UX to do this after a build. Don’t worry about interactive applications for now, there is a lot of competition for interactive applications and solutions already elsewhere, including opensource ones, online ones, node based ones, opensource ones, and more.

    *Suggestion 2: Go ahead and work the vision, but stomach past decisions and the overhead*
    To do this vision you’d have to make, essentially, two new UX systems with accompanying GUI: the customization/compiling system after a build and then refactor the existing GUI to be modular without dependencies to be able to handle the modularity without recompile and issues. You’d also need to rebuild something similar to the BGE for interactivity, so 2 new modules and a rewrite of one global module – even add a global editor mode in the GUI. You could use code from UPBGE that has the old game engine still built in, or revive old interactive code, or start from scratch and somehow make it work with current limitations, or refactor everything to allow realtime interactivity, profilers, ridiculous shippable performance… – and/or you’d have to rebuild a completely new authoring system or repository for the *.blendx executables on a built blender distribution. This is…. a huge overhead, when I would consider less effort to document existing code more – integrate documentation into the repository, and make the GUI editors a cmake toggle (suggestion 1).

    Though the interactive and shippable executable aspect of Blender does sound useful – and reminiscent of the BGE and it’s capabilities…. it might be worth reviving that vision in part, but it feels like a bit of a backtrack to an already made decision to minimize maintaining this aspect when it was removed in 2.8 instead of evolving it to something simple, easy to use and for the average tech artist.

    I would consider this a very large project, and by the time this is usable, competing interactive and some opensource solutions that work WITH the authoring system of Blender will out do anything created with the existing repository. It will be a game of an expensive catch-up, nothing innovative. It would be nice to have an evolved BGE workflow, but… it’s another overhead and a backtrack to past visions.

    *Suggestion 3: Change direction to other areas (GUI modularity and interaction is not necessary)*
    Personally this is my preference.. I’d put priority to dedicate existing and planned resources to polish the existing UX, make sure the texture nodes editor is useful, the asset library complete for all data block types and use cases, stability, performance, better cross-pollination and drag and drop between editors – especially with the Asset Browser (other examples: VSE for animation/layout and viewport integration, Eevee next with GPU raytracing, node editors for texture painting as being worked, asset library drag and drop to the NLA, to the VSE, all data block types draggable everywhere, to the Image editor, to the outliner, to brushes, integration of addon UX that supplement missing core features or UX needs like in UV editors, retopology, texture painting, workflow, etc), and polish existing modules before working on new modules and new visions.

    Clean up house before adding a room: performance, finesse, UX refinement in existing editors and GUI for better UX.

    This is my feedback to the proposal, the proposal sounds fun and all, but overall I think it could be about improving what exists instead of making what could be considered new and additional. Blender is an authoring tool, not an interactive presentation tool (and removal of the BGE is testament to that) – and resources should be used to polish that aspect of creative freedom.

    *Bonus option:*
    Though, don’t get me wrong, maybe alliance with Godot for their interactive presentation tool (and vision) may help you get to where you need to go with this vision without the overhead, and the symbiosis could be more useful to both parties in opensource (easier authorship and livelink to Godot + easy interactive presentations from Blender built by Godot at a click of a button). A livelink is a way forward here with existing platforms – dedicating a dev for Blender compatibility with Godot and it’s toolset for quick interactive and presentable apps from a Blend file. This could even be an addon if necessary. Least overhead of them all, but hit the vision targets and work in the opensource community to do it instead of maintaining it in-house.

  16. With the ability to strip and add certain components, I wonder if someone would create a “Blender For Beginners” app. Blender can be super confusing for new users due to the INSANE number of features, so it would be cool to see a beginner version with just a viewport and materials, for example.

    • I believe that would probably be one of the explorations for devs.
      Also, An in-app interactive experience to help beginners learn the basic parts of blender would be great.
      For example: exploring the viewport and workspace, exploring the timeline, basic lighting, and rendering.
      You know, the core basics for newbies. perhaps this may require state machines tho.

  17. I recalled the dead XULRunner environment of Mozilla project.
    The most problem of XULRunner was it had limitations everywhere.
    For example, Songbird had avoided the limitations with own custom patches.
    Blender has also many limitations and we should make it more generic if we will get the big success.

    btw my addons+application templates may or may not help you.
    https://github.com/nazodane/blender-utilities

  18. Maybe it’s better to change the file extension from “blendx” to “blenda”, “blendapp” or “bapp”.

    The extension “blendx” can be used in the future for XML version of blend file
    (like docx for doc, xlsx for xls, …).

  19. Honestly an excellent idea.

  20. Really interesting. I can see this also to rapid prototyping 3D app. I imagine the bundle distribution will be an optimized blender version based on which dependencies are used?

    • Creating Blender Apps shouldn’t require Blender’s source code or having to compile a new Blender. So building an “optimized” version is not part of the plan. The bundle distribution will include a full Blender, either the one that was used to build/test the App or a specific version is yet to be defined.

      That being said, nothing is really stopping users from building their own Blender and bundle it with an App. In this case though the App author has to bundle the changed source code (or provide a way to get it) in order to comply with Blender’s license (GPL).

  21. Hello, will it also allow Blender apps to be embeded to another DCCs? For example I work in houdini and want to have quick lookdev using eevee viewport?

    • Blender Apps can do everything that Blender can.

      If you add a way to handle I/O with other software (perhaps via an add-on that uses USD as backend) then it could work, but it would also work on the regular Blender. What an App could provide is the ease of opening Blender with a pretty viewport, without redundant editors, with the add-ons required to interact with the USD files, a dedicated keymap to make browsing easy, perhaps automatic reloading capabilities. It’s all Python extending and tweaking what Blender can already do.

  22. Lovely proposal, I got some questions though does this mean there’s a possibility of making executables on other platforms like mobile phones or tablets a reality? Since blender apps aren’t blender on itself but a stripped down version for specific purposes, a client might not have a computer at all

    And also does this imply the game engine “replacement” or the interactive mode is in order? Would be cool to make some games with modern blender capabilities but it is not detailed in this post how this would be done for the blender apps (unless the answer is just python which is not very interactive for an user that prefers nodes for logic like me)

    • Blender Apps run anywhere Blender can. So in the future if Blender is supported on Android, iOS, iPadOS, or other platforms, apps should run there just fine.

      I really hope that with the introduction of Blender Apps, and being able to build experiences using Blender’s powerful viewport and Python extensions, developers from the community will get inspired to make the so called “interactive mode”. Standalone apps are the perfect scenario for something like that.

      • I have always been waiting for such a possibility to create an educational application, which gives the possibility to modify the Blender interface, up to simplifying it to the minimum terms! Thank you for granting my wish!

      • Was there ever a clear design for the interactive mode ? I’m not even sure what it was supposed to be.

      • I’ll make sure to garantee that Blender Game Engine is BACK with the so called interactive mode. Great news, thanks!

  23. Brilliant!

    • Fantastic idea.
      Developers can then develop simple
      3d tools with an fast and easy UI.
      Great !

  1. Leave a Reply

    Your email address will not be published. Required fields are marked *