@@ -414,39 +414,39 @@ protected void BuildLinkCollisions(Transform collisionTransform, XElement link,
414414 BoxCollider boxCollider = collider as BoxCollider ;
415415 XElement box = new XElement ( "box" ) ;
416416
417- Vector3 boxSize = new Vector3 ( boxCollider . size . x * collider . transform . localScale . x ,
418- boxCollider . size . y * collider . transform . localScale . y ,
419- boxCollider . size . z * collider . transform . localScale . z ) ;
417+ Vector3 boxSize = new Vector3 ( boxCollider . size . x * collider . transform . lossyScale . x ,
418+ boxCollider . size . y * collider . transform . lossyScale . y ,
419+ boxCollider . size . z * collider . transform . lossyScale . z ) ;
420420 box . SetAttributeValue ( "size" , boxSize . Unity2RosScale ( ) . ToXMLString ( ) ) ;
421421 geometry . Add ( box ) ;
422422
423- center = new Vector3 ( boxCollider . center . x * boxCollider . transform . localScale . x ,
424- boxCollider . center . y * boxCollider . transform . localScale . y ,
425- boxCollider . center . z * boxCollider . transform . localScale . z ) ;
423+ center = new Vector3 ( boxCollider . center . x * boxCollider . transform . lossyScale . x ,
424+ boxCollider . center . y * boxCollider . transform . lossyScale . y ,
425+ boxCollider . center . z * boxCollider . transform . lossyScale . z ) ;
426426 } else if ( collider . GetType ( ) == typeof ( SphereCollider ) ) {
427427 SphereCollider sphereCollider = collider as SphereCollider ;
428428 XElement sphere = new XElement ( "sphere" ) ;
429- float radius = sphereCollider . radius * collider . transform . localScale . x ;
429+ float radius = sphereCollider . radius * collider . transform . lossyScale . x ;
430430 sphere . SetAttributeValue ( "radius" , radius ) ;
431431 geometry . Add ( sphere ) ;
432432
433- center = new Vector3 ( sphereCollider . center . x * sphereCollider . transform . localScale . x ,
434- sphereCollider . center . y * sphereCollider . transform . localScale . y ,
435- sphereCollider . center . z * sphereCollider . transform . localScale . z ) ;
433+ center = new Vector3 ( sphereCollider . center . x * sphereCollider . transform . lossyScale . x ,
434+ sphereCollider . center . y * sphereCollider . transform . lossyScale . y ,
435+ sphereCollider . center . z * sphereCollider . transform . lossyScale . z ) ;
436436
437437
438438 } else if ( collider . GetType ( ) == typeof ( CapsuleCollider ) ) {
439439 CapsuleCollider capsuleCollider = collider as CapsuleCollider ;
440440 XElement cylinder = new XElement ( "cylinder" ) ;
441- float radius = capsuleCollider . radius * collider . transform . localScale . x ;
442- float height = capsuleCollider . height * collider . transform . localScale . y ;
441+ float radius = capsuleCollider . radius * collider . transform . lossyScale . x ;
442+ float height = capsuleCollider . height * collider . transform . lossyScale . y ;
443443 cylinder . SetAttributeValue ( "radius" , radius ) ;
444444 cylinder . SetAttributeValue ( "length" , height ) ;
445445 geometry . Add ( cylinder ) ;
446446
447- center = new Vector3 ( capsuleCollider . center . x * capsuleCollider . transform . localScale . x ,
448- capsuleCollider . center . y * capsuleCollider . transform . localScale . y ,
449- capsuleCollider . center . z * capsuleCollider . transform . localScale . z ) ;
447+ center = new Vector3 ( capsuleCollider . center . x * capsuleCollider . transform . lossyScale . x ,
448+ capsuleCollider . center . y * capsuleCollider . transform . lossyScale . y ,
449+ capsuleCollider . center . z * capsuleCollider . transform . lossyScale . z ) ;
450450
451451
452452 } else if ( collider . GetType ( ) == typeof ( MeshCollider ) ) {
@@ -459,7 +459,7 @@ protected void BuildLinkCollisions(Transform collisionTransform, XElement link,
459459
460460 XElement mesh = new XElement ( "mesh" ) ;
461461 mesh . SetAttributeValue ( "filename" , $ "{ meshCollider . sharedMesh . name } _collider.obj") ;
462- Vector3 scale = collisionTransform . localScale ;
462+ Vector3 scale = collisionTransform . lossyScale . Unity2RosScale ( ) ;
463463 mesh . SetAttributeValue ( "scale" , scale . ToXMLString ( ) ) ;
464464 geometry . Add ( mesh ) ;
465465
@@ -503,20 +503,20 @@ protected void BuildLinkVisuals(Transform visualTransform, XElement link, Vector
503503 if ( meshFilter . sharedMesh . name . Contains ( "Cube" ) ) {
504504 XElement box = new XElement ( "box" ) ;
505505
506- Vector3 boxSize = visualTransform . localScale . Unity2RosScale ( ) ;
506+ Vector3 boxSize = visualTransform . lossyScale . Unity2RosScale ( ) ;
507507 box . SetAttributeValue ( "size" , boxSize . ToXMLString ( ) ) ;
508508 geometry . Add ( box ) ;
509509
510510 } else if ( meshFilter . sharedMesh . name . Contains ( "Sphere" ) ) {
511511 XElement sphere = new XElement ( "sphere" ) ;
512- float radius = visualTransform . localScale . x / 2.0f ;
512+ float radius = visualTransform . lossyScale . x / 2.0f ;
513513 sphere . SetAttributeValue ( "radius" , radius ) ;
514514 geometry . Add ( sphere ) ;
515515
516516 } else if ( meshFilter . sharedMesh . name . Contains ( "Cylinder" ) ) {
517517 XElement cylinder = new XElement ( "cylinder" ) ;
518- float radius = visualTransform . localScale . x / 2.0f ;
519- float height = visualTransform . localScale . y * 2.0f ;
518+ float radius = visualTransform . lossyScale . x / 2.0f ;
519+ float height = visualTransform . lossyScale . y * 2.0f ;
520520 cylinder . SetAttributeValue ( "radius" , radius ) ;
521521 cylinder . SetAttributeValue ( "length" , height ) ;
522522
@@ -526,7 +526,7 @@ protected void BuildLinkVisuals(Transform visualTransform, XElement link, Vector
526526 } else { // regular mesh so export meshes as OBJ
527527 XElement mesh = new XElement ( "mesh" ) ;
528528 mesh . SetAttributeValue ( "filename" , $ "{ visualTransform . name } .obj") ;
529- Vector3 scale = visualTransform . localScale ;
529+ Vector3 scale = visualTransform . lossyScale . Unity2RosScale ( ) ;
530530 mesh . SetAttributeValue ( "scale" , scale . ToXMLString ( ) ) ;
531531 geometry . Add ( mesh ) ;
532532
0 commit comments