s3402: mobile apps with ves kitware, inc. - nvidiaon-demand.gputechconf.com › ... ›...

25
S3402: Mobile Apps with VES Kitware, Inc. 1 Tuesday, March 19, 13

Upload: others

Post on 24-Jun-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

S3402: Mobile Apps with VESKitware, Inc.

1Tuesday, March 19, 13

Page 2: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Outline Motivation and Inspiration

Demonstration

Capabilities

– Scene graph

– Application support

– Client/server communication

– Build system

Holes

2Tuesday, March 19, 13

Page 3: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Motivation and Inspiration Enable scientific visualization with access to

— remote: data, rendering, and collaborators

—novel modes of interaction

Efficient and flexible data structure for rendering

Comprehensive asset management; not just geometry but everything to describe application data & rendering pipeline

3Tuesday, March 19, 13

Page 4: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Apps & Platforms We develop applications for clients but open-

source the framework and an example app— Kiwi Viewer

— Visible Patient (http://www.visiblepatient.eu/)

— Others

Platforms— Android, iOS

— QNX, Meego

OpenGL ES 1.0, 2.0, and Desktop OpenGL

4Tuesday, March 19, 13

Page 5: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Live Demonstration Point Cloud Library streaming from Kinect to iPad

5Tuesday, March 19, 13

Page 6: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Video Demo (Time series animation)

6Tuesday, March 19, 13

Page 7: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Library Architecture

7Tuesday, March 19, 13

Page 8: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

VES (Scene graph) Lightweight scene graph; few classes, simple

API, minimal management vesObjects managed by shared_ptr<> Nodes provide means to define spatial and

logical relationship between scene entities A node can only have one parent but many

children (this uniquely defines its position in the graph)

8Tuesday, March 19, 13

Page 9: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

VES (Scene graph) vesActor is a special node to which

rendering assets are attached (e.g., holds geometric primitives)

vesCamera is a node that provides model and projection transforms & a viewport to the underlying scene

A scene can contain multiple cameras which enables applications to perform rendering operations such as multi-pass rendering

9Tuesday, March 19, 13

Page 10: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

VES (Scene graph) Visitors traverse arbitrary subgraphs for

rendering (used by vesRenderer)

State is managed, but not tracked or optimized.

Three-pass rendering: update, cull, & draw

10Tuesday, March 19, 13

Page 11: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

VES (Scene graph) Each vesNode has a vesMaterial with multiple

vesMaterialAttributes (textures, shader, ...)

Custom or VES-provided shaders (Gouraud, Blinn-Phong, toon).

Shader uniforms bound via vesUniform.

Engine uniforms provide useful data to the shaders such as point size, line width, etc.

Consistent & simple API for vertex attributes

11Tuesday, March 19, 13

Page 12: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

VES (Geometry data) Support for interleaved or separated arrays

Point data may have any dimension (limited only by rendering API)

Point data (vertex attributes) only; OpenGL/ES 2 does not allow cell data.

Support for different basic types for the point data (int, float, short, etc..)

12Tuesday, March 19, 13

Page 13: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Kiwi (Application support)

— Abstract platform APIs (e.g. multitouch gestures)

— Provides widgets, pre-packaged subgraphs for rendering data, bridge to VTK

— Provides application framework and non-visual support functions (server communication)

— On demand or continuous rendering

13Tuesday, March 19, 13

Page 14: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Kiwi (Application support)

—vesKiwiDataRepresentation bundles geometry, per-primitive data, transform, shaders;

—vesKiwiWidgetRepresentation allows representations to consume touch events based on context

14Tuesday, March 19, 13

Page 15: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Video Demo (Picking your brain)Data credit: SPL/PNL Brain Atlashttp://www.spl.harvard.edu/publications/item/view/1265

15Tuesday, March 19, 13

Page 16: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Kiwi (Application support)

Client/server (MIDAS, DropBox, PCL, ParaViewWeb)

– “Passive” remote data access via MIDAS or DropBox; zip archives with simple JSON manifest.

– Streaming data from the Point Cloud Library

– Geometry and/or images from visualization server (ParaViewWeb)

16Tuesday, March 19, 13

Page 17: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Video Demo (ParaView Remote Control)

17Tuesday, March 19, 13

Page 18: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Build System CMake-based “superbuild” for libraries;

system tools (e.g. Xcode, ant) for apps.

Build source and all dependencies targeting each of:

– host,– device, &– simulator

Allows unit/regression tests on host.

Android, iOS, etc. share all but platform-specific UI code.

18Tuesday, March 19, 13

Page 19: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Performance

Measurements made on iPad3

19Tuesday, March 19, 13

Page 20: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Holes Better configuration/customization of widgets in the scene

More widgets

Text rendering

20Tuesday, March 19, 13

Page 21: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Wiki http://www.vtk.org/Wiki/VES

Mailing lists http://public.kitware.com/cgi-bin/mailman/listinfo/ves

Doxygen documentation http://public.kitware.com/ves-docs

Nightly testing http://open.cdash.org/index.php?project=VES

21Tuesday, March 19, 13

Page 22: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

22Tuesday, March 19, 13

Page 23: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Demonstration

23Tuesday, March 19, 13

Page 24: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

Demonstration

23Tuesday, March 19, 13

Page 25: S3402: Mobile Apps with VES Kitware, Inc. - NVIDIAon-demand.gputechconf.com › ... › S3402-Mobile-Apps-With-VES.pdf · 2013-03-21 · system tools (e.g. Xcode, ant) for apps. Build

24Tuesday, March 19, 13