EpicGamesExt / BlenderTools

Blender addons that improve the game development workflow between Blender and Unreal.
https://epicgamesext.github.io/BlenderTools/
MIT License
2.7k stars 26 forks source link

Basic instance collection support #655

Open SalamiArmi opened 11 months ago

SalamiArmi commented 11 months ago

My personal workflow benefits from instance collection support, and on seeing that the issue that's raised for it (#326) hasn't been touched or commented on in the last two years, I figured I'd bash out a basic implementation.

The implementation as is recurses objects in the 'Exports' collection and ensures that all nested objects make it to UE. Each instance collection attached to a mesh is converted to a socket with the format MeshAttach_{collection name}#{unique child name}.

This is intended not as a complete and mergeable snippet, but as a stopping off point for others that need this kind of support. I don't know much about blender scripting or the plugin-preferred way this should be implemented, so will probably leave it as is.

james-baber commented 11 months ago

Ok thanks for the PR. This looks like it should be in an extension. The idea with writing these extra workflows as extensions is that it keeps the core code from bloating, and extensions can be added or removed without effecting any other functionality in the rest of the addon

SalamiArmi commented 11 months ago

I'll consider refactoring this into an extension if I get some free time. If I do, is demoting collection instances into sockets a reasonable approach? It's well-tailored to my usage, but not sure if it's insane for the average user. I've only been learning Blender for the last couple of weeks and UE for the last couple of months so please let me know if I've overlooked a more obvious path.