Shows how to select (pick) 3d objects using the mouse via Axis Aligned Bounding Boxes (AABB).
Beware that AABB's often represent quite a rough fit and therefore is best used as a quick way to determine if there might be a collision and then utilize a more precise calculation to verify it.
The sample has a first person camera so use 'wasd' to move around and hold 'right mouse button' to look around.
The app can be controlled using:
Key | Result |
---|---|
O | Toggle draw oriented bounding boxes on/off |
B | Toggle draw axis aligned bounding boxes on/off |
N | Toggle draw new plane cross on/off |
F | Toggle draw far plane cross on/off |
Command line arguments':
Argument | Description | Source |
---|---|---|
--AABB <arg> | Draw the Axis Aligned Bounding Boxes on/off | Demo |
--FarPlaneMouse <arg> | Draw the far plane mouse intersection on/off | Demo |
--NearPlaneMouse <arg> | Draw the near plane mouse intersection on/off | Demo |
--OBB <arg> | Draw the Oriented Bounding Boxes on/off | Demo |
--Objects <arg> | Specify the number of objects to generate | Demo |
--RandomSeed | Use a random seed for the scene generation instead of a fixed one | Demo |
--ActualDpi <arg> | ActualDpi [x,y] Override the actual dpi reported by the native window | DemoHost |
--DensityDpi <arg> | DensityDpi <number> Override the density dpi reported by the native window | DemoHost |
--DisplayId <arg> | DisplayId <number> | DemoHost |
--LogExtensions | Output the extensions to the log | DemoHost |
--LogLayers | Output the layers to the log | DemoHost |
--LogSurfaceFormats | Output the supported surface formats to the log | DemoHost |
--VkApiDump | Enable the VK_LAYER_LUNARG_api_dump layer. | DemoHost |
--VkPhysicalDevice <arg> | Set the physical device index. | DemoHost |
--VkPresentMode <arg> | Override the present mode with the supplied value. Known values: VK_PRESENT_MODE_IMMEDIATE_KHR (0), VK_PRESENT_MODE_MAILBOX_KHR (1), VK_PRESENT_MODE_FIFO_KHR (2), VK_PRESENT_MODE_FIFO_RELAXED_KHR (3), VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR (1000111000), VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR (1000111001) | DemoHost |
--VkScreenshot <arg> | Enable/disable screenshot support (defaults to enabled) | DemoHost |
--VkValidate <arg> | Enable/disable the VK_LAYER_LUNARG_standard_validation layer. | DemoHost |
--Window <arg> | Window mode [left,top,width,height] | DemoHost |
--AppFirewall | Enable the app firewall, reporting crashes on-screen instead of exiting | DemoHostManager |
--ContentMonitor | Monitor the Content directory for changes and restart the app on changes.WARNING: Might not work on all platforms and it might impact app performance (experimental) | DemoHostManager |
--ExitAfterDuration <arg> | Exit after the given duration has passed. The value can be specified in seconds or milliseconds. For example 10s or 10ms. | DemoHostManager |
--ExitAfterFrame <arg> | Exit after the given number of frames has been rendered | DemoHostManager |
--ForceUpdateTime <arg> | Force the update time to be the given value in microseconds (can be useful when taking a lot of screen-shots). If 0 this option is disabled | DemoHostManager |
--LogStats | Log basic rendering stats (this is equal to setting LogStatsMode to latest) | DemoHostManager |
--LogStatsMode <arg> | Set the log stats mode, more advanced version of LogStats. Can be disabled, latest, average | DemoHostManager |
--ScreenshotFormat <arg> | Chose the format for the screenshot: bmp, jpg, png (default), tga | DemoHostManager |
--ScreenshotFrequency <arg> | Create a screenshot at the given frame frequency | DemoHostManager |
--ScreenshotNamePrefix <arg> | Chose the screenshot name prefix (defaults to 'Screenshot') | DemoHostManager |
--ScreenshotNameScheme <arg> | Chose the screenshot name scheme: frame (default), sequence, exact. | DemoHostManager |
--Stats | Display basic frame profiling stats | DemoHostManager |
--StatsFlags <arg> | Select the stats to be displayed/logged. Defaults to frame|cpu. Can be 'frame', 'cpu' or any combination | DemoHostManager |
--Version | Print version information | DemoHostManager |
--Graphics.Profile | Enable graphics service stats | GraphicsService |
--Profiler.AverageEntries <arg> | The number of frames used to calculate the average frame-time. Defaults to: 60 | ProfilerService |
--ghelp <arg> | Display option groups: all, demo or host | base |
-h, --help | Display options | base |
-v, --verbose | Enable verbose output | base |