Convex Decomposition Collision Mesh von einem StaticMesh in ein anderes StaticMesh kopieren

  • Hallo beisammen,


    weiß jemand wie man ein Convex Decomposition Collision Mesh von einem StaticMesh (oder StaticMeshActor) in ein anderes kopieren kann?

    Ich habe gelesen dass man dazu das FKAggregateGeom verwendet das sich im BodySetup befindet.
    Also so:



    UBodySetup* OldBodySetup = MyOldStaticMeshActor->GetStaticMeshComponent()->GetBodySetup();

    FKAggregateGeom OldAggregateGeom = OldBodySetup->AggGeom;


    MyNewStaticMeshActor->GetStaticMeshComponent()->GetBodySetup()->AddCollisionFrom(OldAggregateGeom);



    Das funktioniert gut für simple collision aber bei convex decomposition meshes tritt ein komisches Phänomen auf:

    Wenn ich das "Empfänger Mesh" (MyNewStaticMeshActor) dann im editor öffne, sehe ich in der collision Spalte dass da in der Tat 10 neue convex elements aufgelistet werden. Also hat der copy Prozess geklappt ABER die collision meshes werden nicht angezeigt und funktionieren auch nicht (Bild 1)

    So aber hier kommt das Seltsame: Sobald ich irgend eine Änderung mit in der collision Spalte rechts mache (also z.B. einfach "Double Sided Geometry" anklicke werden die collision meshes plötzlich angezeigt und funktionieren! (Bild 2).

    Es scheint also dass man beim Anklicken irgendwas "refresht".
    Hat jemand von euch einen Tip was im Code noch fehlt (das refreshen?) ????


    Danke!!!

    Alex

  • hellobomm

    Hat den Titel des Themas von „Collision Mesh von einem StaticMesh in ein anderes StaticMesh kopieren“ zu „Convex Decomposition Collision Mesh von einem StaticMesh in ein anderes StaticMesh kopieren“ geändert.
  • Hi Butter Fly Games. Danke!!

    Aber wie mach ich das in c++ oder blueprint?
    Ich habe ein EditorUtilityWidget mit dem ich Editor Sachen ausführen kann aber das "Copy Collision from selected Static Mesh" hab ich nicht gefunden.


    Mittlerweile hab ich rausgefunden dass ich mit der Methode:

    UBodySetup* OldBodySetup = MyOldStaticMeshActor->GetStaticMeshComponent()->GetBodySetup();

    FKAggregateGeom OldAggregateGeom = OldBodySetup->AggGeom;

    MyNewStaticMeshActor->GetStaticMeshComponent()->GetBodySetup()->AddCollisionFrom(OldAggregateGeom);


    Nur simple collisions copieren kann. Keine Convex Decomposition Collision Meshes, die ich brauche.

  • Habs gerade gelöst. Hier der komplette code:

    Code
    UBodySetup* OldBodySetup = MyOldStaticMeshActor->GetStaticMeshComponent()->GetBodySetup();  
    FKAggregateGeom OldAggregateGeom = OldBodySetup->AggGeom;   
    UBodySetup* NewBodySetup = MyNewStaticMeshActor->GetStaticMeshComponent()->GetBodySetup();   
    NewBodySetup->AddCollisionFrom(OldAggregateGeom); 
    NewBodySetup->InvalidatePhysicsData(); 
    NewBodySetup->CreatePhysicsMeshes();