Blender 2.8-Exporter with additonal features(e.g. urho3d-materialnodes and components)

Hi there,
I’m working on and off on the blender exporter, also it is uptodate to work on latest blender 2.8.

The new features are:

  • live preview as blender render engine
  • userdata/tag-creation
  • lod-creation more comfortable using its own panel
  • exporting collection and using them as instance (also linking is possible if doing it the right way)
  • parenting to empties
  • starting a runtime from within blender
  • using a special runtime, which will create a json-file representing all exported components (e.g. all logiccomponents) and all materials/techniques/textures to be used in component- and material-trees.
  • using multiple logicnodes per object


Info: For some features to work you need to have some minor components registered in your project. (Those are included in the urho3d-minimal-new-project): GroupInstance and RotationFix






  • blender-python: if pip is not installed, do so before installing pyzmq ( installation might take some time )
  • stability, not so much crashes anymore
  • material’s texture-category entries are fixed now. Before adding new folders in could lead to problems with reassigning the right image
  • choose kind of export on save-types (scene with geometry,scene without geometry,material only)
  • pack whole export path into one urho3d-pak-file
  • export urho3d builtin components (none,lite(some subset),all). Those can be assigned via the ‘urho3d-components’-nodetree (not all attributes are exposed,yet)
  • added urho3d-tab in 3d-view with components:
    • urho3d-scene:
      • select RenderPath ( those are all renderpaths available in the resource-cache of the exportPath)
      • create default zone with optional cubemap.
      • create SkyBox (For this the urho3d Sphere.mdl is integrated into the runtime’s data-folder. So you need to be sure to copy the Sphere.mdl as SkyboxSphere.mdl into your resourcepath)
    • urho3d-materials,components and userdata-assignment (nothing new here, just reused for this panel)
  • lights now have a “Use Physical Values”-Option ( for more custom behaviour you can create a component-nodetree with a lightnode and assign this to the light)

Using Blender as a level editor combined with an appropriate exporter could be a good alternative to creating a level editor from ground up.

Absolute best thing would be to mantain an instance of Blender open for level editing, and an instance or Urho running in parallel to see changes, both exchanging data, sort of networking-like but in place, by simply reading project data…

If Blender plugin could have Urho3D instance inside - it can send corresponding updates like in client-server example, also that networking component could be removed if we already have Urho’s viewport inside blender - but both of that features require major integration work to be done.

Interesting work! You may want add a link to your repo in the top post.

Yes, I’m a blender guy and always liked its handling and always wanted it to be my scene-editor. At the very beginning I added a shortcut for opening the Urho3d-Editor from within the runtime, which worked but crashed, once you select a component :wink: (Didn’t know it wasn’t my fault and I kicked it out again).
Still I think both approaches(using an editor or a ‘fat’-exporter) have its advantages…

Yes, this is actually the plan. Having the runtime open to send the blender-instance component/materials/node-changes and the current render and blender sending its viewport position.

Something like this:
Never really could make it run…

Yeah,…I actually thought so as well at the beginning. Blender 2.8 seems to have a better api for implementing custom render-engines, but I guess this would be overkill, and since I want my own components to be part of the engine, I would have to compile all of it everytime I change my components. (Well ok, you could think of shared-libs and hot-reloading, but I’m not skilled enough for fancy stuff like that :wink: )

Indeed :+1:

1 Like

Additionally a name change for this project may provide more clarity concerning it’s features. It would also set it apart from the exporter [sec]. It seems more like an integration instead of just an exporter?

1 Like

Agree. It’s complicated and overkill. Moreover, it’s not the way you would use Urho in a real setup, so no need.
And in the end you’ll end up with something like armory for Blender…

Ok, party people. I created some new videos (see first post). Still a bit confused ones but you will get used to it :wink:

Hmm,…I actually always had in mind to do a pull request once the bugs are found and resolved…making it a project of my own, would feel like a ripoff, not?

Yeah, we will see where it ends. But if it turns out to be like amory but with urho3d as background, would be nice as well. :wink:

1 Like

The license allows for it, and there’s nothing stopping you from thanking the main repo man. I don’t mean to chase you away from @reattiva’s project, at first glance it just seemed to me like you were going your own way somewhat with all the extra features. But maybe it’s all welcome, I have only briefly looked into your efforts.

1 Like

Very interesting projects. I’m still watching the videos, however, documents and pictures explaining the ideas behind the projects would be better for us to know.

Hi @dertom

I’ve watched all the videos on YouTube. I can see that you have spend a lot of time recording the videos. However, it is better if you could introduce your idea as words and images so people can get some of it better before digging into the videos.

The projects are impressive. We used to have similar plugins for 3ds max but call the “runtime” as “previewer”. e.g. We used to extend 3ds max’s particle system and use it as the particle editor for the game which has a similar logic for particles. In order to see the effect of the editing, we developed the previewer and export the config every time and spawn the particle in it.

I think it would be better if your Blender addon can live update/hot reload the changes so that the iteration can be much faster though there are challenges to design and implement to achieve this.

Additionally, I wonder if there is some way to map Urho’s shader and material to Blender’s so that we can see the image in Blender even before the previewer’s. (There is no default Blinn-Phong in Blender and Urho’s PBR is not complete.) Other aspects of the scene would be also the same if they have according representations in the Blender.

Generally, there are two ways of editing scenes. One of use the DCC tools (Maya/3ds max/Blender), the other is use scene editor (Unity/Unreal Engine/CryEngine…). I’m also very interested in this topic and have been thinking about the workflow of combining Blender and Urho3D a lot. There is also very good GDC session -

Again, nice topic and work.:wink:

1 Like

Well,…I understand that. But writing this down would have taken too much time, As a matter of fact lots of things will be changes sooner or later and I guess I’m not writing down anything until it the final workflow gets obvious…

It acutally does every time to export the scene, it gets hot reloaded

I actually gave it a try this weekend to create the corresponding urho-render of the blender’s viewport and map it via blender’s custom renderengine as a background. Actually it mostly works, BUT I don’t get the blender right-handed viewport matrix properly converted to urho3d’s lefthand one. I’m not so much in this kind of low level matrix calculation :wink: It works at certain angles with my “naive” approach :wink: This will be work in progress but I want this to happen. Atm it looks like this when the view-maps more or less:

Not sure when I find time to work on it again…


That’s really cool that you got Urho Render into Blender! And simply awesome work in general - albeit not production ready - I wonder how long until the Blender Game Engine gets replaced by Urho3D entirely. :slight_smile:
I don’t know if any of you have experience with the BGE, but in my opinion it could use a replacement.

1 Like

Well I guess as of blender 2.8 BGE is offically out of business. There is a fork of it. UPBGE. I was never really interested into BGE due to its gpl-licenses but was part of the gamekit-project some years ago, which had a tight blender integration. It was actually a cool project but died…I always thought to put it on top of urho3d as it was designed as a middleware…but urho3d is so good in itself, it would be a waste to put some abstraction on top of it…

Ah, I was unaware they dropped it… but license aside, I think the logic node system was bad enough to help beginning game developers over their fear of coding but then the scripting API was equally uninviting. Whenever I saw anything made with BGE that looked like an actual game I was amazed at the patience of their creators and not so much the creations themselves. With BGE gone you might be able to inspire members of the Blender community to assist in your add-on’s development.
My earlier notion has been confirmed after watching some more of your videos that what you are working on is more than (what I would call) an exporter. Rather this looks like the Urho3D-Runtime Add-on to me.

Ok,…I took some work (motivated by @jmiller ) to revive multi-material meshes…first tests seem(!) to work:

Just for info, all that is exported is vanilla urho3d-scenes (only if using collection-instances or bone-parenting you need two helper components) and materials
Have fun and nice weekend, Tom


@reattiva Have you seen this?

Still working on this on and off.
One new feature is ‘filters for textures and techniques’ and now I finally have a very very first draft of the urho3d-blender-renderer. I connected it via network to blender which tells the runtime/renderer that the viewport has changed, which will send the image via network to blender which will render it. Took me some time for the blender’s view-matrix to work. I burnt lots of hours just because the texture on the blender-side was flipped :smiley: Nontheless the result is a good first start. There is still some offset between the blender-world and the urho3d-render…(EDIT: Got it right now. I calculate the fov on the blender side and send it along with screensize-changes)

And here a little screen-cast to see it in action.


The JSON thing is awesome! You made my workflow so much better. Thank you! Do you have a donation page somewhere?