Skip to content

VHACD Editor import fail on existing prefabs #232

Description

@entrophae

Bug in Editor Mode
VHACD import breaks on import of the same/similar robot urdf.

  • Deleting the prefabs in Explorer solves the issue
  • Selecting "Overwrite Prefabs" does not change the result

To Reproduce
Steps to reproduce the behavior:

  1. Editor Mode
  2. Open Context Menu -> 3D Objects -> URDF Model (Import)
  3. Select a .urdf file
  4. Import with settings: {yAxis, vHACD, overwrite: false/true} (if false or true doesnt matter, still same result)
  5. Repeat step 1 - 3 with the same .urdf file (or a robot of the same type)

Console logs / stack traces

Detected an stl file at Assets\Robots\abb\abb_irb4600_support\meshes\irb4600\collision\base_link.stl - creating a mesh prefab.
UnityEngine.Debug:Log (object)
Unity.Robotics.UrdfImporter.StlAssetPostProcessor:PostprocessStlFile (string) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/MeshProcessing/StlAssetPostProcessor.cs:36)
Unity.Robotics.UrdfImporter.LocateAssetHandler:FindUrdfAsset<UnityEngine.GameObject> (string) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/AssetHandlers/LocateAssetHandler.cs:33)
Unity.Robotics.UrdfImporter.UrdfGeometryCollision:CreateMeshCollider (Unity.Robotics.UrdfImporter.Link/Geometry/Mesh) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfGeometryCollision.cs:72)
Unity.Robotics.UrdfImporter.UrdfGeometryCollision:Create (UnityEngine.Transform,Unity.Robotics.UrdfImporter.GeometryTypes,Unity.Robotics.UrdfImporter.Link/Geometry) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfGeometryCollision.cs:48)
Unity.Robotics.UrdfImporter.UrdfCollisionExtensions:Create (UnityEngine.Transform,Unity.Robotics.UrdfImporter.Link/Collision) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfCollisionExtensions.cs:62)
Unity.Robotics.UrdfImporter.UrdfCollisionsExtensions:Create (UnityEngine.Transform,System.Collections.Generic.List`1<Unity.Robotics.UrdfImporter.Link/Collision>) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfCollisionsExtensions.cs:36)
Unity.Robotics.UrdfImporter.UrdfLinkExtensions:Create (UnityEngine.Transform,Unity.Robotics.UrdfImporter.Link,Unity.Robotics.UrdfImporter.Joint) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfLinkExtensions.cs:26)
Unity.Robotics.UrdfImporter.UrdfRobotExtensions:ProcessJointStack (Unity.Robotics.UrdfImporter.UrdfRobotExtensions/ImportPipelineData) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfRobotExtensions.cs:132)
Unity.Robotics.UrdfImporter.UrdfRobotExtensions/<Create>d__8:MoveNext () (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfRobotExtensions.cs:186)
Unity.EditorCoroutines.Editor.EditorCoroutine/YieldProcessor:MoveNext (System.Collections.IEnumerator) (at ./Library/PackageCache/com.unity.editorcoroutines@7d48783e7b8c/Editor/EditorCoroutine.cs:80)
Unity.EditorCoroutines.Editor.EditorCoroutine:ProcessIEnumeratorRecursive (System.Collections.IEnumerator) (at ./Library/PackageCache/com.unity.editorcoroutines@7d48783e7b8c/Editor/EditorCoroutine.cs:134)
Unity.EditorCoroutines.Editor.EditorCoroutine:MoveNext () (at ./Library/PackageCache/com.unity.editorcoroutines@7d48783e7b8c/Editor/EditorCoroutine.cs:115)
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()


NullReferenceException: Object reference not set to an instance of an object
MeshProcess.VHACD.GenerateConvexMeshes (UnityEngine.Mesh mesh) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/VHACD/VHACD.cs:143)
Unity.Robotics.UrdfImporter.UrdfGeometryCollision.ConvertMeshToColliders (UnityEngine.GameObject gameObject, System.String location, System.Boolean setConvex) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfGeometryCollision.cs:208)
Unity.Robotics.UrdfImporter.UrdfGeometryCollision.CreateMeshCollider (Unity.Robotics.UrdfImporter.Link+Geometry+Mesh mesh) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfGeometryCollision.cs:80)
Unity.Robotics.UrdfImporter.UrdfGeometryCollision.Create (UnityEngine.Transform parent, Unity.Robotics.UrdfImporter.GeometryTypes geometryType, Unity.Robotics.UrdfImporter.Link+Geometry geometry) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfGeometryCollision.cs:48)
Unity.Robotics.UrdfImporter.UrdfCollisionExtensions.Create (UnityEngine.Transform parent, Unity.Robotics.UrdfImporter.Link+Collision collision) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfCollisionExtensions.cs:62)
Unity.Robotics.UrdfImporter.UrdfCollisionsExtensions.Create (UnityEngine.Transform parent, System.Collections.Generic.List`1[T] collisions) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfCollisionsExtensions.cs:36)
Unity.Robotics.UrdfImporter.UrdfLinkExtensions.Create (UnityEngine.Transform parent, Unity.Robotics.UrdfImporter.Link link, Unity.Robotics.UrdfImporter.Joint joint) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfLinkExtensions.cs:26)
Unity.Robotics.UrdfImporter.UrdfRobotExtensions.ProcessJointStack (Unity.Robotics.UrdfImporter.UrdfRobotExtensions+ImportPipelineData im) (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfRobotExtensions.cs:132)
Unity.Robotics.UrdfImporter.UrdfRobotExtensions+<Create>d__8.MoveNext () (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/Extensions/UrdfRobotExtensions.cs:186)
Unity.EditorCoroutines.Editor.EditorCoroutine+YieldProcessor.MoveNext (System.Collections.IEnumerator enumerator) (at ./Library/PackageCache/com.unity.editorcoroutines@7d48783e7b8c/Editor/EditorCoroutine.cs:80)
Unity.EditorCoroutines.Editor.EditorCoroutine.ProcessIEnumeratorRecursive (System.Collections.IEnumerator enumerator) (at ./Library/PackageCache/com.unity.editorcoroutines@7d48783e7b8c/Editor/EditorCoroutine.cs:134)
Unity.EditorCoroutines.Editor.EditorCoroutine.MoveNext () (at ./Library/PackageCache/com.unity.editorcoroutines@7d48783e7b8c/Editor/EditorCoroutine.cs:115)
UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at <316d3d2a3f8c4b19b769e5bc4918c7d7>:0)

Expected behavior
The importer should import the robots without problem.

Screenshots
Image

Environment (please complete the following information, where applicable):

  • Unity Version: Unity 6.1 6000.1.2f1.1833.5804
  • Unity machine: Windows 10 Education - 10.0.19045 Build 19045
  • Branch or version: URDF Importer 0.5.2-preview

Additional context
The urdf files are from https://github.com/Daniella1/urdf_files_dataset/tree/main/urdf_files/ros-industrial/xacro_generated/abb
I extracted every urdf outside the support folders to achieve the expected importer folder hierarchy.

Directory state before Import:

...\Unity\ValCIUM\Assets\Robots\abb\abb_irb4600_support
│   meshes.meta
│   meta-information.json
│   meta-information.json.meta
│
└───meshes
    │   irb4600.meta
    │   irb4600_20_250.meta
    │   irb4600_40_255.meta
    │   irb4600_60_205.meta
    │
    ├───irb4600
    │   │   collision.meta
    │   │   visual.meta
    │   │
    │   ├───collision
    │   │       base_link.stl
    │   │       base_link.stl.meta
    │   │       link_1.stl
    │   │       link_1.stl.meta
    │   │
    │   └───visual
    │           base_link.dae
    │           base_link.dae.meta
    │           link_1.dae
    │           link_1.dae.meta
    │
    ├───irb4600_20_250
    │   │   collision.meta
    │   │   visual.meta
    │   │
    │   ├───collision
    │   │       link_2.stl
    │   │       link_2.stl.meta
    │   │       link_3.stl
    │   │       link_3.stl.meta
    │   │       link_4.stl
    │   │       link_4.stl.meta
    │   │       link_5.stl
    │   │       link_5.stl.meta
    │   │       link_6.stl
    │   │       link_6.stl.meta
    │   │
    │   └───visual
    │           link_2.dae
    │           link_2.dae.meta
    │           link_3.dae
    │           link_3.dae.meta
    │           link_4.dae
    │           link_4.dae.meta
    │           link_5.dae
    │           link_5.dae.meta
    │           link_6.dae
    │           link_6.dae.meta
    │
    ├───irb4600_40_255
    │   │   collision.meta
    │   │   visual.meta
    │   │
    │   ├───collision
    │   │       link_2.stl
    │   │       link_2.stl.meta
    │   │       link_3.stl
    │   │       link_3.stl.meta
    │   │       link_4.stl
    │   │       link_4.stl.meta
    │   │       link_5.stl
    │   │       link_5.stl.meta
    │   │       link_6.stl
    │   │       link_6.stl.meta
    │   │
    │   └───visual
    │           link_2.dae
    │           link_2.dae.meta
    │           link_3.dae
    │           link_3.dae.meta
    │           link_4.dae
    │           link_4.dae.meta
    │           link_5.dae
    │           link_5.dae.meta
    │           link_6.dae
    │           link_6.dae.meta
    │
    └───irb4600_60_205
        │   collision.meta
        │   visual.meta
        │
        ├───collision
        │       link_2.stl
        │       link_2.stl.meta
        │       link_3.stl
        │       link_3.stl.meta
        │       link_4.stl
        │       link_4.stl.meta
        │       link_5.stl
        │       link_5.stl.meta
        │       link_6.stl
        │       link_6.stl.meta
        │
        └───visual
                link_2.dae
                link_2.dae.meta
                link_3.dae
                link_3.dae.meta
                link_4.dae
                link_4.dae.meta
                link_5.dae
                link_5.dae.meta
                link_6.dae
                link_6.dae.meta

Directory State after first Import:

...\Unity\ValCIUM\Assets\Robots\abb\abb_irb4600_support
│   meshes.meta
│   meta-information.json
│   meta-information.json.meta
│
└───meshes
    │   irb4600.meta
    │   irb4600_20_250.meta
    │   irb4600_40_255.meta
    │   irb4600_60_205.meta
    │
    ├───irb4600
    │   │   collision.meta
    │   │   visual.meta
    │   │
    │   ├───collision
    │   │       base_link.prefab
    │   │       base_link.prefab.meta
    │   │       base_link.stl
    │   │       base_link.stl.meta
    │   │       base_link_0.asset
    │   │       base_link_0.asset.meta
    │   │       base_link_1.asset
    │   │       base_link_1.asset.meta
    │   │       link_1.prefab
    │   │       link_1.prefab.meta
    │   │       link_1.stl
    │   │       link_1.stl.meta
    │   │       link_1_0.asset
    │   │       link_1_0.asset.meta
    │   │       link_1_1.asset
    │   │       link_1_1.asset.meta
    │   │
    │   └───visual
    │           base_link.dae
    │           base_link.dae.meta
    │           link_1.dae
    │           link_1.dae.meta
    │
    ├───irb4600_20_250
    │   │   collision.meta
    │   │   visual.meta
    │   │
    │   ├───collision
    │   │       link_2.prefab
    │   │       link_2.prefab.meta
    │   │       link_2.stl
    │   │       link_2.stl.meta
    │   │       link_2_0.asset
    │   │       link_2_0.asset.meta
    │   │       link_2_1.asset
    │   │       link_2_1.asset.meta
    │   │       link_3.prefab
    │   │       link_3.prefab.meta
    │   │       link_3.stl
    │   │       link_3.stl.meta
    │   │       link_3_0.asset
    │   │       link_3_0.asset.meta
    │   │       link_3_1.asset
    │   │       link_3_1.asset.meta
    │   │       link_4.prefab
    │   │       link_4.prefab.meta
    │   │       link_4.stl
    │   │       link_4.stl.meta
    │   │       link_4_0.asset
    │   │       link_4_0.asset.meta
    │   │       link_4_1.asset
    │   │       link_4_1.asset.meta
    │   │       link_5.prefab
    │   │       link_5.prefab.meta
    │   │       link_5.stl
    │   │       link_5.stl.meta
    │   │       link_5_0.asset
    │   │       link_5_0.asset.meta
    │   │       link_5_1.asset
    │   │       link_5_1.asset.meta
    │   │       link_6.prefab
    │   │       link_6.prefab.meta
    │   │       link_6.stl
    │   │       link_6.stl.meta
    │   │       link_6_0.asset
    │   │       link_6_0.asset.meta
    │   │       link_6_1.asset
    │   │       link_6_1.asset.meta
    │   │
    │   └───visual
    │           link_2.dae
    │           link_2.dae.meta
    │           link_3.dae
    │           link_3.dae.meta
    │           link_4.dae
    │           link_4.dae.meta
    │           link_5.dae
    │           link_5.dae.meta
    │           link_6.dae
    │           link_6.dae.meta
    │
    ├───irb4600_40_255
    │   │   collision.meta
    │   │   visual.meta
    │   │
    │   ├───collision
    │   │       link_2.stl
    │   │       link_2.stl.meta
    │   │       link_3.stl
    │   │       link_3.stl.meta
    │   │       link_4.stl
    │   │       link_4.stl.meta
    │   │       link_5.stl
    │   │       link_5.stl.meta
    │   │       link_6.stl
    │   │       link_6.stl.meta
    │   │
    │   └───visual
    │           link_2.dae
    │           link_2.dae.meta
    │           link_3.dae
    │           link_3.dae.meta
    │           link_4.dae
    │           link_4.dae.meta
    │           link_5.dae
    │           link_5.dae.meta
    │           link_6.dae
    │           link_6.dae.meta
    │
    └───irb4600_60_205
        │   collision.meta
        │   visual.meta
        │
        ├───collision
        │       link_2.stl
        │       link_2.stl.meta
        │       link_3.stl
        │       link_3.stl.meta
        │       link_4.stl
        │       link_4.stl.meta
        │       link_5.stl
        │       link_5.stl.meta
        │       link_6.stl
        │       link_6.stl.meta
        │
        └───visual
                link_2.dae
                link_2.dae.meta
                link_3.dae
                link_3.dae.meta
                link_4.dae
                link_4.dae.meta
                link_5.dae
                link_5.dae.meta
                link_6.dae
                link_6.dae.meta

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions