Download

[New Tool] Rama's Instanced Static Mesh Editor Feature (pull request)

**Rama’s Instanced Static Mesh Editor

You Can Support Editor Integration!**

Dear Community,

I’ve submitted my Instanced Static Mesh Editor Feature to Epic! You can support it if you would like it added to the engine!

Watch my fps go from 9 back to 120 after I convert all the static mesh actors in the scene into one instanced static mesh with a single key press!

The process can be reversed at any time to make further edits!


**Plugin Version**

You can try out the plugin version of my pull request any time!

**More Info**
https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=243810&viewfull=1#post243810


Video 1

This first video is the plugin version, where I demo the core usefulness.

My fps goes from 9 back to 120 once I convert all the static mesh actors into an instanced static mesh.

I then demonstrate going back in and editing a single instance and then restoring the whole structure to being an instanced static mesh actor again.

Massive performance gains!

https://youtube.com/watch?v=iC1sjgalEJg


**Videos**

**Video 2 ~ Editor Integration**

https://youtube.com/watch?v=uToLHLrSbDw

Video 3 ~ Blueprint Support!

https://youtube.com/watch?v=2PPPYl2MC6o


**Full Description Here!**
https://forums.unrealengine.com/showthread.php?62352-Editor-Feature-Pull-Request-Rama-s-Instanced-Static-Mesh-Editor-Feature&p=244125&viewfull=1#post244125

GitHub Support

You can support this pull request on Github here!
https://github.com/EpicGames/UnrealEngine/pull/917

Enjoy!

Rama

Nice work! Thanks for sharing Rama.

What can I say?.. Do want. In terms of preventing headaches, the scene cleanup aspect of this is almost as important to me as the performance gain. Unreal’s outliner is god awful. Can’t wait to get my hands on it.

Freakin’ awsome, good job Rama!

What a great addition EverNewJoy aka Rama

https://assets-cdn.github.com/images/icons/emoji/unicode/1f44d.png

Your devotion to the UE4 Community is unquestionable and outstanding

https://assets-cdn.github.com/images/icons/emoji/unicode/1f4af.png

Rama does it again!

This feature will change lives. I was forced to used Instanced Static Meshes for repeatable Actors due to poor performance when Level Editing on my low spec workstation. I also use rudimentary Static to Instanced Static Mesh conversion process in GOLEM Construction. This feature will improve the GOLEM construction process Ten-fold.

Alright Rama! Very nice and definitely a needed feature. Man I needed this last month… lol. I created a BP literally last month that toggles between ChildActorComponents and using a separate InstancedStaticMeshComponent for every unique mesh to achieve the same effect. Great job!

This is a great feature, and I see the improvement in the editor right away FPS-wise, but for some reason building the project makes all the new instanced mesh actors dissappear from my game! Their shadows remain, but otherwise they’re gone. Trying to figure out what I did wrong…

Is this for real? It sounds incredible! Bravo!

This is really cool Rama, and very useful for sure.

However, it looks more like you are combining meshes into one and not really instancing them. If they were instanced then each one would still be its own separate actor in the world individually moved and rotated at will and not the single mesh in the end. I’m not trying to nitpick, but those would be 2 pretty different things going on there. Though they more or less achieve the same end result performance wise, just with different aspects exposed to the end user.

Or am I missing something on how it works?

Yes :stuck_out_tongue:

There is only one mesh, but its not all of them combined - its just the original ‘box’ or what ever static mesh you use.
Hence, if you want to use this feature, all the static meshes you combine must be exactly the same.
This takes all the matching meshes, get the world transform information for each and combines them all into one actor.
It can then tell the rendered to render the mesh X amount of times based on the transform info it got earlier.

Nice Rama, just a question, do you take care of octree partition when you do this or just replace everything with 1 mesh. I am asking you this because if you take care of octree, this can be super awesome, else there is room for optimization, because you will upload to video ram just whats visible instead a huge mesh.

Sure the ideal case to minimize states changes are to render once all. But that’s not always possible. In that example you actually cheat a bit, because you use same material for all meshes:)

Edit: all I’ve wrote is ****, for a second I was thinking you are doing a mesh consolidation:) I did even think engine don’t do auto instancing.

pure awesomeness :slight_smile: :slight_smile:

Please help! I love the plugin, it’s amazing, but while things look fine in the editor, when I package my project all the new instanced meshes disappear and aren’t visible at all in the finished game. I am sure I’m doing something wrong, but for the life of me I can’t figure out what. 4.7.2 and it’s a C++ project, or rather a project that started out as a Blueprints one, but that I’ve added a couple of C++ classes to over time.

Wow! This reminds me a bit of Farbrausch and their 64kb demos…

Incredible plugin. I’ve just downloaded. Thanks very much.

Rama, any reason your pull request was closed?

If possible, I’d like to know more about the pull request status as well.

i would like to know too reasons. It would be very useful for massive fps boost and even better is it can be reversed.

Check his comment on his github pull request from the 25th march:
"EverNewJoy commented on 25 Mar
Great to hear from you both!

I’m still waiting to hear from Epic :slight_smile:

Have fun today!

Rama"

Sounds like its still active…