The Viro Developer Hub

Welcome to the Viro developer hub. You'll find comprehensive guides and sample code to help you start working with Viro as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started

ViroCore v1.17.0
Latest release

Open Source release10/16/2019

Downloads

virocore-release-v_1_17_0.aar

New Features and Improvements

  • Viro has been open sourced! The source code is available on our Github.
  • API keys are no longer required or checked

Bug Fixes

  • Fixed glSurfaceBinder log spam
  • Fixed potential NPEs when using React Navigation drawer
  • Added more tracking failure reasons

Upgrade instructions

To upgrade from ViroCore 1.16.0, simply download the new ViroCore AAR and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

To upgrade from ViroCore 1.15.0 or earlier, you must also update ARCore. Download ARCore 1.10.0 here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.16.0

Morph animations, bug fixes and more!8/6/2019

Downloads

virocore-release-v_1_16_0.aar

New Features and Improvements

  • Support for morph target animations in GLTF Models
  • Exposed TrackingMethod property on ARAnchors
  • API for retrieving local bounding boxes on Nodes

Bug Fixes

  • Fixed GLTF animation issues
  • Fixed incorrect transformation computation on ViroNode‚Äôs bounding boxes
  • Fixed inaccurate hit-tests on billboarded nodes
  • Fixed incorrect issue where particle color modifiers were incorrectly applied

Upgrade instructions

To upgrade from ViroCore 1.15.0 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.
  2. Then update to ARCore 1.10.0 by downloading the library here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.15.0

ARCore 1.10 support & bug fixes.7/16/2019

Downloads

virocore-release-v_1_15_0.aar

New Features and Improvements

  • ARCore 1.10 support!
  • Upgraded to use Android X Support library.
  • Bug fixes, listed below.

Bug Fixes

  • Fixes for GLTF Memory consumption issue (Github Issue #289)
  • Fix for GLB model textures turning completely black(Github Issue #288)
  • Fix for glTF roughnessFactor/metallicFactor ignored when a metallicRoughnessTexture is used(Github Issue #623)
  • Misc memory leaks, Android lifecycle and crash bugs fixed.

Upgrade instructions

To upgrade from ViroCore 1.14.0 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.
  2. Then update to ARCore 1.10.0 by downloading the library here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.14.0

ARCore 1.7 support & bug fixes.04/10/2019

Downloads

virocore-release-v_1_14_0.aar

New Features and Improvements

  • ARCore 1.7 support!
  • Bug fixes, listed below

Bug Fixes

Upgrade instructions

To upgrade from ViroCore 1.13.0 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.
  2. Then update to ARCore 1.7.0 by downloading the library here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.13.0

Variable speed animations, support Android API 28 by default, updated GVR1/10/2019

Downloads

virocore-release-v_1_13_0.aar

New Features and Improvements

  • Support for Android Target API level 28. Tested for Target API levels 26 - 28. We support Target API level 28 by default. If you are targeting 26 or 27 instead, see the note below for guidance.
  • Updated GVR SDK to v1.18.
  • Create variable speed animations with setAnimationSpeed and setAnimationTimeOffset. These also enabling freezing an animation at a specific frame.

Upgrade instructions

To upgrade from ViroCore 1.12.0 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.
  2. Update to GVR 1.18, which can be downloaded here. Place the new file under your gvr-common directory and modify the 'gvr_common/build.gradle' to point to the new file.

Note: Instructions for updating Android project to Target API level 28.

The following steps are needed to update your Android project to Target API Level 28. This is required as of November 2018: Google Play Store no longer accepts APKs built using any Target older than 26.

The instructions below are for Target 28. If due to other dependency issues you prefer Target 26 or 27 to Target 28, simply replace the Gradle version numbers below to what works best for your project setup.

  1. Open android/build.gradle file.
    • If not already present, add google() under buildscript -> repositories and allprojects -> repositories sections.
    • Under buildscript -> dependencies, change gradle classpath to classpath 'com.android.tools.build:gradle:3.2.1'
  2. Open android/gradle/wrapper/gradle-wrapper.properties and update distributionUrl to distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
  3. Open android/app/build.gradle and make the following changes
    • Update compileSdkVersion to compileSdkVersion 28
    • Update buildToolsVersion to buildToolsVersion '28.0.3'
    • Add flavorDimensions "platform" under buildToolsVersion, if not already present.
    • In the defaultConfig section, update targetSdkVersion to targetSdkVersion 28.
    • In the dependencies section, update compile 'com.android.support:appcompat-v7:25.0.0' to implementation 'com.android.support:appcompat-v7:28.0.0'
    • (Needed only if you are updating to target 28. Not needed for targets 26 or 27) Update our AWS dependencies (needed for key validation) to the following
        implementation 'com.amazonaws:aws-android-sdk-core:2.7.7'
        implementation 'com.amazonaws:aws-android-sdk-ddb:2.7.7'
        implementation 'com.amazonaws:aws-android-sdk-ddb-mapper:2.7.7'
        implementation 'com.amazonaws:aws-android-sdk-cognito:2.7.7'
        implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.7.7'
      
    • Finally, if not already, change all compile tags in dependencies section to implementation.

That's it! Sync your Android Project once these changes are done and start building.


ViroCore v1.12.0

ARCore 1.5 support, new Hit test API, and more!11/15/2018

Downloads

virocore-release-v_1_12_0.aar

New Features and Improvements

  • ARCore 1.5 support!
  • Support for enabling/disabling multisampling as an option. Disabled by default.
  • New hit-test API for geometry and bounding boxes in the Scene
  • New isARSupportedOnDevice() api to check device compatibility for ARCore
  • Added unproject/project methods for Camera intrinsics

Bug Fixes

Upgrade instructions

To upgrade from ViroCore 1.11.0 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.
  2. Then update to ARCore 1.5.0 by downloading the library here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.11.0

Custom geometry and various bug fixes9/18/2018

Downloads

virocore-release-v_1_11_0.aar

New Features and Improvements

Bug Fixes

  • Fixed several bugs related to Polylines including polyline distortion and lighting (Github Issue #179)
  • Fixed bugs related to rendering of transparent GIFs (Github Issue #409)

Upgrade instructions

To upgrade from ViroCore 1.10.0:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

To upgrade from version < 1.10.0:

  1. First do step #1 above. Then update to ARCore 1.4.0 by downloading the library here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.10.0

Added support for Animated Gifs's, Augmented Image Database, ARCore 1.4 and more!8/28/2018

Downloads

virocore-release-v_1_10_0.aar

New Features and Improvements

  • Added support for adding Animated Gif's to a scene!
  • Added support for Augmented Image Database for image targets.
  • ARCore 1.4.0 integration.

Bug Fixes

  • Fixed isPlaying() bug for VideoTexture. Method now works as documented.

Upgrade instructions

To upgrade from ViroCore 1.9.0 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

  2. Update to ARCore 1.4.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.9.0
Bug fixes related to animation and model loading.8/6/2018

Downloads

virocore-release-v_1_9_0.aar

New Features and Improvements

Bug Fixes

  • Stability improvements
  • Fixed error where screenshots appeared black on some devices

Upgrade instructions

To upgrade from ViroCore 1.8.2 or earlier:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

  2. Update to ARCore 1.3.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.8.2
Bug fixes related to animation and model loading.7/17/2018

Downloads

virocore-release-v_1_8_2.aar

Bug Fixes

  • Fixed ref overflow crash related to 3d models.
  • Fixed animation bug where animations were not starting and stopping properly.

Upgrade instructions

To upgrade from ViroCore 1.7.0 or later:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

If you are upgrading from ViroCore 1.6 or earlier, you'll also have to:

  1. Update to ARCore 1.2.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.
  2. If you are using VR, upgrade to the newer GVR library here. Place the new file in the gvr_common directory and modify your gvr_common/build.gradle to point to the file.



ViroCore v1.8.0

GLTF skeletal animation, rendering improvements, and bug fixes!7/2/2018

Downloads

virocore-release-v_1_8_0.aar

New Features and Improvements

  • GLTF skeletal animation support!
  • FrameListener for receiving per-frame callbacks
  • Sharper text rendering
  • Performance improvements and reduced frame skips when loading models
  • Added support for child node manipulation within 3D Models.

Bug Fixes

  • Corrected issues with changing chroma key filtering color
  • Fixed issue where onAnchorFound reported the wrong initial value
  • Fixed bug where camera did not always inherit from parent nodes

Breaking API Changes

  • ARPlaneAnchor.Alignment.NON_HORIZONTAL was renamed to VERTICAL

Upgrade instructions

To upgrade from ViroCore 1.7.0 or later:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

If you are upgrading from ViroCore 1.6 or earlier, you'll also have to:

  1. Update to ARCore 1.2.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.
  2. If you are using VR, upgrade to the newer GVR library here. Place the new file in the gvr_common directory and modify your gvr_common/build.gradle to point to the file.



ViroCore v1.7.2

Fixed minor bugs from 1.7.26/4/2018

Downloads

virocore-release-v_1_7_2.aar

Bug Fixes

  • Fixed transparent shadow planes being visible due to tone mapping

Upgrade instructions

To upgrade from ViroCore 1.7.0, you'll have to do the following:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.

If you are upgrading from ViroCore 1.6 or earlier, you'll also have to:

  1. Update to ARCore 1.2.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.
  2. If you are using VR, upgrade to the newer GVR library here. Place the new file in the gvr_common directory and modify your gvr_common/build.gradle to point to the file.



ViroCore v1.7.0

GLTF, ARCore 1.2, Cloud Anchors, Vertical Planes, Alpha Video, and Fewer Bugs!5/24/2018

Downloads

virocore-release-v_1_7_0.aar

New Features (from 1.6 to 1.7)

  • GLTF Model Loading
    • Support for loading GLTF models in GLTF and GLB formats.
  • ARCore 1.2 support
    • Improved image detection
    • Detect vertical planes
    • Much wider range of supported devices
  • Cloud Anchors and Manual Anchors
    • Share ARNodes with other users for multiplayer and collaborative experiences
    • Attach anchors manually to hit results and world locations
  • Alpha Video
  • And More
    • Fixed to Plane dragging: drag nodes across fixed, user-specified planes
    • Retrieve the estimated light color and intensity from the ARScene
    • HDR tone-mapping is now performed only on HDR-lit areas of the scene, providing better camera fidelity
    • Text has been sharpened

Bug Fixes

  • The model loaded callback is not invoked until all textures are loaded
  • Node position, rotation, and scale are immediately available when set
  • Video recorder no longer fails on second recording
  • Raw solid material colors are now linearized correctly
  • Texture builders properly propagate all settings
  • Mali GPU over-saturation has been fixed
  • Physics quads no longer fall through the floor

Breaking API Changes

Upgrade instructions

To upgrade from ViroCore 1.6.0, you'll have to do the following:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file. Modify your viro_core/build.gradle to point to the new file.
  2. Update to ARCore 1.2.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.
  3. If you are using VR, upgrade to the newer GVR library here. Place the new file in the gvr_common directory and modify your gvr_common/build.gradle to point to the file.



ViroCore v1.6.0

Image detection in AR and more bug fixes.4/19/2018

Downloads

viro_core-release.aar

New Features

  • Image recognition
    • Support for Image Recognition in AR. Detect image targets with image recognition. Developers can find and recognize the position of markers and images in the real-world and respond to them in their apps.
  • ARCore 1.1 support

Bug Fixes

  • Fixed: Controller events are not called back (Github Issue #74)
  • Fixed: Z-fighting issues for text at long distances
  • Fixed: Shadow planes in AR were appearing grey
  • Fixed: FBX animation memory leaks
  • Fixed: Assets with spaces now work correctly

Upgrade instructions

To upgrade from ViroCore 1.5.0, you'll have to do the following:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file.
  2. Update to ARCore 1.1.0 by downloading the file here. Place the new file in the arcore_client directory and modify your arcore_client/build.gradle to point to the new file.



ViroCore v1.5.0

Major release with a host of features requested by our customers, and bug fixes.3/29/2018

Downloads

viro_core-release.aar

New Features

  • New Trackable States for ARCore / ARKit
  • Improved Text and Fonts
    • Internationalization: support for Chinese, Japanese, and Korean characters
    • Render mixed-language text by specifying a list of font families
    • Support for more system fonts on Android, including system font groups ('monospace', 'cursive', etc.)
    • Improved font specification: choose font weight (100 to 900) and font style (italic)

  • Improved Packaging
    • Reduced SDK requirement for VR to API Level 19 (equivalent to Cardboard)
    • x86_64 architecture support on iOS
      • Enables the iOS simulator (this uses software emulated OpenGL, so it's slow!)
    • arm64-v8a architecture support on Android
  • And More!
    • Polygonal planes: render non-rectangular planes detected by ARKit and ARCore
    • Point cloud rendering: render point clouds using the new fixed particle emitter
    • Windowed (non-full) screen mode for AR view and 360 view
    • Exoplayer updated to version 2.7.1

Bug Fixes

  • Fixed: Colors were dark when recording video (Github Issue #44)
  • Fixed: Assets could not be placed in sub-folders
  • Fixed: FBX bounding box returned incorrect values (Github Issue #55)
  • Fixed: ViroViewAR would rotate when re-entering AR (Github Issue #40)
  • Fixed: Bloom caused entire AR Camera to brighten
  • Fixed: Fatal Exception: java.lang.IllegalArgumentException: millis < 0 (Github Issue #56)

Upgrade instructions

To upgrade from ViroCore 1.5.0, you'll have to do the following:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file.

Exoplayer

You may need to manually upgrade your exoplayer version to 2.7.1

ABI Splitting

Now that Viro supports multiple architectures, we highly recommend using ABI splitting to reduce your binary size!



ViroCore v1.4.1

Minor release small updates and bug fixes.3/6/2018

New Features

Bug Fixes

  • Fixed: Gamma correction is handled in software if no sRGB framebuffer can be created.
  • Fixed: Shader compilation bug on older Adreno GPU's.

Updates

  • Updated Hello World and Sample Apps.

Upgrade instructions

To upgrade from ViroCore 1.4, you'll have to do the following:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file.



ViroCore v1.4

Minor release with support for ARCore 1.0, and bug fixes.2/27/2018

New Features

Bug Fixes

  • Fixed: JNI ERROR: local reference table overflow causes 3D Model crash
  • Fixed: Native crash with very large OBJ models
  • Fixed: Performance issues when using AR on Samsung Galaxy S7

Breaking API Changes

  • ViroViewARCore.isSupported() was renamed to ViroViewARCore.isDeviceCompatible()
  • The RendererStartListener (taken as constructor parameter to each ViroView) has been replaced with View-specific StartupListener interfaces. Like the old RendererStartListener, the new StartupListeners receive a callback when initialization finishes. Additionally, StartupListeners receive a callback when View initialization fails, allowing you to respond in your application.
  • Field of view: For ViroSceneView, the default field of view has been reverted back to 90 degrees across the major axis (which is the Y axis in portrait mode, and the X axis in landscape mode). The field of view can be set, so you can change this if desired.

Upgrade instructions

To upgrade from ViroCore 1.3, you'll have to do the following:

  1. Download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file.

  2. Add <meta-data android:name="com.google.ar.core" android:value="optional" /> to your AndroidManifest.xml within the application tag

  3. Make changes required under "Breaking API Changes" above. This likely means replacing RendererStartListener with the new StartupListener.

  4. Change core-0.91 to core-1.0.0.aar in your arcore_client folder. Modify your arcore_client/build.gradle to point to the new file. You can download core-1.0.0.aar here.



ViroCore v1.3

New release with some big new features!2/13/2018

New Features

Bug Fixes

  • Fixed: Framerate drop in AR scene with large 3D models.
  • Fixed: Weak global reference crash if device was idle for extended time
  • Fixed: Black screen on Mail-T720 GPU devices (i.e. A5 2016)
  • Fixed: Crash on invalid URIs
  • Fixed: various FBX keyframe and skeletal animation bugs

Breaking API Changes

  • Spotlight: the inner angle and outer angle of spotlights have changed! Now the inner angle represents the angle from edge to edge of the fully lit cone, and the outer angle represents the angle from edge to edge of the attenuated cone.

  • Field of view: For ViroSceneView, the default field of view is now 60 degrees across the major axis (which is the Y axis in portrait mode, and the X axis in landscape mode). The field of view can now be set, so you can change this if desired.

  • ViroMediaRecorder: The name of the listeners and the signatures of the listener methods have slightly changed to accommodate saving screenshots to Bitmaps. See the Javadoc for details.

Upgrade instructions

If upgrading from ViroCore 1.1, first follow the instructions for ViroCore 1.2, then follow the instruction below.

If upgrading from ViroCore 1.2, simply download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file.


ViroCore v1.2

New release with a host of new features.1/17/2018

New Features

  • Support for ARCore Preview 2.
  • Added setCameraARHitTestListener to ViroViewARCore.
  • Enabled transparent backgrounds for ViroViewScene.
  • Enabled events for ViroSceneRenderer.

Upgrade instructions

  1. To use the latest ViroCore, download the new ViroCore AAR here, and use it to replace your existing ViroCore AAR file.

  2. Replace the build.gradle file in your arcore_client directory of your project with this build.gradle.

  3. Add core-0.91.0.aar to your arcore_client directory.

  4. Due to ARCore Preview 2 changes, you'll also need to download our new GVR library here, and replace your existing GVR SDK AAR (this should be in your project's gvr_common directory).

  5. Do this step only if you are developing for ARCore. Install Google's ARCore Preview 2 client on your device. Instructions from Google are here under 'Prepare your device'.

  6. Finally, add the following line to your app's build.gradle under defaultConfig in the android section:

    ndk {
            abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
        }
    

    Your new project should be good to go!


ViroCore v1.1

New release with size reduction, a handful of new features, and some bug fixes! 12/19/2017

Updates

The ViroCore AAR file is now just 4.2 MB.

VR underlying platform SDKs have been updated:

  • Updated Google VR (Android) to version 1.101
  • Updated Google VR (iOS) to version 1.100
  • Updated Oculus VR Mobile SDK to 1.9.0

New features

  • Add AR shadows: virtual shadows on real-world planes via the new ShadowMode Material property
  • New CameraListener for responding to camera movement
  • Linear rendering (sRGB) support on Oculus VR, for more realistic shading and lighting
  • AnimationTransaction animations can now be looped

Fixed bugs:

  • Fixed bug with reticle scaling
  • Print out native exceptions to console
  • Fix issue with collision normals in physics system
  • Fix freezing issue when loading FBX models on Oculus VR

And of course, numerous performance improvements.

Upgrade instructions

To use the latest ViroCore, download the new AAR here, and use it to replace your existing ViroCore AAR file.

If you are using GVR, you will also have to update your GVR SDK. To do this:

  1. Download the 1.101 GVR SDK AAR here, and replace your existing GVR SDK AAR (this should be in your project's gvr_common directory).

  2. Open your project's GVR gradle file and set it to point to this new AAR file, as follows:

    configurations.create("default")
    artifacts.add("default", file('sdk-common-1.101.0.aar'))
    

Releases


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.