Example #1
0
    /// <summary>
    /// Sets visual of a given link when loaded.
    /// </summary>
    /// <param name="linkName"></param>
    /// <param name="urdfVisual"></param>
    public void SetLinkVisualLoaded(string linkName, UrdfVisual urdfVisual)
    {
        Links.TryGetValue(linkName, out RobotLink link);
        link?.SetVisualLoaded(urdfVisual);

        float scale = 1f;

        // get scale of urdfVisual and each of its child
        foreach (Transform child in urdfVisual.GetComponentsInChildren <Transform>())
        {
            scale *= child.localScale.x;
        }

        link?.SetLinkScale(scale);

        if (urdfVisual.UrdfMaterial)
        {
            SetLinkMaterial(urdfVisual.gameObject, urdfVisual.UrdfMaterial);
        }

        IsRobotLoaded();

        // if robot is loaded, show its visuals, otherwise hide them
        //link?.SetActiveVisuals(RobotLoaded);
    }
Example #2
0
        public static void Create(Transform parent, GeometryTypes type)
        {
            GameObject visualObject = new GameObject("unnamed");

            visualObject.transform.SetParentAndAlign(parent);
            UrdfVisual urdfVisual = visualObject.AddComponent <UrdfVisual>();

            urdfVisual.GeometryType = type;
            UrdfGeometryVisual.Create(visualObject.transform, type);
        }
Example #3
0
    /// <summary>
    /// Sets that visual of a given link is loaded (ColladaImporter imported mesh).
    /// </summary>
    /// <param name="linkName"></param>
    /// <param name="urdfVisual"></param>
    public void SetLinkVisualLoaded(string linkName, UrdfVisual urdfVisual)
    {
        Links.TryGetValue(linkName, out RobotLink link);
        link?.SetVisualLoaded(urdfVisual);

        IsRobotLoaded();

        // if robot is loaded, show its visuals, otherwise hide them
        link?.SetActiveVisuals(robotLoaded);
    }
Example #4
0
        public static void Create(Transform parent, Link.Visual visual)
        {
            GameObject visualObject = new GameObject(visual.name ?? "unnamed");

            visualObject.transform.SetParentAndAlign(parent);
            UrdfVisual urdfVisual = visualObject.AddComponent <UrdfVisual>();

            urdfVisual.GeometryType = UrdfGeometry.GetGeometryType(visual.geometry);
            UrdfGeometryVisual.Create(visualObject.transform, urdfVisual.GeometryType, visual.geometry);

            UrdfMaterial.SetUrdfMaterial(visualObject, visual.material);
            UrdfOrigin.ImportOriginData(visualObject.transform, visual.origin);
        }
Example #5
0
        public override void OnInspectorGUI()
        {
            urdfVisuals = (UrdfVisuals)target;

            GUILayout.Space(10);
            geometryType = (UrdfGeometry.GeometryTypes)EditorGUILayout.EnumPopup("Type of visual", geometryType);

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Add visual"))
            {
                UrdfVisual.Create(urdfVisuals.transform, geometryType);
            }
            EditorGUILayout.EndHorizontal();
        }
        public static Link.Visual ExportVisualData(this UrdfVisual urdfVisual)
        {
            UrdfGeometry.CheckForUrdfCompatibility(urdfVisual.transform, urdfVisual.geometryType);

            Link.Geometry geometry = UrdfGeometry.ExportGeometryData(urdfVisual.geometryType, urdfVisual.transform);

            Link.Visual.Material material = null;
            if ((geometry.mesh != null))
            {
                material = UrdfMaterial.ExportMaterialData(urdfVisual.GetComponentInChildren <MeshRenderer>().sharedMaterial);
            }
            string visualName = urdfVisual.name == "unnamed" ? null : urdfVisual.name;

            return(new Link.Visual(geometry, visualName, UrdfOrigin.ExportOriginData(urdfVisual.transform), material));
        }
Example #7
0
        public static Link.Visual ExportVisualData(this UrdfVisual urdfVisual)
        {
            UrdfGeometry.CheckForUrdfCompatibility(urdfVisual.transform, urdfVisual.GeometryType);

            Link.Geometry geometry = UrdfGeometry.ExportGeometryData(urdfVisual.GeometryType, urdfVisual.transform);

            Link.Visual.Material material = null;
            if (!(geometry.mesh != null && geometry.mesh.filename.ToLower().EndsWith(".dae"))) //Collada files contain their own materials
            {
                material = UrdfMaterial.ExportMaterialData(urdfVisual.GetComponentInChildren <MeshRenderer>().sharedMaterial);
            }

            string visualName = urdfVisual.name == "unnamed" ? null : urdfVisual.name;

            return(new Link.Visual(geometry, visualName, UrdfOrigin.ExportOriginData(urdfVisual.transform), material));
        }
        public override void OnInspectorGUI()
        {
            urdfVisual = (UrdfVisual)target;

            GUILayout.Space(5);

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Geometry Type");
            EditorGUILayout.LabelField(urdfVisual.GeometryType.ToString());
            EditorGUILayout.EndHorizontal();

            if (GUILayout.Button("Add collision to match visual"))
            {
                urdfVisual.AddCorrespondingCollision();
            }

            DisplayWarnings();
        }
Example #9
0
 protected virtual void OnEnable()
 {
     urdfVisual = (UrdfVisual)serializedObject.targetObject;
 }
Example #10
0
        public static void AddCorrespondingCollision(this UrdfVisual urdfVisual)
        {
            UrdfCollisions collisions = urdfVisual.GetComponentInParent <UrdfLink>().GetComponentInChildren <UrdfCollisions>();

            UrdfCollisionExtensions.Create(collisions.transform, urdfVisual.GeometryType, urdfVisual.transform);
        }
Example #11
0
 public void SetVisualLoaded(UrdfVisual urdfVisual)
 {
     Visuals[urdfVisual] = true;
 }