diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs index 5a3008d09a..bb661e54ad 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs @@ -433,7 +433,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde { convex = true; // sculpts pseudo convex - if (pbs.SculptType != (byte)SculptType.Mesh) + if (pbs.SculptEntry && pbs.SculptType != (byte)SculptType.Mesh) clod = (int)LevelOfDetail.Low; } diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs index 2ae0881e78..7f0713a7c3 100644 --- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs +++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs @@ -349,7 +349,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing } else { - if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, lod, out coords, out faces)) + if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, lod, convex, out coords, out faces)) return null; } @@ -942,7 +942,8 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing /// Faces are added to this list by the method. /// true if coords and faces were successfully generated, false if not private bool GenerateCoordsAndFacesFromPrimShapeData( - string primName, PrimitiveBaseShape primShape, float lod, out List coords, out List faces) + string primName, PrimitiveBaseShape primShape, float lod, bool convex, + out List coords, out List faces) { PrimMesh primMesh; coords = new List(); @@ -970,7 +971,9 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing profileBegin = profileEnd - 0.02f; float profileHollow = (float)primShape.ProfileHollow * 2.0e-5f; - if (profileHollow > 0.95f) + if(convex) + profileHollow = 0.0f; + else if (profileHollow > 0.95f) profileHollow = 0.95f; int sides = 4;