Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions tests/data/assets/box.obj
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Box with normals and uvs
# 8 points
# 24 vertices
# 6 primitives
# Bounds: [-0.5, -0.5, -0.5] to [0.5, 0.5, 0.5]
g
v 0.5 -0.5 0.5
v -0.5 -0.5 0.5
v 0.5 0.5 0.5
v -0.5 0.5 0.5
v -0.5 -0.5 -0.5
v 0.5 -0.5 -0.5
v -0.5 0.5 -0.5
v 0.5 0.5 -0.5
vt 1 0 1
vt 1 1 1
vt 0 1 1
vt 0 0 1
vt 1 0 1
vt 1 1 1
vt 0 1 1
vt 0 0 1
vt 0 1 1
vt 0 0 1
vt 1 0 1
vt 1 1 1
vt 1 0 1
vt 1 1 1
vt 0 1 1
vt 0 0 1
vt 0 1 1
vt 0 0 1
vt 1 0 1
vt 1 1 1
vn 0 0 1
vn -0 -0 1
vn -0 -0 1
vn -0 -0 1
vn 0 -0 -1
vn -0 -0 -1
vn -0 0 -1
vn -0 -0 -1
vn -0 1 -0
vn 0 1 0
vn -0 1 -0
vn -0 1 -0
vn -0 -1 -0
vn 0 -1 -0
vn -0 -1 -0
vn -0 -1 0
vn 1 -0 -0
vn 1 0 0
vn 1 -0 -0
vn 1 -0 -0
vn -1 -0 -0
vn -1 -0 0
vn -1 -0 -0
vn -1 0 -0
g
f 1/1/1 3/2/2 4/3/3 2/4/4
f 5/5/5 7/6/6 8/7/7 6/8/8
f 7/9/9 4/10/10 3/11/11 8/12/12
f 6/13/13 1/14/14 2/15/15 5/16/16
f 6/13/17 8/12/18 3/17/19 1/18/20
f 2/19/21 4/20/22 7/9/23 5/16/24
72 changes: 72 additions & 0 deletions tests/data/assets/name_test.obj
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
o Cube:Red
v 0.500000 0.300000 0.500000
v 0.500000 0.300000 -0.500000
v -0.500000 0.300000 0.500000
v -0.500000 0.300000 -0.500000
v 0.500000 1.300000 0.500000
v 0.500000 1.300000 -0.500000
v -0.500000 1.300000 0.500000
v -0.500000 1.300000 -0.500000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.125000 0.750000
s 0
f 1/1/1 5/2/1 7/3/1 3/4/1
f 4/5/2 3/4/2 7/6/2 8/7/2
f 8/8/3 7/9/3 5/10/3 6/11/3
f 6/12/4 2/13/4 4/5/4 8/14/4
f 2/13/5 1/1/5 3/4/5 4/5/5
f 6/11/6 5/10/6 1/1/6 2/13/6
o Cube:Green
v 0.500000 -1.300000 0.500000
v 0.500000 -1.300000 -0.500000
v -0.500000 -1.300000 0.500000
v -0.500000 -1.300000 -0.500000
v 0.500000 -0.300000 0.500000
v 0.500000 -0.300000 -0.500000
v -0.500000 -0.300000 0.500000
v -0.500000 -0.300000 -0.500000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.125000 0.750000
s 0
f 9/15/7 13/16/7 15/17/7 11/18/7
f 12/19/8 11/18/8 15/20/8 16/21/8
f 16/22/9 15/23/9 13/24/9 14/25/9
f 14/26/10 10/27/10 12/19/10 16/28/10
f 10/27/11 9/15/11 11/18/11 12/19/11
f 14/25/12 13/24/12 9/15/12 10/27/12
1 change: 1 addition & 0 deletions tests/data/assets/no_shape.obj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# empty file.
19 changes: 19 additions & 0 deletions tests/data/assets/two_boxes.mtl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
newmtl green_mat
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.000000 1.000000 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.500000
d 1.000000
illum 2

newmtl red_mat
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 1.000000 0.000000 0.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
75 changes: 75 additions & 0 deletions tests/data/assets/two_boxes.obj
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
mtllib two_boxes.mtl
o Cube_Red
v 0.500000 0.300000 0.500000
v 0.500000 0.300000 -0.500000
v -0.500000 0.300000 0.500000
v -0.500000 0.300000 -0.500000
v 0.500000 1.300000 0.500000
v 0.500000 1.300000 -0.500000
v -0.500000 1.300000 0.500000
v -0.500000 1.300000 -0.500000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.125000 0.750000
s 0
usemtl red_mat
f 1/1/1 5/2/1 7/3/1 3/4/1
f 4/5/2 3/4/2 7/6/2 8/7/2
f 8/8/3 7/9/3 5/10/3 6/11/3
f 6/12/4 2/13/4 4/5/4 8/14/4
f 2/13/5 1/1/5 3/4/5 4/5/5
f 6/11/6 5/10/6 1/1/6 2/13/6
o Cube_Green
v 0.500000 -1.300000 0.500000
v 0.500000 -1.300000 -0.500000
v -0.500000 -1.300000 0.500000
v -0.500000 -1.300000 -0.500000
v 0.500000 -0.300000 0.500000
v 0.500000 -0.300000 -0.500000
v -0.500000 -0.300000 0.500000
v -0.500000 -0.300000 -0.500000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -0.0000 -1.0000 -0.0000
vn 1.0000 -0.0000 -0.0000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.125000 0.750000
s 0
usemtl green_mat
f 9/15/7 13/16/7 15/17/7 11/18/7
f 12/19/8 11/18/8 15/20/8 16/21/8
f 16/22/9 15/23/9 13/24/9 14/25/9
f 14/26/10 10/27/10 12/19/10 16/28/10
f 10/27/11 9/15/11 11/18/11 12/19/11
f 14/25/12 13/24/12 9/15/12 10/27/12
11 changes: 11 additions & 0 deletions tests/data/error_obj_no_exist_filename.urdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<robot name="obj_no_exist_filename">
<link name="BaseLink">
<visual>
<geometry>
<!-- This is a deliberate mistake. -->
<!-- The mesh filename does not exist. -->
<mesh filename="assets/no_exist.obj"/>
</geometry>
</visual>
</link>
</robot>
11 changes: 11 additions & 0 deletions tests/data/error_obj_no_shape.urdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<robot name="obj_no_shape">
<link name="BaseLink">
<visual>
<geometry>
<!-- This is a deliberate mistake. -->
<!-- There is no shape. -->
<mesh filename="assets/no_shape.obj"/>
</geometry>
</visual>
</link>
</robot>
25 changes: 25 additions & 0 deletions tests/data/meshes.urdf
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,23 @@
<mesh filename="assets/box.obj" scale="0.8 0.8 0.8" />
</geometry>
</visual>
<collision name="collision_box">
<geometry>
<mesh filename="assets/box.obj" scale="0.8 0.8 0.8" />
</geometry>
</collision>
</link>
<link name="link_mesh_multi_objs">
<visual>
<geometry>
<mesh filename="assets/two_boxes.obj" scale="0.8 0.8 0.8" />
</geometry>
</visual>
<collision name="two_collision_boxes">
<geometry>
<mesh filename="assets/two_boxes.obj" scale="0.8 0.8 0.8" />
</geometry>
</collision>
</link>
<link name="link_mesh_dae">
<visual>
Expand Down Expand Up @@ -44,4 +61,12 @@
<parent link="link_mesh_dae"/>
<child link="link_mesh_dxf"/>
</joint>

<!-- Verify that the multi-object mesh is converted correctly. -->
<joint name="joint_obj_multi_objs" type="fixed">
<origin rpy="0 0 0" xyz="-1 0 0"/>
<parent link="link_mesh_stl"/>
<child link="link_mesh_multi_objs"/>
</joint>

</robot>
14 changes: 14 additions & 0 deletions tests/data/test_displayname.urdf
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,24 @@
</geometry>
</visual>
</link>
<link name="link-mesh_obj">
<visual>
<geometry>
<!-- Contains "Cube:Red" and "Cube:Green" as meshes. -->
<mesh filename="assets/name_test.obj" scale="0.5 0.5 0.5"/>
</geometry>
</visual>
</link>

<joint name="joint:root" type="fixed">
<origin rpy="0 0 0" xyz="1 0 0"/>
<parent link="link-box"/>
<child link="link-box2"/>
</joint>
<joint name="mesh_obj" type="fixed">
<origin rpy="0 0 0" xyz="1 0 0"/>
<parent link="link-box2"/>
<child link="link-mesh_obj"/>
</joint>

</robot>
20 changes: 20 additions & 0 deletions tests/testConverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,23 @@ def test_joint_loop_structure(self):
converter = urdf_usd_converter.Converter()
with self.assertRaisesRegex(ValueError, r".*Closed loop articulations are not supported.*"):
converter.convert(input_path, output_dir)

def test_load_error_obj_no_exist_filename(self):
# A non-existent obj file is specified.

input_path = "tests/data/error_obj_no_exist_filename.urdf"
output_dir = str(pathlib.Path(self.tmpDir()) / "error_obj_no_exist_filename")

converter = urdf_usd_converter.Converter()
with self.assertRaisesRegex(RuntimeError, r".*could not be parsed..*"):
converter.convert(input_path, output_dir)

def test_load_error_obj_no_shape(self):
# There is no shape.

input_path = "tests/data/error_obj_no_shape.urdf"
output_dir = str(pathlib.Path(self.tmpDir()) / "error_obj_no_shape")

converter = urdf_usd_converter.Converter()
with self.assertRaisesRegex(RuntimeError, r".*contains no meshes.*"):
converter.convert(input_path, output_dir)
21 changes: 21 additions & 0 deletions tests/testDisplayName.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,27 @@ def test_display_name(self):
self.assertTrue(box_2_prim.IsValid())
self.assertTrue(box_2_prim.IsA(UsdGeom.Cube))

# Check for obj containing two meshes.
link_mesh_obj_prim = link_box_2_prim.GetChild("tn__linkmesh_obj_VI")
self.assertTrue(link_mesh_obj_prim.IsValid())
self.assertTrue(link_mesh_obj_prim.IsA(UsdGeom.Xform))
self.assertEqual(usdex.core.getDisplayName(link_mesh_obj_prim), "link-mesh_obj")

mesh_obj_prim = link_mesh_obj_prim.GetChild("name_test")
self.assertTrue(mesh_obj_prim.IsValid())
self.assertTrue(mesh_obj_prim.IsA(UsdGeom.Xform))

mesh_obj_mesh_prim = mesh_obj_prim.GetChild("tn__CubeRed_YE")
self.assertTrue(mesh_obj_mesh_prim.IsValid())
self.assertTrue(mesh_obj_mesh_prim.IsA(UsdGeom.Mesh))
self.assertEqual(usdex.core.getDisplayName(mesh_obj_mesh_prim), "Cube:Red")

mesh_obj_mesh_prim = mesh_obj_prim.GetChild("tn__CubeGreen_vH")
self.assertTrue(mesh_obj_mesh_prim.IsValid())
self.assertTrue(mesh_obj_mesh_prim.IsA(UsdGeom.Mesh))
self.assertEqual(usdex.core.getDisplayName(mesh_obj_mesh_prim), "Cube:Green")

# Check for physics.
physics_scope_prim = default_prim.GetChild("Physics")
self.assertTrue(physics_scope_prim.IsValid())

Expand Down
Loading
Loading