From f61de14de625752ccae1ed2d0fd10fbc1b4a503b Mon Sep 17 00:00:00 2001 From: trzy Date: Sun, 23 Apr 2017 22:15:29 -0400 Subject: [PATCH 1/4] Added QueryTopology_FindLargestPositionsSittable() function to DLL interface --- .../SpatialUnderstandingDllTopology.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Assets/HoloToolkit/SpatialUnderstanding/Scripts/SpatialUnderstandingDllTopology.cs b/Assets/HoloToolkit/SpatialUnderstanding/Scripts/SpatialUnderstandingDllTopology.cs index 124952c450e..fa07b316dd4 100644 --- a/Assets/HoloToolkit/SpatialUnderstanding/Scripts/SpatialUnderstandingDllTopology.cs +++ b/Assets/HoloToolkit/SpatialUnderstanding/Scripts/SpatialUnderstandingDllTopology.cs @@ -119,6 +119,25 @@ public static extern int QueryTopology_FindPositionsSittable( [In] float minFacingClearance, [In] int locationCount, // Pass in the space allocated in locationData [In, Out] IntPtr locationData); // TopologyResult - } + + /// + /// Finds only large spaces on platforms meeting the criteria specified by the parameters. + /// + /// Minimum height above the floor for a space + /// Maximum height above the floor for a space + /// Minimum clearance for the space above the placement surface (minimum space height) + /// Minimum required width on placement surface + /// Number of location results supplied by the user in locationData + /// Location result array of TopologyResult to be filled with the spaces found by the query + /// Number of spaces found by the query. This value is limited by the number of results supplied by the caller (locationCount) + [DllImport("SpatialUnderstanding")] + public static extern int QueryTopology_FindLargePositionsSittable( + [In] float minHeight, + [In] float maxHeight, + [In] float minFacingClearance, + [In] float minWidth, + [In] int locationCount, // Pass in the space allocated in locationData + [In, Out] IntPtr locationData); // TopologyResult + } } \ No newline at end of file From 14ae1598fe20373dd28003656918ea9df6834d11 Mon Sep 17 00:00:00 2001 From: Bart Trzynadlowski Date: Fri, 24 Nov 2017 22:44:09 -0500 Subject: [PATCH 2/4] Updated Spatial Understanding demo with QueryTopology_FindLargestPositionsSittable() --- .../Scripts/SpaceVisualizer.cs | 24 +++++++++++++++++++ .../SpatialUnderstanding/Scripts/UI.cs | 2 ++ 2 files changed, 26 insertions(+) diff --git a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/SpaceVisualizer.cs b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/SpaceVisualizer.cs index 6e36aaa889a..b4fa837a925 100644 --- a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/SpaceVisualizer.cs +++ b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/SpaceVisualizer.cs @@ -206,6 +206,30 @@ public void Query_Topology_FindPositionsPlaceable() HandleResults_Topology("Find Placeable Positions", locationCount, new Vector3(0.25f, 0.025f, 0.25f), Color.cyan); } + public void Query_Topology_FindLargePositionsSittable() + { + // Setup + float minHeight = 0.125f; + float maxHeight = 2.0f; + float minFacingClearance = 1.0f; + float minWidth = .5f; + + // Only if we're enabled + if (!SpatialUnderstanding.Instance.AllowSpatialUnderstanding) + { + return; + } + + // Query + IntPtr resultsTopologyPtr = SpatialUnderstanding.Instance.UnderstandingDLL.PinObject(resultsTopology); + int locationCount = SpatialUnderstandingDllTopology.QueryTopology_FindLargePositionsSittable( + minHeight, maxHeight, minFacingClearance, minWidth, + resultsTopology.Length, resultsTopologyPtr); + + // Output + HandleResults_Topology("Find Large Sittable Positions", locationCount, new Vector3(minWidth, 0.025f, minWidth), Color.cyan); + } + public void Query_Shape_FindPositionsOnShape(string shapeName) { // Setup diff --git a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs index 45c460ff428..e0ba6335a20 100644 --- a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs +++ b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs @@ -221,6 +221,7 @@ private void SetupMenus() AddButton("Large positions on floor", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindLargestPositionsOnFloor(); timeLastQuery = DateTime.MinValue; }); AddButton("Place objects positions", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindPositionsPlaceable(); timeLastQuery = DateTime.MinValue; }); + // Shape queries ButtonPanels[(int)Panels.Shapes].Button.GetComponentInChildren().text = "Shape Queries"; ButtonPanels[(int)Panels.Shapes].Button.onClick.AddListener(() => { SetActiveTab(Panels.Shapes); }); @@ -247,6 +248,7 @@ private void SetupMenus() AddButton("OnEdge NearCenter", Panels.LevelSolver, () => { LevelSolver.Instance.Query_OnEdge_NearCenter(); timeLastQuery = DateTime.MinValue; }); AddButton("OnFloor AwayFromMe", Panels.LevelSolver, () => { LevelSolver.Instance.Query_OnFloor_AwayFromMe(); timeLastQuery = DateTime.MinValue; }); AddButton("OnFloor NearMe", Panels.LevelSolver, () => { LevelSolver.Instance.Query_OnFloor_NearMe(); timeLastQuery = DateTime.MinValue; }); + AddButton("Large positions sittable", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindLargePositionsSittable(); timeLastQuery = DateTime.MinValue; }); // Default one of them active SetActiveTab(Panels.Topology); From 81e120ba26eb8c529036fdb9670cb55775b9a6a3 Mon Sep 17 00:00:00 2001 From: Bart Trzynadlowski Date: Fri, 24 Nov 2017 23:00:50 -0500 Subject: [PATCH 3/4] Fixed to include Query_Topology_FindLargePositionsSittable() example --- Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs index e0ba6335a20..a68f9ce86c7 100644 --- a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs +++ b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs @@ -220,7 +220,7 @@ private void SetupMenus() AddButton("Positions on floor", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindPositionsOnFloor(); timeLastQuery = DateTime.MinValue; }); AddButton("Large positions on floor", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindLargestPositionsOnFloor(); timeLastQuery = DateTime.MinValue; }); AddButton("Place objects positions", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindPositionsPlaceable(); timeLastQuery = DateTime.MinValue; }); - + AddButton("Large positions sittable", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindLargePositionsSittable(); timeLastQuery = DateTime.MinValue; }); // Shape queries ButtonPanels[(int)Panels.Shapes].Button.GetComponentInChildren().text = "Shape Queries"; From c975eb7b7b5495085aabb7fd94e82c63c7ebd71c Mon Sep 17 00:00:00 2001 From: Kurtis Date: Wed, 7 Feb 2018 16:25:31 -0800 Subject: [PATCH 4/4] Removing duplicate "Large positions sittable" button --- Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs index a68f9ce86c7..7eebf7acaa4 100644 --- a/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs +++ b/Assets/HoloToolkit-Examples/SpatialUnderstanding/Scripts/UI.cs @@ -248,7 +248,6 @@ private void SetupMenus() AddButton("OnEdge NearCenter", Panels.LevelSolver, () => { LevelSolver.Instance.Query_OnEdge_NearCenter(); timeLastQuery = DateTime.MinValue; }); AddButton("OnFloor AwayFromMe", Panels.LevelSolver, () => { LevelSolver.Instance.Query_OnFloor_AwayFromMe(); timeLastQuery = DateTime.MinValue; }); AddButton("OnFloor NearMe", Panels.LevelSolver, () => { LevelSolver.Instance.Query_OnFloor_NearMe(); timeLastQuery = DateTime.MinValue; }); - AddButton("Large positions sittable", Panels.Topology, () => { SpaceVisualizer.Instance.Query_Topology_FindLargePositionsSittable(); timeLastQuery = DateTime.MinValue; }); // Default one of them active SetActiveTab(Panels.Topology);