Ich schrieb Netzgenerator für MeshCollider
. Aber manchmal, wenn ich die konvexe Eigenschaft auf ture
setze, traten einige Fehler auf, um das Protokoll zu erscheinen.Einheit3d. So finden Sie falsches konvexes Netz zu finden
Zum Beispiel habe ich jetzt ein Mesh mit 44 Ecken und diese Fehler:
CreateTrianglesFromPolygons: konvexe Hülle ein Polygon mit weniger als 3 Ecken hat!
oder
konvexe Hülle init failed! Versuchen Sie das PxConvexFlag :: EINFLATE_CONVEX-Flag zu verwenden.
oder etwas anderes ...
Alles, was ich wollen, ist, diesen Fehler zu erkennen und zu behandeln. Aber try catch
funktionieren nicht:
try
{
collider.convex = true;
UnityEngine.Debug.Log("Success! TrCount: " + collider.sharedMesh.triangles.Length.ToString()); // "Success! TrCount: 84"
}
catch
{
UnityEngine.Debug.Log("Error occur"); // never appear
}
Vielleicht gibt es einige Regeln, um es zu erkennen, bevor konvex auf true setzen.
Vielen Dank für jede Hilfe).
Warum verwenden Sie einen ** Mesh Collider **? Sie verwenden nie Netzkollider. – Fattie
Das gleiche Problem, und unter Antwortvorschläge ähnlich funktionieren nicht für mich (Dreiecke. Länge ist über 100). Haben Sie dafür schon eine Lösung gefunden? –
@PhilippLenssen, habe ich Mesh-Cutter verwendet, um Mesh zu schneiden und manchmal habe ich alle Scheitelpunkte in einer Ebene. Also fügte ich eine Überprüfung hinzu, um die Entfernung jedes Scheitelpunktes zur Schnittebene zu überprüfen, und wenn die maximale Entfernung kleiner als 0,001f ist, lehnte ich dieses Netz ab. Es löst das Problem –