Changelog

To find out what's new in AR Studio, check our release notes below. New versions are released every 2 weeks. We often launch new features and make some big changes, which may affect your workflow, so please make sure to read these notes before upgrading.

Version 35 - April 20, 2018

New

  • When opening projects saved in an older version (v31 or later), AR Studio will let you open the project in that version if it is on your Mac.
  • When opening projects saved in a newer version, AR Studio will let you open the project in that version if it is on your Mac.

Improved

  • The Spin property was returned to the particle system’s Inspector panel
  • 3D objects in the Assets panel are now grouped by the file in which they were imported rather than being grouped together under “Objects”.

Patch Editor Changelog

New

  • Audio patches
  • Forehead and Chin face landmark patches
  • Particle system patches

Improved

  • The Duration ports on both the Animation and the Loop Animation patches can be connected
  • The Start and End ports on Transition patches can be connected
  • The Start Value and End Value ports on the Progress patch can be connected

JS API Changelog

  • You can monitor many scalar signals simultaneously (e.g. Reactive.monitorMany)
  • The new ScaleSignal data type allows you to assign scale simultaneously (e.g. obj.transform.scale = Reactive.scale(1, 2, 3) )

Version 34 - April 6, 2018

New

  • Simple per-texture size limiting in inspector. Limit texture sizes without needing to apply an override for each target
  • Value patch for Visual Programming
  • New gestures are supported in Visual Programming: Pan, Pinch, Rotate

Improved

  • Sidebar items are not expanding after adding new root item
  • Keep play/pause state when switch cameras
  • Support of binary FBX files
  • Now you can import any amount of bones within a file but there is a limit of maximum 20 bones influences on a mesh
  • Now you can load blendshapes with Collada files or load them with separate files and assign as deformations

Patch Editor Improvements

  • Advanced Face Tracking
  • Values on connected input ports are now hidden
  • Reverse option for Animation patch

JS API Changelog

  • New
    • Introduced array functions in the Reactive module (ReactiveModule.sumList, mulList, etc.)
    • Introduced new function ScalarSignal.pow and ReactiveModule.pow in the Reactive module
    • Introduced timeDriver.reverse() function to reverse the animation
  • Improvement
    • Fixed bug in JS API for Meshes. Material setter was not changing visual appearence of mesh
    • Added a support for more bones per importing scene. Now mesh will contain a list of joints that it needs to be rendered with. This list defines order which is referenced by joints index attribute
    • Changed the direction of depth in unprojectWithDepth function, so when positive depth is given, it's unprojected in front of the camera

Version 33 - March 23, 2018

New

  • Automatic texture compression options. These new options are the default:
    • PNG /JPEG: Recompresses any imported JPEG or PNG without any loss of quality
    • ETC2: Chooses between the 3 ETC2 formats depending on the use of alpha within the original image
    • PVRTC_V1: Chooses between PVRTC_V1_4_RGB and PVRTC_V1_4_RGBA depending on the use of alpha within the original image

Improved

  • In effects with multiple faces, each face will keep the same mask as long as it is continually tracked
  • Unused assets are checked for in the export window
  • PVRTC_V1: Chooses between PVRTC_V1_4_RGB and PVRTC_V1_4_RGBA depending on the use of alpha within the original image

Patch Editor Improvements

  • New patches
    • Round/Ceiling/Floor operator with decimals
    • Exponential Smoothing
    • Offset
    • Random
    • Long Press Gesture
  • Improved
    • Screen Tap patch
    • Object Tap patch
    • Added Publish Port action popover when you click on a port inside a group patch
    • Only ports that can be published will show popover menu
    • The color of input and output patches is now orange

JS API Changelog

  • New
    • The CameraInfo module exposes information about the preview size, which camera is active, and whether a video or a picture is being captured or not
  • Improvement
    • It is now possible to assign point signal to object.transform
    • It is now possible to assign a PointSignal to object.transform.position
    • It is now possible to assign a RotationSignal to object.transform.rotation
    • Continuously-tracked faces get a stable FaceTracking id for scripting

What's New - Version 32 (March 9, 2018)

Improved

  • Enhanced mirroring feedback
  • 3D Objects are now represented by a file object in the Assets panel
  • AR Studio now displays the application version number in the title of each document window
  • AR Studio will not prompt you for updates if a newer version is already installed on your Mac
  • AR Studio will prompt you to save a copy of the project file when upgrading to a new major version
  • Texture compression inspector improvements:
    • Showing all compression override settings without tabs
    • Showing the size of a texture both uncompressed (on a mobile device) and compressed for download, once compression has finished
  • The “Eyes” and “Mouth” options in the face mesh inspector have been simplified

Patch Editor Improvements

  • Patches can now be grouped
  • New patches:
    • Option Picker patch
    • Camera Info patch
      • Drag camera to the canvas to create one
    • Device Info patch
      • Drag device to the canvas to create one
    • Runtime patch
    • 2D Point Unpack patch
    • Insets Unpack patch
    • Visibility patch for Canvas, Flex, Ambient Light, 2D Text and Rectangle
  • Improved Switch patch (Turn On & Turn Off ports)
  • Added the ability to comment around patches

SDK Changelog

  • New
    • FontsModule, it can be used to find fonts by name to use with PlanarText::font
    • Volume control of audio source dependent on it’s proximity to viewport
    • Various functions of the Reactive module
    • VectorSignal.dot and VectorSignal.cross in the Reactive module
    • CameraControlModule which allows you to control camera from script
  • Improved
    • Audio play()/stopAll() methods move from Audio module to individual audio source instances

Version 31 - February 23, 2018

New

  • Application version archival. This allows you to continue work on existing effects without upgrading project files. Previous AR Studio versions will be stored in your Applications folder. You can opt in to application archival when updating AR Studio from within the app. This can be configured in Preferences.

Improved

  • Autoupdating from within AR Studio has been turned off. You must now actively agree to install an update.

Patch Editor Improvements

  • Consumer patches for multiple selected objects can be added at the same time.
  • Option Switch patch now available. Control up to 5 states using an index input (0, 1, 2…). This is useful for tracking a state that is one of many options.
  • Blink patch now available. You can use this patch to trigger animations or effects when the user blinks.
  • Left and right eye closed patches now available. You can use these patches to trigger animations or effects when the user closes left or right eye.

JS API Changelog

  • New
    • Reactive.mix(x, y, alpha) method that allows you to interpolate two signals.
    • .material getter on all scene objects.
  • Improvement
    • Default value for Face.point() and related methods.
    • Polybezier sampler issue fixed.

Version 30 - February 8, 2018

New

  • New patches are available in the Patch Editor
    • Eyebrows raised
    • Eyebrows lowered
    • Smile gesture

Improved

  • 3D Objects
    • Dropping a 3D object on the Scene tab instantiates it and adds it to the Assets panel
    • Dropping a 3D object on the Assets panel doesn't instantiate a 3D object
  • Mock data visualization in project properties

JS API Changelog

  • Added an opportunity to control a volume of audio instances

Version 29 - January 31, 2018

New

  • A Counter patch is now available in the Patch Editor

Improved

  • Texture previews
  • Default project and version naming
  • Legacy projects are upgraded to a new directory-based file format
  • Stricter naming rules for Asset Library and objects in the Scene tab
  • Dynamic time strings support lowercase and uppercase

JS API Changelog

  • New
    • Ability to get normalized touch gesture coordinates
    • Shader picking for touch gesture hit testing
  • Improved
    • Skin smoothing on low-res images
    • Tracked face mesh adjustments
  • Removed
    • fetch() method in Networking module that expects JSON response

Version 28 - December 8, 2017

New

  • Visual programming:
    • Frame Transition & Texture Sequence Current Frame patches let you create frame-based animations for materials using texture sequences
    • Certain patches are inserted automatically if AR Studio detects that they are needed
    • Use the Equals patch to compare values with custom tolerance value
  • The plane tracker, which tracks an infinite, horizontal plane and lets you place 3D objects in the world, interact with them and animate them
  • Exporting projects produces one file that includes all of the information required for uploading effects to Facebook
  • Specular map support for standard materials
  • Pane in the project export dialog to show whether the exported bundles will meet Facebook's size requirements and a progress bar
  • Texture preview for compression settings

Improved

  • The face mesh has been upgraded to make painting face textures more natural and improve the quality of dynamic lighting:
    • The vertex count has been increased from approximately 350 to 500
    • The topology has been refined
    • The accuracy of facial feature tracking has been improved
  • Project export dialog is smaller and contains more focused information
  • Unit related scaling when importing 3D models
  • Materials without diffuse textures are white, not checkerboard
  • Diffuse textures can have both texture and color inputs, which are multiplied during rendering
  • The name of the Multiply section has changed to Alpha

Removed

  • The multiply mode selector for materials

JS API Changelog

  • Added a visual scripting component to set the current frame of a sequence texture
  • Introduced Reactive.antiderivative
  • Introduced new face mesh
  • Extracted 2D face textures as a sprite with transparent background
  • Networking.fetch() is now closer to standard fetch and is meant to be called as Networking.fetch(url).then(function(r){return r.json();}).then(function(jsonResponse){ /* profit */ })

Known Issues

  • Specular maps don't work with particle systems

Version 27 - December 4, 2017

New

  • Asset Summary Breakdown view available via View → Show Asset Summary. Shows asset sizes using different compression types.
  • Visual programming patch editor available via View → Show Patch Editor. Allows you to add animation, logic and interactivity to your project without scripting.
  • Added support for pan, pinch, rotate and long press gestures.
  • Support for external assets that are stored outside of the project. Now, you're notified when an external asset is missing.
  • New project format to replace the .fbfxproj format: a project folder and a .arproj file.
  • Support for 'Save New Version' for the new project format, which saves a copy of your project file without duplicating external assets.
  • A standalone .arprojpkg file generated at export, which should be uploaded to Facebook using the effect upload tool along with the exported .arfx files.
  • Support for generating a standalone .arprojpkg file from the File → Package Project menu which allows you to share a project with someone else in such a way that they can open the project and re-save it themselves.
  • New toolbar button for reporting a problem.
  • Focus on multiple selected objects with F key.

Improved

  • Default viewport configuration and viewport perspectives.
  • Possibility to select a different video for front and back camera.
  • Added ability to exclude layers affected by a light source.
  • Infinite object rotation.

Removed

  • Checkboxes from the Export panel. All of the required files for uploading a project to Facebook are now generated automatically when the project is exported.

JS API Changelog

  • Removed short names for transform signal properties:
    • Removed FaceTracking.face(X).transform in favor of FaceTracking.face(X).cameraTransform.
    • Removed DeviceTracking.transform in favor of DeviceTracking.worldTransform.
  • Introduced Rotation class and some related methods.
  • Deprecated timeDriver(number), loopTimeDriver(number), and yoyoTimeDriver(number) in favor of timeDriver(objParams).
    • Replace timeDriver(number) with timeDriver({durationMilliseconds: number}).
    • Replace loopTimeDriver(number) with timeDriver({durationMilliseconds: number, loopCount: Infinity}).
    • Replace yoyoTimeDriver(number) with timeDriver({durationMilliseconds: number, loopCount: Infinity, mirror: true}).
  • Camera & Screen aspect ratios now should match.

Known Issues

  • Multiple instances of the app running simultaneously are not supported. It might result in rendering issues and other undefined behavior.

Version 25 - November 10, 2017

New

  • Support for using real-world units (https://developers.facebook.com/docs/camera-effects/faq#realworldunits)
  • Support for normal map texture in default materials
  • Option to use premultiplied alpha for textures

Improved

  • List of devices in the Aspect Resolution toolbar menu
  • Behavior of contextual menus with multiple selected items
  • Texture compression: textures can now be targeted as passthrough, PNG, or JPEG, with optional size conversion and lossy or lossless recompression

JS API Changelog

  • Added muteMicrophone and unmuteMicrophone in Audio module
  • Added support for generic time drivers
  • Introduce UnitsModule: a set of helper functions for units conversion

Known Issues

  • When you import 3D objects, they are assumed to be using the unit that your AR Studio project is using (defined in project properties, cm by default). To get the correct sizing, you need to match the imported file to your project. Any scripts or shaders that specify a unit value may also require fixing as these values will now be different. We are working to improve this process by reading the exported units from the import file.
  • If you import a facemesh for distortion and it looks unexpected, check that the scale of the facemesh is correct.
  • Opening one of the sample projects, selecting the script object, and clicking either the "Edit" or "Reveal Script" button in the Inspector results in a message that the script is missing.

Version 24 - October 13, 2017

Improved

  • Export compressed and uncompressed sizes for Uncompressed export targets are now shown in the export sheet

JS API Changelog

  • New
    • Added focalPlane property to Camera scene object
    • Added methods in FaceGestures JS module for closed eyes
    • Added scalar signals for eye opening

AR Studio Player

  • Please don't forget to update the AR Studio Player to the latest version to be able to mirror effects.

Version 23.2 - October 9, 2017

Improved

  • No longer crashes when running a script with errors
  • No longer shows false positive warning message about deprecated immediate mode API

Version 23.1 - October 4, 2017

Improved

  • The uncompressed export bundle now contains the original PNG/JPEG files, unless an override is applied

Version 23 - September 29, 2017

Added

  • Support for light sources in the scene and new materials that are influenced by lighting
  • Ability to extract the input from the camera node as a texture
  • JS Autocomplete with built-in documentation

Improved

  • Selection persists when script is toggled
  • Texture compression inspector UI
  • Picker UI

JS API Changelog

  • New
    • Scripting API for SVG
    • TouchGestures module exposed onPan, onPinch, onRotate and onLongPress events
    • Added material property in ParticleSystem
    • Allow changing fraction of emission particles of each type
    • CustomMaterial added method setTexture(name, texture) to change texture parameter
    • Added option to remove the expression components from tracked face
    • Added Analytics module to log analytics events
    • Multiplication of vector signals by scalar signals
  • Changed
    • The non-reactive immediate-mode API is not available anymore, but your effect still requests immediate-mode in the Manifest. Please remove it from the Manifest. This will cause the following things to not be available anymore:
      • Global objects like 'textures', 'scene', 'materials', 'layers', 'faces'. Please use the reactive modules instead.
      • functions like 'init()', 'update()' or 'updateFaces()' won't work anymore. Please take a look at examples for reactive effects.
    • Changed focal distance (and plane size) to use meters. Basically scaled the values to more natural range: focal length: ~0.5m. All objects will look smaller in new effects.

AR Studio Player

  • Please don't forget to update the AR Studio Player to the latest version to be able to mirror effects.

Version 22 - September 15, 2017

Added

  • Bones
  • Texture extraction
  • In-app survey
  • New Face Tracker algorithm

Improved

  • Face Mesh UI
  • Performance when changing scene object properties

JS API Changelog

  • New
    • Scripting API for light sources.
    • Reactive.derivative
    • layer support for light sources.
    • Docstrings for classes, properties and methods have been added
    • Reactive.sign and ScalarSignal.sign methods that are reactive equivalents for Math.sign
    • More arithmetic methods for vectors and points
    • FocalDistance model to be used instead of the previous anonymous node added by editor.
  • Changed
    • Ambient, diffuse and specular colors are now modeled by a single object.
    • The non-reactive immediate-mode API is deprecated
    • Redesigned CustomMaterial: Shader definition
    • The config property on particle systems has been moved to the top level property.

AR Studio Player

  • Please don't forget to update the AR Studio Player to the latest version to be able to mirror effects.

Version 21 (September 1, 2017)

Added

  • New texture sequences flow
    • Texture sequences now have their own section in asset library, called “Animations”
    • Similar to how materials work, you can select which texture to attach to an animation
    • Sub-Textures were moved from sidebar tree to inspector
  • 3D Objects as Assets
    • Import your 3D Objects once and reuse them from the asset library
    • Reload 3D Objects

Improved

  • New tabbed inspector for texture compression information
  • Better performance

JS API Changelog

  • New face gesture recognizer for smiling
    • FaceGesturesModule.isSmiling
  • Introduce lip curvature signals
    • Mouth.lowerLipCurvature
    • Mouth.upperLipCurvature

AR Studio Player

  • Please don't forget to update the AR Studio Player to the latest version to be able to mirror effects.

Version 20 (August 18, 2017)

Added

  • New Capabilities system that automatically detects capabilities in use based on the state of the scene as well as the required script modules

Improved

  • UI for adding new objects to the scene
  • UI of the scene objects to have icons for all types

JS API Changelog

  • Eyebrow gestures API:
    • FaceGesturesModule.hasEyebrowsRaised
    • FaceGesturesModule.hasEyebrowsFrowned
  • World-space option for particle systems API:
    • ParticleSystem.worldSpace
  • Planar object API shims that were deprecated in the previous version are now removed. The APIs won't be available in *.arfx files created in AR Studio v20 or higher (*.arfx files created with previous versions will keep working as is). List of removed API:
    • Plane.planarFind
    • Plane.planarChild
    • PlanarObject.planarFind
    • PlanarObject.planarChild
    • ScreenPlane.planarFind
    • ScreenPlane.planarChild
    • Transform.rotation

AR Studio Player

  • Please don't forget to update the AR Studio Player to the latest version to be able to mirror effects.

Version 19 (August 4, 2017)

Added

  • Axes indicator and navigation cube
  • Welcome window
  • Multipack support for importing texture sequences

Improved

  • Texture compression progress indication in sidebar

JS API Changelog

  • Planar objects are now a particular case of regular 3D objects. Compatibility shims were introduced everywhere (e.g. planarChild now is the same as child) but side-effects still can be encountered.
  • More Particle System APIs.
    • ParticleSystem.gravity, ParticleSystem.position, ParticleSystem.positionDelta, ParticleSystem.hsvaColorModulationModifier, ParticleSystem.colorModulationHSVA, ParticleSystem.colorModulationHSVADelta.
  • Vector signal type is introduced. Similar to the existing Point signal type but behaves differently when being applied a transformation (only rotation is applied). The type-string point-vector operations were introduced (e.g. point + vector = point, vector + vector = vector, point + point = error).
    • ReactiveModule.vector, VectorSignal.sub, VectorSignal.sum, VectorSignal.add, VectorSignal.magnitude, VectorSignal.expSmooth, PointSignal.sub, PointSignal.sum, PointSignal.add, VectorSignal.z, VectorSignal.y, VectorSignal.x

Version 18 (July 21, 2017)

Added

  • Scene tree search filters

Improved

  • Better textures import panel
  • Altitude support for dynamic text
  • Editing particle system properties for multiple selected objects
  • The ability to give objects in a scene the same name, as long as they don't share a parent

JS API Changelog

  • New properties for particle system: ParticleSystem.positionModifier, ParticleSystem.velocityModifier, ParticleSystem.sizeModifier
  • New method: Diagnostics.watch(string, signal). Adds the specified signal to the watch view in AR Studio

Version 17 (July 7, 2017)

Added

  • Custom shortcuts
  • Etc2Comp for ETC2 texture compression
  • Manipulation of multiple objects

Improved

  • Interaction with objects in scene tree
  • Selecting a material for multiple 3d objects

JS API Changelog

  • Sequence Sampler API changes: Animation.samplers.sequence().addSegment(...) method is deprecated and replaced with new method Animation.samplers.sequence({samplers: [...]})
  • Particle Systems API exposes bunch of new properties to JS API: lifetime, scaling, initial velocity, rotation and damping
  • New utility functions for Scalar Signals: 'ScalarSignal.floor', 'ScalarSignal.ceil'
  • New utility functions in Reactive Module: 'ReactiveModule.log', 'ReactiveModule.floor', 'ReactiveModule.exp', 'ReactiveModule.ceil'

Version 16 (June 23, 2017)

Added

  • Support for safe areas in 2D canvases
  • Overlay with instructions on how to enable mirroring in AR Studio Player for Android
  • Downloaded and mirrored effects are shown in a single list in AR Studio Player for Android

Improved

  • Texture conversion system
  • Audio source volume stepper behavior
  • Closing behavior of material picker menu
  • Width and height fields validation
  • Disabled UI when running a script

JS API Changelog

  • TimeDriver in `Animation` module now starts and stops the animation in the next frame.
  • Sequence sampler now correctly ignores zero-weight segments.
  • Sensitivity of mouth openness has been increased.
  • New property `id` for class `Face` in `FaceTracking` module.
  • New method `onTap` in `TouchGestures` module.
  • New methods `onOn` and `onOff` for class `BoolSignal` in `Reactive` module.
  • New method `round` for classes `ScalarSignal` and `ReactiveModule` in `Reactive` module.
  • New methods `getModuleNames` and `getTypeDescriptions` in `Diagnostics` module.
  • Enum values for `State` in `LiveStreaming` module were renamed.
  • Property `transform` in module `FaceTracking` was renamed to `cameraTransform` and the old name is now deprecated.
  • Property `transform` in module `DeviceMotion` was renamed to `worldTransform` and the old name is now deprecated.
  • Methods `gesture` and `gestureOn` in `TouchGestures` module are now deprecated.