Search Unity

[bug?] Why does Unity not keep MeshCollider's baked data ?

Discussion in 'Physics' started by theFrenchDutch, Jul 12, 2015.

  1. theFrenchDutch

    theFrenchDutch

    Joined:
    May 5, 2014
    Posts:
    25
    Hello ! I have a really specific problem here, one that might require someone from the Unity team. I don't know if it deserves a bug report as I can't tell if it's done on purpose. Some background first :

    I am making a procedural planet generator for a school project trying to copy what Outerra does. The terrain is separated in chunks, each represented by a mesh. The terrain has to support collision, so I've added Mesh Colliders to the terrain chunks, it works fine. Of course Unity generates the mesh collider in run-time and that creates lag spikes. Then that terrain has to be saved to be streamed from disk during run-time.

    The chunks of terrain are stored during a run-time generation phase as prefabs (with a meshRenderer and meshCollider as components, using the same mesh) using PrefabUtility. I face one very tough problem though... Unity doesn't want to keep the data that the MeshCollider generates or bakes for itself in the prefabs.

    If I save a terrain and immediatly fly around in it, it's completly fine, performance is great, I don't see any Physics baking in the profiler. Which means that the MeshCollider's data has been kept in the prefab ! But as soon as I save the scene or try to build, Unity opens a windows that says it is "importing small assets". And then if I try reading the terrain again (flying around), lag spikes from Physics everywhere. So when unity does its importing stuff on all the terrain data I've saved, it deletes the MeshCollider's baked data from my prefabs... And that kills my performance.

    So my question is, can something be done to prevent this? Can someone explain to me the reasoning behind it, or if it's a bug that I should report ? I guess it's a very specific issue but I'm lost here.
    And why is it that Unity doesn't let you save the MeshCollider's baked data in the first place ? This would help a LOT of projects using procedural generation I think ^^

    Thanks for reading :)
     
    Last edited: Jul 12, 2015
  2. jacoj

    jacoj

    Joined:
    Aug 18, 2015
    Posts:
    1
    Have you found a fix? I'm dealing with a similar issue. Thanks!
     
  3. theFrenchDutch

    theFrenchDutch

    Joined:
    May 5, 2014
    Posts:
    25
    Unfortunately no. However I found out shortly afterwards that saving our terrain was a stupid idea as it would take somewhere around 6TB of data !

    So we are stuck with generating things always on the fly, which is not so bad. I'd like to know how to be able to calculate the MeshCollider's baked data on another thread though.