OculusForJavaTechnology_Whitepaper

  • Upload
    rghr

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    1/13

    Oculus for Java Technology for Cross -Platform Data Visualization Solutions

    Technical Whitepaper

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    2/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 2

    Introduction Oculus ( www.oculusinfo.com ) is the leadingprovider of innovative business visualizationsoftware and professional services for Fortune500 companies and third-party softwareproviders. Our innovative, multi-dimensional,interactive user interfaces enable our clientbase to achieve far more comprehension andmore rapid understanding of their complexdata.

    The principals at Oculus have a long anddistinguished history of designing anddeveloping high value, business visualizationsolutions. In addition to providing tailoredconsulting services to our clients, Oculus haspersistently sought out new opportunities to

    develop our own software toolkits to helpfacilitate custom business data visualizationsolutions where existing solutions are simplynot enough.

    Oculus for Java Technology, is a provensoftware toolkit for business data visualization.With Oculus for Java Technology, fullyinteractive 3D visualizations can be delivered toWindows, Mac, Linux, Android and Blackberrydevices. Oculus for Java Technology can beused to create visualizations ranging from tinyhighly interactive visualizations for mobiledevices to rich visualizations of complex datafor analysis and exploration on across manyscreens or massive video walls. Oculus for JavaTechnology provides a wealth of features andvisualization techniques for making effectiveinformation visualizations as outlined in thispaper.

    Figure 1: Financialfirms use Oculus forJava Technology forreal-time marketdata. Mobilevisualizationprovides the quick

    at -a- glancecomprehensionneeded when on themove.

    Figure 2: Large scale visualizations, e.g. forcommand and control, or for strategy planning, useOculus for Java to provide the big picture overviewand all the details.

    Figure 3: Oculus for

    Java Technology isused for NetworkSecurity: largeamounts of intrusionevents can bevisually depictedand exploredproviding insightinto anomalies andcauses aroundsecurity incidents.

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    3/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 3

    Oculus for Java Technology The Oculus for Java Technology softwaretoolkit (SDK) is a cross-platform 2D and 3Dvisualization platform offering deploymentoptions from smart phones, to lightweight webapplets, to desktop applications, to fullyimmersive environments and site installations.Unlike other libraries, Oculus for Java scales allthe way down to mobile devices or web pageswithout hardware graphics support, or all theway up to a distributed cluster-renderedimmersive environment, all with a single API.

    The Oculus for Java architecture is adaptiveand opportunistic, taking advantage ofcapabilities of the platform discovered at run-time. Run time graphics acceleration isavailable on Windows, Mac OS X, Linux,

    Android and select Blackberry devices. Whenhardware assisted graphics acceleration isunavailable, Oculus for Java Technology usesits optimized pure Java software renderer,eliminating the glitches that can occur whenencountering poor graphics drivers in adeployed environment.

    Figure 4: Simple visualization integrating apopulation density map with major urban centers.

    Animation, layered visuals and tooltips enable easyexploration of many variables at once.

    Technical capabilities of the Oculus for JavaTechnology library include:

    A real-time 3D rendering engine. Cross-platform portability across mobile and

    desktop devices, including support for touchand mouse interactions.

    Either pure Java, software-only rendering orhardware acceleration.

    A server-side deployment option leveragingpure Java for a robust 3D solution on

    standard servers. A large library with hundreds of Java

    classes, designed for creative applications,extensibility, power and ease of use,

    managing graphic and device complexitiesautomatically.. Advanced features such as high

    performance scene and streaming scenechange serialization, dynamic labeldeconfliction, scalable native and foreignlanguage text rendering, and automaticanimation tweening.

    Figure 5: Oculus for Java Technology architecture.

    Features

    Oculus for Java Technology contains amultitude of data-visualization-specific classesfor creating, positioning and manipulatinggraphical objects (or groups of objects) in a 3Dscene. But it is not limited to 3D. With Oculusfor Java Technology, developers can also createpure 2D or mixed 2D/3D data visualizations.

    One of the primary advantages of using thelibrary is that no low-level graphicsprogramming theory is required. Objectcreation, visual techniques, interactionhandling, scene rendering and viewernavigation are all managed by the library,providing the ability for developers to createinteractive visualization applications with

    oculus.lib.core Scene graph rendering library

    oculus.lib

    Run - Time Rendering Options

    OpenGL Hardware accelerateddownloadable plugin

    Pure Java Cross - platform,

    web applet friendly,software rendering

    isualization Solution Tailored rapid development business solution

    oculus.lib.core Scene graph rendering library

    oculus.lib Visualization library

    Oculus Extensions UI elements, GIS and advanced techniques

    Run - Time Rendering Options

    OpenGL Hardware accelerateddownloadable plugin

    Pure Java Cross - platform,

    web applet friendly,software rendering

    isualization Solution Fully interactive deployed visualizations

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    4/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 4

    significantly greater ease and speed.

    A key advantage of Oculus for Java is that asingle API can be used to develop for desktop,web and mobile platforms using a single core

    API, with only two simple class selectionsrequired to integrate the application intodifferent environments.

    Figure 6: Node and link application, illustrating therelationships between thousands of individualitems.

    Data-source NeutralOculus for Java Technology is not constrainedto a single data source. Everything from textand XML files, to Microsoft Excel spreadsheetsand any database can be accessed via standardJava data connection methods. This open dataarchitecture ensures connectivity to criticallegacy and pre-calculated data as well as real-time data feeds and allows for tight integrationdirectly into pre-existing Java applications.

    Viewer At the center of the Oculus for Java Technology API is the Viewer class, which is the root clientdescription of all aspects of the scene to berendered. The viewer treats devices andinteractions abstractly, providing a singleconsistent interface for drawing and interactingwith the scene.The Viewer manages high performance updateand rendering processes that efficiently updateonly those parts of the scene that needupdating and redraw the scene only whenneeded. Multi-threading is used to takeadvantage of multi-core processors. Within theviewer:

    Vizlet : is responsible for the abstracting thedevice specific application runtime context,including life cycle, resource, and licensemanagement as well as access to the deviceevent queue.

    Canvas : abstracts the device specificsurface (window, image or texture) beingdrawn to.

    Viewer : is responsible for coordinating userupdates to the scene and viewpoints withrendering to a canvas.

    Renderer : is responsible for drawing thescene onto the canvas. Renderers include anOculus Pure Software renderer, as well asOpenGL and OpenGL ES renderers for both

    Android and Blackberry. Unless specified bythe client, a Renderer is selectedautomatically for a device based on anevaluation of the context at runtime.

    Figure 7: Viewer classes abstract devices,interaction and rendering technologies so that thedeveloper only needs to manage the scene.

    Viewer InteractionThe viewer has built-in and transparentnavigation controls that permit simplified andintuitive interaction with the scene, includingpanning, zooming and rotating. By clicking anddragging on the scene, for example, the usercan manipulate the viewpoint to highlight andview any position for visual drilldown andanalysis. Viewer navigation can also becontrolled via Viewpoint objects, allowing thedeveloper to programmatically set up their owncustom viewpoints.

    ShapesOculus for Java Technology supports a numberof different shape types that can be used as atemplate for single or multiple visual elements.These templates include (among others):

    Cube Line Sphere

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    5/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 5

    Cone Text Quad Polygon Cylinder Point

    Arrow Screen Sprite Scene Text (for in-scene 3D text) Screen Text (for 2D overlay text) Face (for surfaces) Glyph (for arbitrary shapes)

    Conversion from Java2D Shapes is alsosupported.

    Visuals Visuals are abstract representations of graphicobjects in the class library. Since any Shapecan be applied to a visual, changing itsappearance simply involves applying a differentShape to the instance. To accommodatemultiple instances of a graphical object, thelibrary has VisualSet and VisualSet2D classes that simplify and optimize the creationof multiple instances of a similar shape.

    Figure 7: A VisualSet2D (4 x4 elements) set tovarious Shapes, each set to the same height andcolor values.

    Visual layouts A Visual represents one or more instances of asimilar piece of geometry, arranged accordingto a user-specified layout. There are two layoutmanager classes in the class library to helpmanage regularly structured placement ofgraphical objects:

    Row layout - for incrementally placinggeometry along a single dimension e.g. onerow of bars.

    Grid layout - for row and column

    placement, e.g. as in a table or bar chart. Additionally, a visual object can be placed

    arbitrarily anywhere in 3D space if managedlayout is not required, e.g as in a networkdiagram or on a map.

    Figure 8. A grid based layout is used in thisnovel credit risk visualization showing creditquality in stepped pyramids.

    GroupsMultiple graphic objects can be placed in aGroup container. This is a non-visible scenecomponent that can contain multiple scenecomponents. This facilitates object orientedvisual design, by enabling all the sub-components of a complex object to bemanaged as a single entity. For example, thedeveloper can create a ColorBarGro up objectthat contains all the visual elements andinteractions that are necessary to display a bargraph (title, axis labels, bar height, bar color,

    grid lines, border, etc.) All items containedwithin a group are translated, rotated andscaled according to the containing group.

    Figure 9: All the elements on each plane have beengrouped together into a common class; helping withboth clarity of the visualization and simplifiedmanagement of the 3D scene.

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    6/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 6

    Text, Labels and AnnotationsWhile many 3D environments (e.g. games) donot require high quality text, it is criticallyimportant in visualizations for labeling andannotations. Text support includes access to allsystem typefaces (at all sizes and styles) and

    also has full Unicode support for extendedcharacters and bi-directional foreign text, suchas Hebrew or Arabic. True Type fonts may beembedded and deployed with an application,removing the necessity for the font to be pre-installed on a system.

    Figure 10: Supports Unicode and bi-directional text.

    Text placement includes various layout options: In-Scene placement: e.g. oriented in the

    3D scene so that there is an unambiguousalignment between the text and associatedshapes.

    In-Screen placement: e.g. displayed head-on but anchored in the 3D scene, effectivefor annotations.

    Overlay placement: e.g. displayed head-onin a consistent 2D locations, effective forlegends and filters. Use the Underlay forlarge titles and watermarks.

    Figure 11: Supports text aligned to 3D scene or frontfacing.

    Classes are provided for adaptive label

    placement in complex scenes, such that labelsmaintain readability, are clearly associated withits corresponding shape, and do not overlap.

    Lighting and Materials

    In 3D scenes, it is important to get the rightlighting and look. Oculus for Java Technologyprovides a quick high-level interface for settingup lights and materials.The interface provides directional lights atvarious orientations and intensities andmaterials, which are properties of surfaces thatcan make them appear to be solid, metallic, ortranslucent. It also provides high-level controlfor features such as fog/fade; clipping planesand bold silhouettes.

    Figure 12: Bold silhouettes around the outside of theboxes, but not between them, visually pop them outfrom the background.

    TexturesTextures provide the ability to use images inthe scene; for example, as underlying maps,floor-plans or diagrams. The library supportstextures in all java supported image formatsincluding JPEG, GIF, PNG and more. Texturescan be stored and additionally manipulated inmemory, for example, image processed tolighten or darken or combine multiple imagestogether. A viewer may be configured to renderto a texture displayed in another viewer withone call, in order to paint inks on a terrain, forinstance.

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    7/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 7

    Figure 13: Maps and terrain provide context in thispipeline network. End-user mark-up has beenconverted into another texture, overlaid on the first.

    Animation An easy-to-use animation framework providesanimated transitions between geometry states.

    Animated changes in geometry provide the userwith a transition that draws attention to what ischanging without the abrupt loss of context

    that occurs when changes are immediate. Animations can be triggered simply byproviding the viewer with a time range totween the geometry changes, e.g. over thenext second; or full keyframe based animationscan be set up for specific scene elements.

    Interaction EventsUsing Oculus for Java Technology, graphics canrespond to user events (tap, hover, double-tap,drag, pinch, etc.) for interactions such asfiltering, navigation and selection. This makes

    any object in the scene available for use as acontroller for other objects or as a trigger forevents and interaction. For example, clicking ona label could be used as a drilldown to filter outonly data related to items similar to that classof items.

    Data-rich TooltipsTooltips are 2D graphics that are presented inthe overlay (on top of the 3D scene), typicallywhen the user hovers the mouse or taps on apiece of geometry. These can be very effectivefor presenting additional drill-down details ongraphical representations of data.

    Figure 14: Data rich tooltips, displayed with thesame color-coding as the data objects.

    Screen SpritesOculus for Java supports screen sprites, thatdraw an image as an icon at a location in the3d scene very similar to how screen text isdrawn flat to the screen and at a constant size.These can be used for highly scalable pointclouds, or to help visualize complex elements asan icon.

    High Resolution OutputOutput capabilities have been implemented tofacilitate generating snapshots of the scene asan image, which in turn could be embeddedinto another document (e.g. PDF) or sent to theprinter. By using a tiled multi-pass renderingstrategy under the hood, output can begenerated by the library at a much higherresolution than the current screen display.

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    8/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 8

    Extension Libraries

    2D Cross-Platform UI Widget LibraryCreating cross-platform applications typicallyrequire the developer to port traditionalinterface items such as labels, buttons, sliderbars to the native UI library for eachplatform. Oculus provides a touch-friendlycross-platform user interface toolkit, similar towhat one might find on a smart phone. It isdesigned to work in the Overlay layer andfacilitate a write once development of UI layercomponents for cross-platform deployment.

    Skins are supported for customizing the sizeand appearance of widgets for various devicesand contexts. A client may choose from apredefined skin, or define and supply their own

    using only xml configuration and a few imageresources (no code required).

    Multi-screen and Stereo DisplaysWhile a single desktop computer can support 4or even 8 monitors, there are situationsrequiring more screens (e.g. video walls,megapixel walls) and/or coordination ofmultiple angled screens (e.g. immersiveenvironments such as a CAVE) that requirecoordination of multiple computers allinteracting with the same 3D scene. Oculus for

    Java Technology provides an extension librarythat coordinates real-time distributed renderingacross any number of networked computers,using Oculus serialization and asymmetricfrustum capabilities coupled with a multicastscene update architecture.

    Figure 15: Multiple screens, whether flat or angled,can be configured into a single seamless 3D viewingenvironment. Oculus for Java automatically sets upthe asymmetric viewing frustrums, synchronizesscenes, and coordinates all interactions across allcomputers.

    Figure 16: Two projectors each provide half of thescene: Oculus for Java Technology adjusts theperspective properly to make a singular scene.

    The end-user sees and interacts with singlecontinuous scene. The API allows the developerto provide dynamic updates to each of thescreen locations (and gaps if any), dynamicviewpoints (e.g. head tracking, game devices)and stereoscopic rendering (i.e. support for 3Dglasses).

    Figure 17: A single tablet visualization could beexpanded across multiple tablets in a collaborativeapplication.

    In addition to display walls of any size, andstereoscopic immersive environments, multiplemobile devices can also be coordinated into asingle view.

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    9/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 9

    Visualization Techniques LibraryOculus provides a number of visualizationtechniques, such as simple charts, maps andhierarchies, which can be adapted, modifiedand integrated into a project with the VizKitlibrary.

    Figure 18: Sample techniques.

    GIS Toolkit Library As a separately licensed add-on, Oculusprovides a GIS toolkit, specifically optimized for

    mobile use.

    Figure 19: GIS Toolkit provides mappingfunctionality embedding and calibrating into scenes.

    Cross - Platform Deployment Oculus for Java supports deployment to mobiledevices with Android or Java ME, extending thesame powerful cross-platform desktopcapabilities to handheld devices using a single

    API. 32 and 64 bit Variants of Windows, Linux,and Mac OS X are also supported.

    AndroidDeployment to Google's Android mobile deviceplatform is supported, with OpenGL ES basedgraphics acceleration.

    BlackberryGraphics acceleration for Blackberry isprovided, for those Blackberry devices thatsupport OpenGL ES.

    Java ME

    Deployment to base level Java ME is supportedfor older mobile and Blackberry devices,without requirements for specialized and rareJSR's.

    Windows, Mac OS X, LinuxSupport for desktop includes 32 or 64 bitOpenGL based rendering for Windows, Mac OSX and Linux, in addition to Oculus Software 3Drendering. The library selects and loads theappropriate platform specific classes and nativesupport automatically at runtime, meaning thesame application bundle may be shipped for alldesktop variants, simplifying deployment.

    Figure 20: The same visualization as an Androidapplication on Motorola Droid and as an applet inMozilla browser on Red Hat Linux.

    100% Pure Java All functionality in Oculus for Java Technologytoolkit is available in 100% pure Java. Pure

    java provides the maximum potential for cross-platform portability. Oculus for Java Technologyhas been used by customers in cross platformenvironments with no modifications. Oculus for

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    10/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 10

    Java Technology has been architected for highperformance, even when running in pure javamode.

    Hardware Acceleration

    Most users wish to take full advantage ofaccelerated video cards to take advantage ofthe best performance available. Oculus for JavaTechnology provides acceleration extensions forMicrosoft Windows, Linux, Mac and Androidthat will create a seamless bridge to anyOpenGL accelerated video graphics at runtime,where available . And because its seamless,the developer of the applet or applicationdoesnt need to write any special code forhardware acceleration. Oculus for JavaTechnology does it for you.

    Optimization and PerformanceThe desire to push the limits of scenecomplexity within the tight restrictions ofmobile devices has prompted a concerted effortto improve library performance even further. Inaddition the multiple paths required forrendering to different devices, other forks havebeen added to take advantage of advancedgraphics card capabilities at runtime ifdiscovered. The multi-threaded architecture hasalso been further tuned for fast setup oftextures and geometry for OpenGL ES as wellas traditional OpenGL.

    Figure 21: This stock market visualization updatesat sub-second intervals on a Motorola Droid -handling hundreds of events per second.

    Small FootprintThe need to have quick downloads andminimize the use of limited device memory hasresulted in a small memory footprint. The coreOculus for Java Technology library is under 1Mb, and visualizations can be developed thatare as small as a 400kb jar file.

    2D Cross-Platform UI Widget Library As introduced in sections above, Oculusprovides a touch-friendly cross-platform userinterface toolkit designed to work in theOverlay layer and facilitate a write oncedevelopment of UI layer components for cross-

    platform deployment.

    DeploymentOculus for Java Visualizations can be deployedin various scenarios, including:

    Java Applications : are effective for largescale desktop applications or stand-alonemobile apps. All the visualization softwareruns on the client device.

    Java Applets : access is as simple asviewing a web page.

    Zero Client : The visualizations can resideserver side as a service that generatesstatic images (e.g. PNG files), forconsumption by reports (e.g. PDF) or fordynamic composition into web pages thatutilize JavaScript to allow for interactionssuch as clicking for selection, filtering anddrill-down.

    Note that it may be desirable to create anOculus for Java Technology visualization whichis deployed using more than one of the abovestrategies, such as a trade tracking visualizationused as an applet for a wide audience and used

    as an application for an internal fraud analysisgroup.

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    11/13

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    12/13

  • 8/9/2019 OculusForJavaTechnology_Whitepaper

    13/13

    2003-2011 Oculus Info Inc. www.oculusinfo.com Page 13

    Contacts

    For more information on Oculus for Java Technology and other Oculus 3D visualization developmenttoolkits, and our visualization services, please email us at [email protected] or contact:

    Richard BrathPartner and Sr. Director Business DevelopmentTelephone: (416) 203-3003, ext. 242richard.brath@@oculusinfo.com

    William WrightSr. Partner and PresidentTelephone: (416) 203-3003, ext. [email protected]

    Office Location

    Oculus Info Inc.2 Berkeley Street, Suite 600Toronto, Ontario M5A 4J5

    Telephone: (416) 203-3003Facsimile: (416) 203-0646

    www.oculusinfo.com

    Legal Notice: Any redistribution or reproduction of any materials or information contained herein is strictly prohibited.This publication and the information may be used solely for personal, informational, non-commercialpurposes, and may not be modified or altered in any way. Recipient may not remove any copyright orother proprietary notices contained in the documents and information. Throughout this paper,trademarked names are used. Rather than put a trademark symbol in every occurrence of atrademarked name, we state that we are using the names only in an editorial fashion and to the benefitof the trademark owner with no intention of infringement of the trademark.

    Java is a registered trademark of Oracle Inc. Oculus for Java Technology is a trademark of Oculus InfoInc. Other company names, brand names or product names mentioned herein may be trademarksand/or registered trademarks of their respective owners and companies.

    mailto:[email protected]:[email protected]:[email protected]://www.oculusinfo.com/http://www.oculusinfo.com/http://www.oculusinfo.com/mailto:[email protected]