Skip to content

Commit 7f8dd12

Browse files
committed
using lossy scale instead of local scale for urdf export
1 parent ab2d836 commit 7f8dd12

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

Runtime/Scripts/Util/ImportExport/ZOExportURDF.cs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)