Blender Interactive Mode

nowdays is very difficult to make specialized code because of the immense complexity of the hardware. So most libraries and features end up being generic because the author have no idea how the users will make use of them.

Take Unreal, its used for way more than making games and as a matter of fact EPIC even encourages it. For example is quite popular in architectural visualization.

Even the old BGE was generic enough to be used for a wide variety of tasks. Most likely interactive mode will be even more generic. Interactive mode will focus purely on making Blender interactive and not on game engine stuff mainly because Blender already has many of the ingredients of a Game engine. Real time rendering through Eevee, physics, particles, animation, python scripting , image and video editing, compositing, audio and much more.

Not brainstorming but.

Would be cool if instead of nodes, the whole system could work like unity’s api but in python…

e.g.

  1. each object with some bahavior has properties and some of them can be defined as a python class.

  2. each class is defined as a implementation of bpy.bge.Behaviour but should be able to be defined from scratch

  3. Behaviour class has a start(self, scene) and spdate(self, scene) functions. and there would be bulet properties on the class to help on the phisic logic like: self.collided_with or self.physics.contact_points

  4. Behaviour.start() is called once and Behaviour.update() is called every frame but there could be a property to define the rate of update of each object so we can save performance.

  5. Behaviour object can interact with the whole blender’s data though bpy.data including scenes, other objects and other Behaviour instances.

  6. and lastly everything should be able to fit on a sort of compiled executable for each platform.

In short… Wouldn’t be different from implementing per object handlers.

This is already possible

Anything user wise is exposed to the Blender Python API. The general rule of thumb is “if you can do it as a user you can do it with Python” . Blender Python API not only give control over the connections and creation of nodes for any purpose but also allows to create custom nodes that do not otherwise exist.

This workflow made it possible to make the animation nodes addon that is now in the process of being integrated as C code inside the Blender source as part of “all nodes” initiative.

So your feature request are very basic , technically speaking Blender Python API already allows for “interactive mode” you can make an addon that uses a modal operator to consume events and provide interactive behavior. The reason why none has tried that yet is because of the low quality of the Viewport which made difficult choice for live demos games etc. But now with Eevee everything has changed. This is the case because already the Blender Python API is very powerful and has not only complete access to user features but some of the inner mechanism of Blender that users cannot access. Of course this access is limited on a matters of stability and performance. Blender addons cannot create modifiers mainly because Python is a low performance language not designed for such heavy tasks. Interactive mode however is a low performance task well suited for the BPA (Blender Python API)

Modal operator are very flexible, they can run concurrently with other tasks and can block Blender from handling event or block specific events. That allows you for instance to use shortcuts as trigger that already used by Blender like “e” key is used for extrude. This is very flexible because it does not affect the key configurations setups.

So yes if you cannot wait for interactive mode you can already do this with Python. Interactive mode most likely will target people who don’t want the hassle of coding in Python but none the less it will have a Blender Python API like everything else.

Please note that the BPA (Blender Python API) is currently disabled in Blender 2.8 cause its about to go into some serious redesign to reflect the major changes that the new version brings to the users.

1 Like

I purpose we take UPBGE and make ‘sister commands’ where a user can choose to operate on BPY data, BGE data, or both.

if one was to modify the BGE scene in realtime - and this timeline / modifications over time were saved and occurred in the viewport timeline, anything would become possible.

UPBGE has a mesh creation API now,
we have BHTree from KX_MeshProxy()

there is nothing stopping old upbge from moving to new shaders.

The upbge code has been upgraded / refactored fror 24 versions now.

they have many huge commits lately.

@jacqueslucke Since you are now working on the interactive mode, I would recommend taking a look at this too.

I’ve been exchanging emails with Benoit Bolsee and had some nice conversations about future of the interactive mode. Of course, he is planning everything but I tried to be helpful by providing him information on new physics solvers. Here’s what he told me in one of his emails about his current plan:

" … I have indeed started a project to bring interactive mode in blender 2.8 to a point where it can be used for game prototyping, interactive simulations, robotics, etc. It’s a one year project but I’m only working 1.5 day a week because I have other projects on the side. The project plan is as follow:

  1-  bring 'continued physics' mode back : physics simulation runs even if scene frame is not incrementing - done already for rigid body
  2-  bring local time to animations so that animations can run independently of scene frame
  3- create an internal event system to exchange events and messages between scene entities
  4- create events from physics simulation and interaction
  5- create a logic node tree system to allow game logic (Points 3-5 will be done in collaboration with Jacques Luke who has been hired to create a real-time nodal logic framework in blender 2.8)

There is no guarantee that this interactive framework will be real time but it should be close to it. The graphic rendering will be Eevee. Everything will run from the 3D view, which can be customized to be just a window frame (or full screen) with no menus and buttons so that it looks like a game window. ..."

Based on the emails we exchanged later on, Benoit has also decided to use one of the latest versions of Bullet in Blender for better performance and more stability.

You can see some more updates on this in a parallel thread here where I discuss the choices for soft body physics solver that the Interactive Mode developers are considering.

2 Likes

upbge already uses the newest stable bullet…

Are there any news about the interactive mode?

1 Like

the only rule about interactive mode.

don’t talk about interactive mode.

check youle’s work out -https://github.com/UPBGE/blender/tree/eevee_merge8
here is bge - using eevee to render and BPY works in the engine

I would be surprised if we hear something before the 2.80 release, as they are obviously focusing on that at the moment.

I find it rather disrespectful towards the developers who are working way more transparent than ever before to make this kind of pointless claim.

There is also no need to mention UPBGE in every single of your posts. This thread is about the interactive mode.

2 Likes

You really need to work on putting your thoughts across. This passive agressive stance you have this entire thread doesn’t work at all, in fact it hurts your cause and undermines anything you write even if valid.

If you want others to consider it more then I would steer clear of all these toxic bits here and there.

Unfortunately it’s not only about what is right but also about what is presented in the right way. (or maybe fortunately)

3 Likes

The “we don’t talk about interactive mode” thing was a joke.
(we don’t talk about fight club)

Youle is a former BGE developer, whom has offered money, hours coding, and a working fork of bge in 2.8. (it works right now) - he has asked for it to be included in 2.8.

there is a huge community of people that loved bge, and would love to see it included in 2.8 (the worst parts of BGE was in the render/legacy blender internal code)

there is a branch ge_logic_nodes - where most of the logic is done to move away from logic bricks and use the 2.8 interface.

the community has done quite a bit of very hard work to keep bge alive, and the efforts are rewarded, with silence or even rudeness.

please don’t see us as outsiders, upbge forked bge to modernize it and try and save it, over 3 years I ago I believe.

UPBGE_EEVEE is interactive - (BPY called in the engine effects the running scene)
it uses bullet physics - (same as the touted ‘interactive mode’?)
it use audaspace(same as blender?)

anything that you want to cut out that is old, is on the table waiting for the chop, and youle is waiting to stitch it back together.

I am pretty sure ‘everything nodes’ will work inside the fork.

Having a different opinion about the way forward is not passive aggressive,
it’s a discussion.

By definition, the BGE and also UPBGE are not the same as the Interactive Mode.
This thread is about the Interactive Mode and as such not about the BGE or UPBGE.

Your opinion is that UPBGE should become the Interactive Mode and you can certainly have that opinion. But the Blender developers decided against it and removed the BGE and there are plans for an Interactive Mode.
As the decision has been made quite some time ago and actions to execute the new plan have been taken, there is no substance for the kind of discussion you are looking for.
Maybe something change at one point, but as long as that doesn’t happen, there is no need in aggressively mentioning UPBGE all the time in an Interactive Mode thread. As a matter of fact, it is off-topic and has nothing to do with an opinion.

1 Like

Moderation heads up: I flagged some posts here as off-topic (includes older posts), because my personal judgment is they are. That includes posts I agree with or where I appreciate the intention.
So please don’t take it personal. I let other moderators a chance to review the flags.

By clicking the flag button of a post, everybody can send private messages to authors. I suggest we all make good use of this. For example to address non-constructive negativism (“I find your posts read quite passive aggressive, I’d suggest you…”, etc.).

4 Likes

so this never materialized and upbge is about to publish 0.3.0…

call me off topic but it’s a interactive mode now.
KX_GameObjects use BPY Mesh(ID) as meshes now,

[viewport render can even be used now and ‘undo at exit’ can be unecked.]

ezgif.com-gif-maker (11)

5 Likes