Easy Combine - Two Clicks Mesh Combining

Easy Combine

~~Sign up for the public beta here.~~
The beta subscription has been closed.

The Easy Combine system provides a very simplified workflow for combining mesh objects.

The intention behind this plugin was to give the artists/developers a two-click combine solution without the needs of manually building complex preparatory steps in the scene.

Key Features

  • Easy usage
  • Non-destructive workflow
  • Scene overview
  • Mesh export
  • Group by Shader or Material
  • Lightmapping ready

2792211--202469--easy_combine_ss_artefacts.png

2792211--204384--easy_combine_ss_two_click.png

2792211--202470--easy_combine_ss_by_material.png

2792211--202472--easy_combine_ss_ui.png


What would be the difference here?
Can you explain this a little more in detail?
If a model shares the same shader but a different material with another model - would they be able to be combined?
If a model shared the same texture - but had a different shader as another model - would they be able to be combined?

The material, as a semantic unit, is reffered here as shader instance.

At the current state of the plugin, this is just to control how the objects get grouped (into meshes/submeshes). However, the split options will become more important when the texture baking feature will be introduced.

Yes. Draw call reduction is only possible with the upcoming texture baking feature.
But some improvements may be achieved when it comes to GI.

These split mode permutations are possible.

  • None: One mesh with two submeshes. One submesh per material
  • Per Material: Two meshes with no submeshes.

  • Per Shader: One mesh with two submeshes. One submesh per material

Yes. But no draw call reduction possible here (even with the texture baking feature).
But some improvements may be achieved when it comes to GI.

These split mode permutations are possible.

  • None: One mesh with two submeshes. One submesh per shader/material
  • Per Material: Two meshes with no submeshes.

  • Per Shader: Two meshes with no submeshes.

Hopefully, this helped.

1 Like

I just imported Easy Combine into a project where I also have GPFX installed and I'm getting the following error after importing:

Assets/nu Assets/GPFX/Scripts/Editor/DualBloomEditor.cs(7,36): error CS0118: ch.sycoforge.Editor' is anamespace' but a `type' was expected

[EDIT]
I realized I was one version out of date with GPFX so I installed the new version and the error goes away.

Will there be texture atlasing capability?

Can this bake lightmaps on individual objects? For example, right now I'm working on a procedurally generated world, but because it is random I can't bake lighting which really bugs me.


Since version 1.0.0 GPFX is part of the Sycoforge namespace to reduce redundancy.


Yes. It's fixed on the dev timetable. It will be part of the 1.0.0 update.

1 Like


Easy Combine does prepare all meshes for GI baking, but is actually not a replacement for Unity's Enlighten.


Is your world generated at runtime or at design time in the editor? It's important to create/prepare the other UV channels that Unity need for lightmapping.

Version 0.9.7 available for download.

Changelog

Features

  • Combine: Added auto-group support for mesh selections with more than 65535 vertices.

Fixes

  • UI: Fixed null-ref issue when inspecting an object with no materials. (ISSUE-K8N19O463V)
  • UI: Fixed OnSelectionChange event unhook when reloading/recompiling script context. (ISSUE-F8Q6A1X581)
  • Combine: Fixed issue when trying to combine objects with an empty material slot on their Renderer. (Subsequent ISSUE-K8N19O463V)
  • Combine: Selected objects can be reverted even if the parent object is not a CombineShadow instance. (ISSUE-9U4S9Q4341)

Changes

  • UI: Popup notification slides top-down now to prevent multi-display issues.
  • UI: 'Revert Selected' button is now inaccessible when no objects are selected.
  • Combine: Changed parenting order.
1 Like


Basically I'm spawning prefabs as the player moves along. So I'm instantiating prefabs throughout the whole game.


This makes it almost impossible to bake GI on those objects. The baked intensities/light bounces are location-dependent. A dynamic environment needs a dynamic GI volume or a presampled light probe grid. The amazing guy from @sonicether is in the process of developing exactly what you need.

1 Like

If I select a bunch of objects and some of them are dynamic will Easy Combine ignore the dynamic objects? In any case it would be nice to have an option to tell it to ignore dynamic objects.

[EDIT]
Through experimentation it seems to ignore dynamic objects, which I think is good. However, It is having issues with static items that have dynamic children. If the parent is static then it mesh combines the parent, but then the entire hierarchy ends up getting deactivated once the combined meshes are enabled. The problem is that the child objects, in this case, are a particle system and a point light. So they end up not being available in the combined scene. I can see why it's doing this, but what it should do is to disable the mesh renderer on the static object instead of deactivating it. That's the way Mesh Baker does it and it works better in this case.

Some more issues I can see are as follows:
1. It combines meshes that currently have their mesh renderer disabled. This ends up enabling meshes that I may have been using for for collision purposes, but don't want visible.
2. Despite what I thought about dynamic objects being ignored, I am seeing some dynamic objects being combined and then the original deactivated. So my item pickups are stuck to the floor and can't be picked up.
3. The option to add a mesh collider might work for some things, but in my scene it causes meshes that are combined that didn't originally have a collider to now have one. With mesh baker it uses the disable mesh renderers on the original objects and thus the original colliders for all objects are used as well. If I tell Easy Combine not to generate a mesh collider then I would currently be left with a scene devoid of collision and all my original objects deactivated and would have to go back one by one and activate them and disable their renderers.
4. When I bake lighting, there are lots of blotches all over the place.

Thank you for sharing your thoughts. These are very valuable for us!


We have plans to add an advanced settings panel to filter and exclude objects as a preprocessing step. But we also want to avoid a very cluttered UI with tons of settings and rules as this will deface the spirit of the plugin. The intention behind Easy Combine was to keep things as simple as possible.


Dynamic objects are not ignored by default. Everything (meshes) that is selected in the moment you press the combine button, gets combined. While this is maybe not optimal for a "combine-the-whole-scene-at-once" approach, this is suitable for spatial grouped scenes following best-pratice guidelines for hierarchical and functional grouping.

2815449--204759--ec-scene-grouping.jpg


Totally aggreed. A "keep-colliders" post-procession option is mandatory. It's already on the to-do-list.


That's because the Unity UV mapper has its flaws with compound geometry (when working with shared UVs). When following the Enlighten guidlines on pages 9-10 the baking artifacts can be avoided.


We are currently designing a rule set to move non-mesh objects into new groups. This will help getting rid of wrongly disabled elements in prefabs.

Thanks for responding. I am already grouping things fairly well, but I agree I can do more with separating out pickups and other things like that. It's a balancing act though because sometimes these separations are more complex to work with. For example, I can separate all lights and particle effects, but when you have objects like a torch that has a light and a particle effect it is obviously so much easier to prefab it and then just place the object all at once. Separation in these cases makes far more work than would be necessary. But I'll definitely be thinking about more efficient ways to get the best of both worlds.


Confirmed. :)


You are absolutely right. We are in the process of designing an lean (settings) workflow for composed prefabs. So any idea/input is highly appreciated.

1 Like

Are there any updates to this? I haven't seen anything new for a long time. I'm really interested in the atlasing and keep-colliders functionality. Can we expect a new version soon?


Yes. But everything is iterating somewhat slower because of the upcoming GDC. We are a small team and an event like this will delay the complete dev timetable.


Unfortunately not. At least not in the next few weeks. We have a functional freeze until after GDC to ensure quality updates. But we have reserved some time for hotfixes and critical issues.

I hope you can understand this. Thank you.

OK, thanks for the update.

Version 0.9.8 available for download.

Changelog

Features

  • Combine: Added initial support for skinned meshes (Base pose).
  • Core: Added support for Unity 5.6.

Fixes

  • Export: Fixed issue when canceling path selection. (ISSUE-K8N19O463V)

Changes

  • Structure: Harmonized package structure across all shared libraries.