/// <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); }
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); }
/// <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); }
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); }
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)); }
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(); }
protected virtual void OnEnable() { urdfVisual = (UrdfVisual)serializedObject.targetObject; }
public static void AddCorrespondingCollision(this UrdfVisual urdfVisual) { UrdfCollisions collisions = urdfVisual.GetComponentInParent <UrdfLink>().GetComponentInChildren <UrdfCollisions>(); UrdfCollisionExtensions.Create(collisions.transform, urdfVisual.GeometryType, urdfVisual.transform); }
public void SetVisualLoaded(UrdfVisual urdfVisual) { Visuals[urdfVisual] = true; }