KiwiViewer – Bringing Mobile Data Visualization to the Party

April 15, 2013

These days, everyone’s got a mobile device (or several), so why not use them for data visualization? Last month, KiwiViewer 2.0 for iOS was released in the App Store as a free download. KiwiViewer 2.0 is a major upgrade over the previous version. It ships with a newly designed user interface and heaps of exciting features (plus an Easter egg, described later in the article). Your iPad can do a lot more than Netflix and Paint My Cat, so read on…

New Features in KiwiViewer
KiwiViewer aims to make mobile data visualization as useful as it is on the desktop. Since mobile devices are largely used when you’re away from your desk, a mobile app focused on data visualization is only as good as its ability to access your data quickly and conveniently, without wires, a mouse, or a keyboard. With that in mind, KiwiViewer has been taught how to pull data from lots of new sources like Dropbox, Midas, email attachments, and iTunes file sharing. KiwiViewer can also pull data directly from network applications like ParaView, or the Point Cloud Library mobile server.

Documents from Dropbox and Midas: When you launch KiwiViewer, you will begin on the documents tab. From there you can access documents that are stored locally on the device. You can use iTunes file sharing to copy files onto your device. Files that you download will be stored here, too, so you can reopen them later. If things get cluttered, swipe left to delete a file or folder.

Nothing beats the convenience of Dropbox, so we decided to support it in KiwiViewer using the Dropbox SDK. You can link KiwiViewer with your Dropbox folder to directly access data that you have stored there. We hope you like KiwiViewer’s new download dialog, which includes a progress bar and a wonderfully-convenient cancel button.

KiwiViewer’s new integration with Midas offers convenient ways to organize and share your data with multiple people from desktops and mobile devices. Midas is a data storage service designed for open-data sharing in the scientific and medical communities. With Midas, you can store data in personal folders, or in shared communities. KiwiViewer features a Midas browser that enables you navigate Midas folders and download data conveniently to your device.

Object and Scene Settings: From the KiwiViewer’s main toolbar in the 3D Scene tab, you can launch the scene settings. Here you will find some basic statistics about the current scene, including the number of vertices and triangles, the app’s memory usage, and the average rendered frames per second. You can tap the OpenGL Info button to see information about your device’s OpenGL capabilities.

The object settings button brings you to a panel where you can adjust settings on a per-object basis. You can adjust the visibility and opacity of an object, or toggle the display mode between surface, wireframe, surface with edges, and points. KiwiViewer features a new single-pass, smooth line wireframe shader and surface with edges shader [1]. At the cost of some additional drawing overhead, you can view your models with smooth cell edges, a very beautiful effect.

The object and scene settings also feature a new color picker that lets you apply custom colors to the models, or set a background color or color gradient. KiwiViewer also lets you set a custom background image using the scene file described later in this article.

If your data does not include per-vertex surface normals, then KiwiViewer will compute them automatically. KiwiViewer employs the VTK surface normal filter with edge splitting enabled. Edge splitting can improve the visualization of datasets with sharp edges and corners. If you want precise control over the surface normals, then you should use an external tool like ParaView to generate normals in advance, and store data in a file format that preserves normals like the vtp format.

Sample Datasets: We wanted to make it easy to demonstrate the diverse set of visualization features in KiwiViewer, so we bundled a variety of sample datasets with the app. In fact, much of the 40 MB download is allocated toward the sample datasets, but we think it’s worth it. The Can Simulation and Velodyne Lidar datasets demonstrate KiwiViewer’s ability to display file series as animations. The NLM Visible Human Project is a volume that KiwiViewer displays using the new 2D/3D image viewer, described in the next section. The SPL-PNL Brain Atlas dataset explores the anatomical structures of the human brain.

2D/3D Image Viewer: We’ve added an image viewer for viewing 3D volumes. By default, image scalars are visualized using a grayscale color map, but you can use a scene file to customize the color map. Toolbar buttons are used to view the image in 2D along the different slice axes. In 2D mode, you can pinch to zoom-in and touch to pan. While zoomed out, a touch-and-drag gesture is used to adjust the image window and level. Slide your finger along the right edge of the screen to scroll through the image slices. In 3D mode, you can touch and drag to adjust any of the three perpendicular slice planes.

 Figure 1. Sagittal slice view of a volume from the NLM Visible Human Project,
one of the sample datasets bundled with KiwiViewer.

ParaView Integration: The previous Android release of KiwiViewer introduced ParaViewWeb connectivity, and this feature is also in the new iOS release [2]. KiwiViewer connects to a ParaViewWeb session and fetches the data for local, on device rendering. The new release of KiwiViewer expands on this concept, and introduces the ParaView mobile remote control [3]. You can use your iPad or iPhone as a remote control to adjust the camera in ParaView for desktop. You enter the name or address of your desktop into KiwiViewer, and KiwiViewer will pair with your ParaView desktop application. The ParaView scene is beamed over to KiwiViewer, and KiwiViewer camera state updates are echoed back to ParaView. This remote control feature was designed for navigating a ParaView scene visualized on large tile displays, but the feature also provides a simple way to transmit ParaView data to KiwiViewer directly over the local network without using a third party server.

Figure 2. The ParaView Mobile Remote Control allows users to connect their mobile device to ParaView,
and use the mobile device to view the ParaView scene and control the ParaView camera.


Point Cloud Library: KiwiViewer now includes support for reading PCD files and also features a point cloud streaming demo. Using the mobile streaming server, part of the Point Cloud Library, you can send point cloud data from an RGB-D camera like the Kinect from your PC to KiwiViewer [4]. Later in this article we describe how to use the Point Cloud Library to develop your own mobile apps.

Scene file: One of the most powerful new features in KiwiViewer is not something you will find in the user interface, it is a scene description format that KiwiViewer knows how to read. A prior release of KiwiViewer introduced the .kiwi file format which was just a simple csv file. That has been scrapped and was replaced with a richer JSON format [5]. The format can specify scene settings like camera parameters, background color (or image), color maps; and object settings like opacity; representation modes like surface, wireframe, points, and which attribute array to color by (and which color map to use). You can list several datasets to be loaded together, or a series of files to be loaded as an animation. You can also specify a separate image file to be applied to the mesh as a texture.

We realize that nobody really wants to waste time learning about a new file format, so we made an exporter for ParaView that will bundle your data files and scene file into a zip file for KiwiViewer to read [5]. The exporter can even upload the zip to Midas or place it in your Dropbox folder. With a single click, ParaView will export and upload the scene exactly as it appears, then you can walk away from your desk and KiwiViewer will take it from there. The scene exporter is implemented as a Python script, making it easy to customize to meet your workflow needs. You can customize it to work with other applications beyond ParaView. Have your own ftp server? Then you can modify the exporter to send your data there. KiwiViewer can read from ftp servers because it uses the cURL library under the hood.

Easter Egg: Shhh, don’t tell anybody about this fun feature, certainly don’t publish the secret in the Kitware Source newsletter! To enable the Easter egg, tap seven times on the zoom to fit button. KiwiViewer will activate the device’s front-facing camera; you should snap a self-portrait while holding the camera at an arms-length and keeping your face centered in the photo. KiwiViewer will construct a one-of-a-kind 3D “bobble head” featuring your smiling face!

Android: If you visit the KiwiViewer packages page [6] you will find an Android APK installer for an experimental version of KiwiViewer v2.0 for Android. This version has many of the features of the iOS version, including ParaView mobile remote control, point cloud streaming, and custom scene files; but it hasn’t been updated with a new user interface, which limits the availability of some of the features. We hope to work on a new user interface for the Android version of KiwiViewer. If you think you might want to help contribute to this project, get in touch with us on the VES public mailing list.

KiwiViewer for Developers
In conjunction with the app store release, we have uploaded frameworks and an example Xcode project to the KiwiViewer packages page [6]. There, you will find frameworks for VTK, Kiwi, and the Point Cloud Library. This makes it easy for iOS developers to get started developing mobile visualization apps right away. The example Xcode project includes everything you need to write a modern iOS app using GLKit, storyboards, and automatic reference counting (ARC).

Developers may also want to compile the libraries from source. We hope to make KiwiViewer libraries for Android available on the packages page, but for now you will have to compile this yourself. Head to the Developer’s Guide for instruction on how to get started [7]. Kiwi uses a CMake superbuild to compile all of the library dependencies, which are Eigen and VTK. You can use the PCL superbuild to compile PCL for iOS and Android, too; information about that is online [8].


Pat Marion is an R&D Engineer currently working on the Scientific Visualization team at Kitware’s North Carolina office. He is leading the development of the Kiwi and VES libraries.




Did You Know…?

Kitware maintains a Vimeo library of our recent webinars and videos on Vimeo.  There you can find videos relating to specific project releases, fun adaptations that you can do with our various products, and full versions of our training courses.

Visit to see what topics are available. Videos related to this article include:

KiwiViewer 2.0 Release: This 20-minute release webinar highlights the new functionalities of KiwiViewer 2.0, and includes a demo.
KiwiViewer – ParaView Mobile Remote Control: This video demonstrates the ParaView remote control plugin, which is bundled with ParaView.



2 comments to KiwiViewer – Bringing Mobile Data Visualization to the Party

  1. Hi,
    I want to integrate the kiwiviewer with my ios application in objective C. But I cannot find any documentation or tutorial how to do it. Can you point me in the right direction?My email

  2. I am glad you can tell me the way to set the object names, instead of “Object 1”, “Object 2”, and so on, if any.

Leave a Reply