diff options
Diffstat (limited to 'OpenSim/Region/Physics/Meshing')
-rw-r--r-- | OpenSim/Region/Physics/Meshing/Meshmerizer.cs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs index 79edc12..adc0dc9 100644 --- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs | |||
@@ -64,6 +64,7 @@ namespace OpenSim.Region.Physics.Meshing | |||
64 | public class Meshmerizer : IMesher | 64 | public class Meshmerizer : IMesher |
65 | { | 65 | { |
66 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 66 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
67 | private static string LogHeader = "[MESH]"; | ||
67 | 68 | ||
68 | // Setting baseDir to a path will enable the dumping of raw files | 69 | // Setting baseDir to a path will enable the dumping of raw files |
69 | // raw files can be imported by blender so a visual inspection of the results can be done | 70 | // raw files can be imported by blender so a visual inspection of the results can be done |
@@ -72,6 +73,8 @@ namespace OpenSim.Region.Physics.Meshing | |||
72 | #else | 73 | #else |
73 | private const string baseDir = null; //"rawFiles"; | 74 | private const string baseDir = null; //"rawFiles"; |
74 | #endif | 75 | #endif |
76 | // If 'true', lots of DEBUG logging of asset parsing details | ||
77 | private bool debugDetail = true; | ||
75 | 78 | ||
76 | private bool cacheSculptMaps = true; | 79 | private bool cacheSculptMaps = true; |
77 | private string decodedSculptMapPath = null; | 80 | private string decodedSculptMapPath = null; |
@@ -357,13 +360,25 @@ namespace OpenSim.Region.Physics.Meshing | |||
357 | OSDMap physicsParms = null; | 360 | OSDMap physicsParms = null; |
358 | OSDMap map = (OSDMap)meshOsd; | 361 | OSDMap map = (OSDMap)meshOsd; |
359 | if (map.ContainsKey("physics_shape")) | 362 | if (map.ContainsKey("physics_shape")) |
363 | { | ||
360 | physicsParms = (OSDMap)map["physics_shape"]; // old asset format | 364 | physicsParms = (OSDMap)map["physics_shape"]; // old asset format |
365 | if (debugDetail) m_log.DebugFormat("{0} prim='{1}': using 'physics_shape' mesh data", LogHeader, primName); | ||
366 | } | ||
361 | else if (map.ContainsKey("physics_mesh")) | 367 | else if (map.ContainsKey("physics_mesh")) |
368 | { | ||
362 | physicsParms = (OSDMap)map["physics_mesh"]; // new asset format | 369 | physicsParms = (OSDMap)map["physics_mesh"]; // new asset format |
370 | if (debugDetail) m_log.DebugFormat("{0} prim='{1}':using 'physics_mesh' mesh data", LogHeader, primName); | ||
371 | } | ||
363 | else if (map.ContainsKey("medium_lod")) | 372 | else if (map.ContainsKey("medium_lod")) |
373 | { | ||
364 | physicsParms = (OSDMap)map["medium_lod"]; // if no physics mesh, try to fall back to medium LOD display mesh | 374 | physicsParms = (OSDMap)map["medium_lod"]; // if no physics mesh, try to fall back to medium LOD display mesh |
375 | if (debugDetail) m_log.DebugFormat("{0} prim='{1}':using 'medium_lod' mesh data", LogHeader, primName); | ||
376 | } | ||
365 | else if (map.ContainsKey("high_lod")) | 377 | else if (map.ContainsKey("high_lod")) |
378 | { | ||
366 | physicsParms = (OSDMap)map["high_lod"]; // if all else fails, use highest LOD display mesh and hope it works :) | 379 | physicsParms = (OSDMap)map["high_lod"]; // if all else fails, use highest LOD display mesh and hope it works :) |
380 | if (debugDetail) m_log.DebugFormat("{0} prim='{1}':using 'high_lod' mesh data", LogHeader, primName); | ||
381 | } | ||
367 | 382 | ||
368 | if (map.ContainsKey("physics_convex")) | 383 | if (map.ContainsKey("physics_convex")) |
369 | { // pull this out also in case physics engine can use it | 384 | { // pull this out also in case physics engine can use it |
@@ -408,11 +423,16 @@ namespace OpenSim.Region.Physics.Meshing | |||
408 | } | 423 | } |
409 | 424 | ||
410 | mConvexHulls = hulls; | 425 | mConvexHulls = hulls; |
426 | if (debugDetail) m_log.DebugFormat("{0} prim='{1}': parsed hulls. nHulls={2}", LogHeader, primName, mConvexHulls.Count); | ||
427 | } | ||
428 | else | ||
429 | { | ||
430 | if (debugDetail) m_log.DebugFormat("{0} prim='{1}' has physics_convex but no HullList", LogHeader, primName); | ||
411 | } | 431 | } |
412 | } | 432 | } |
413 | catch (Exception e) | 433 | catch (Exception e) |
414 | { | 434 | { |
415 | m_log.WarnFormat("[MESH]: exception decoding convex block: {0}", e.Message); | 435 | m_log.WarnFormat("{0} exception decoding convex block: {1}", LogHeader, e); |
416 | } | 436 | } |
417 | } | 437 | } |
418 | 438 | ||
@@ -438,7 +458,7 @@ namespace OpenSim.Region.Physics.Meshing | |||
438 | } | 458 | } |
439 | catch (Exception e) | 459 | catch (Exception e) |
440 | { | 460 | { |
441 | m_log.Error("[MESH]: exception decoding physical mesh: " + e.ToString()); | 461 | m_log.ErrorFormat("{0} prim='{1}': exception decoding physical mesh: {2}", LogHeader, primName, e); |
442 | return false; | 462 | return false; |
443 | } | 463 | } |
444 | 464 | ||
@@ -455,6 +475,9 @@ namespace OpenSim.Region.Physics.Meshing | |||
455 | if (subMeshOsd is OSDMap) | 475 | if (subMeshOsd is OSDMap) |
456 | AddSubMesh(subMeshOsd as OSDMap, size, coords, faces); | 476 | AddSubMesh(subMeshOsd as OSDMap, size, coords, faces); |
457 | } | 477 | } |
478 | if (debugDetail) | ||
479 | m_log.DebugFormat("{0} {1}: mesh decoded. offset={2}, size={3}, nCoords={4}, nFaces={5}", | ||
480 | LogHeader, primName, physOffset, physSize, coords.Count, faces.Count); | ||
458 | } | 481 | } |
459 | } | 482 | } |
460 | 483 | ||