Skip to main content
Version: 5.x

Detailed Changelogs

This page summarizes changes in Lens Studio API, nodes, and features.


What's New in Lens Studio 5.18

✨ Highlights

Character Skin Generator Plugin - NEW

The Character Skin Generator plugin enables the creation of Lenses powered by ML models that transform users into full-body digital characters with pixel-level accuracy.

Body Generator: Quality Upgrade

The Body Generator plugin has been updated to a new version, bringing higher quality textures and better image-based generations.

Segmentation Texture: TextureTrackingScope Support

Segmentation texture now supports TextureTrackingScope, allowing you to segment bodies or portrait hair from sources like dual camera or camera roll (media picker).

Keyboard Input Support

Keyboard input support has been added for testing in Lens Studio:

  • The Bitmoji Player Package and Input Action component have been updated to utilize keyboard controls
  • Map keyboard keys (for example, W, A, S, D, space bar) to movement and actions
  • New D-Pad style input for movement

Bitmoji Game Sample Project - NEW

The Bitmoji Game sample project demonstrates building a complete 3D platformer game with Character Controller, featuring:

  • Bitmoji-themed level assets
  • Keyboard testing support
  • Game mechanics including checkpoints, collectibles, hazards, portals, and leaderboard integration

Scene Editor Improvements

FeatureDescription
Orthographic ViewToggle between perspective and orthographic views using the navigation cube for precise alignment
Frame ToolPress T to activate the Frame tool for quick sizing and positioning of objects in 3D space
Move Object to CameraMove selected object to editor camera position: Shift+Cmd+F (Mac), Shift+Ctrl+F (Windows)
Double-Click to ZoomZoom to an object by double-clicking it in the Scene Hierarchy or pressing F
Maximize PanelExpand any panel to fill the workspace for easier inspection and editing

Camera Kit SDK Lens Templates - NEW

Camera Kit SDK Lens templates have been added to showcase the SDK's AR capabilities.

Asset Library: Sorting & Filtering

New sorting and filtering options have been added to the Asset Library for easier asset discovery.

Simplified Lens Blocks - NEW

New Simplified Lens Blocks for rapid prototyping:

BlockDescription
ZoomScale picture with different speed and duration, loop, zoom in/out features
Selfie WidgetAdd small picture of you in different shapes to games and interactive experiences
ParallaxAdd depth to your photos and videos
Color Correction LibraryPart of the Adjust block
Face PartsAdd eyes or mouth on any position on screen or attach to your face

SafeSnapchatUser API - NEW

New SafeSnapchatUser class and related APIs allow loading friend Bitmojis in any context, including Lenses with Leaderboards, Turn Based Component, Remote APIs, and more.


💻 Scripting API Updates

See the Lens Scripting API Reference for full details.

Keyboard Input API - NEW

ClassDescription
KeyboardManagerCentral manager for keyboard input handling
KeyPressEventEvent triggered when a key is pressed
KeyReleaseEventEvent triggered when a key is released
KeyModifiersEnumeration for key modifiers (Shift, Control, Alt, and more)

JsonAsset - NEW

  • New JsonAsset class for working with JSON data assets
  • Module resolution now supports JSON files, Index.json files, and @input Asset.JsonAsset types

Vector API Additions

New methods added to vec2, vec3, and vec4:

  • clone() - Create a copy of the vector
  • fill() - Fill vector with a value
  • copyFrom() - Copy values from another vector

All vector functions that previously allocated new objects now have in-place alternatives to reduce memory overhead and improve performance.

Hierarchy Search APIs

New methods added to SceneObject for optimized hierarchy searches:

  • getComponentInAncestors() / getComponentsInAncestors()
  • getComponentInDescendants() / getComponentsInDescendants()
  • isDescendantOf()

Bitmoji 3D Options - NEW


🛠️ Editor Scripting API Updates

See the Editor Scripting API Reference for full details.

Asset Library API - NEW

Shader Pass API - NEW

UI Components - NEW

Package Export - NEW

New Package Export options to add a version range on export.


🔄 Improvements

GenAI Suite

  • Selfie Attachments - New "Styles" customization: Default (balanced), Cartoon (stylized), or Realistic (high-fidelity)
  • AI Portraits Component - See the tutorial to learn how to replace the default transition, add post effects, and combine AI Portraits with other components.

Glam & Glitter

  • Valentine's content pack added
  • Improved Makeup Stickers and Sparkles functionality
  • New sparkle presets including hearts
  • Paint makeup directly on face using stickers with color, opacity, mirroring, and erasing controls

VFX Editor

  • High precision render targets - More efficient particle data storage, better performance, higher accuracy with no drift
  • World space systems can now simulate to several kilometers and beyond
  • Added support for VFX Container Node items duplicate and copy & paste

Character Controller

  • Actions with and without animations can optionally be interrupted by other actions or by moving the character
  • Actions can now use remote animation assets for publishing lighter lenses
  • Two new animation types: Fall and Squat
  • New APIs for changing jump speed and velocity programmatically

Input Action

  • New Character Controller responses for handling movement parameters
  • New D-Pad style input

Script Inputs UI

  • Custom Type Inputs now support Custom Component types
  • The showIf flag now supports reference properties:
    • {"showIf": "[ref_property]"}–visible when the reference is valid
    • {"showIf": "[ref_property]", "showIfValue": false}–visible when the reference is invalid

Simplified Lens Blocks

  • Hair Color - Changed shader for more natural and saturated look
  • Eye Color - Added ability to change eye color for each eye separately
  • Stickers on Face - Now you can map stickers to 3D mesh
  • Background Block - Added ability to use UPA (User Provider Assets)

🐛 Bug Fixes

Selfie Attachments

  • Resolved a critical issue that prevented lenses with animated attachments from being published

Character Controller

  • No longer crashes if a scene object considered as ground is destroyed at runtime
  • Dash direction is now updated properly if a dash is requested while moving the character
  • Fixed animation not playing correctly if Character Controller initialized before the Bitmoji's idle animation was loaded

Scene Editor

  • Fixed face meshes not appearing when the face index was not 0
  • Fixed unresponsive scale gizmo on Windows
  • Fixed issue where using the Text3D frame tool did not update the text component in the model
  • Fixed multiple crashes

⚠️ Known Issues

  • TypeScript will not allow comparison between mat2 and mat4

What's New in Lens Studio 5.17

✨ Highlights

Selfie Attachments: Animated Support

Selfie Attachments now supports creating animated attachments. Bring your selfie experiences to life with dynamic, moving elements that respond and animate in real-time.

New Animation Workflow:

  • Add an animation description in the new Animation Prompt field
  • Preview four animated variations before generating the final asset
  • Switch between Static and Animated tabs to compare results
  • Animate existing static attachments using Add animation

Animation Component Properties:

  • Start Events–Define events that trigger the animation
  • Delay–Set delay time before animation starts
  • Playback Speed–Control animation speed relative to original
  • Loop Options–Configure repeat behavior (continuous, ping-pong)
  • Infinite Loop–Enable endless playback

Head Generator: Next-Gen Upgrade

The Head Generator has been updated to a new version, delivering:

  • Higher fidelity character heads with improved detail and realism
  • Better image prompt following for more accurate results from your inputs
  • New preview workflow - Generate four previews, then select your favorite before creating the final asset
  • Regenerate option - Get four new preview options if the initial results don't match expectations
  • Copy settings - Quickly iterate on prompts while preserving the original asset in Gallery
  • Position adjustment - Quickly modify transform coordinates to align the 3D head with the user's face

Image Reference now produces the highest-quality assets. The plugin delivers best results with non-human subjects like animals, creatures, objects, or stylized characters.

Character Controller: Major Enhancements

The Character Controller component receives significant upgrades for game development:

FeatureDescription
Jump BufferingQueue jumps before landing for responsive controls
Coyote TimeBrief grace period to jump after leaving a platform
Multiple JumpsSupport for double jumps and beyond
Remote AssetsAnimations can now use cloud storage, reducing Lens size
NPC ProxyNew proxy version for Non-Player Characters
Connected Lens SupportReplicating remote players with prediction algorithms for enhanced performance
New API MethodsgetMoveVelocity() for horizontal-only velocity, getActiveActions() to query active actions

Input Action Update: New response type "Move To Position" allows users to move characters to a point with tap input.

Source: character-controller

Game Lenses: Fullscreen Mode

Game Lenses now automatically enter Fullscreen mode when the user taps the screen. This exclusive feature allows you to:

  • Build immersive fullscreen experiences with full screen real estate for game UI
  • Block default touch behavior to prevent accidental swipe-outs during gameplay

Source: games-overview

Turn Based Component: Smart Capture & Recovery

New intelligent features for turn-based games:

  • Auto Capture - The Lens fully controls when a snap is taken, automatically capturing when endTurn() is called
  • Turn Data Cache & Restore - Recover turn data when reopening a Turn Based Lens from an incomplete turn
  • Score Tracking - New setScore() and getScore() methods to include scores in turn data
  • Retry Disclaimer - New showRetryDisclaimer() method to prompt users to send incomplete snaps

Source: turn-based


🎨 Glam & Glitter Plugin: Expanded Features

The Glam & Glitter plugin receives a major update with exciting new capabilities:

New Features

  • Glitter Controls for Makeup - Add an extra dimension of sparkle to your makeup effects.
  • Custom Texture Support - Upload your own textures for:
    • Gem stamps
    • Makeup
    • Stickers
    • Sparkles
  • Sample Project - A new sample project is now available as a convenient starting point

UV Map References

We've added comprehensive UV texture references to help you create perfectly aligned custom makeup:

  • Face UV for Blush - Reference texture showing how blush textures wrap around the Face Mesh
  • Eye UV for Eyeshadow and Eyeliner - Precise mapping for eye-area cosmetics
  • Mouth UV for Lips - Accurate lip texture alignment guide

These UV maps serve as visual guides when creating your own custom makeup textures, helping you align details accurately with the Face Mesh.

Source: glam-and-glitter-plugin


🔧 Material Editor & VFX Editor: Enhanced Node Capabilities

Transform Vector Node (v1.2)

The Transform Vector node has been upgraded with two powerful new properties:

New PropertyDescription
Apply BlendingWhen enabled, vertex blending is applied during transformation
Apply SkinningWhen enabled, vertex skinning is applied during transformation

These additions give you finer control over how positions are transformed between coordinate spaces, especially useful for animated and skinned meshes.

Source: node_math_transform_v1_2

Skin Matrix Node (v1.1)

The Skin Matrix node has been updated with a new combined skin matrix option:

What's New:

  • Combined Skin Matrix - Get the full skinning transform without manual per-bone calculation
  • Per Bone Matrix property (bool) - Toggle between combined matrix mode and per-bone mode

Previously, the node only provided per-bone matrices requiring a bone index. Now you can get the combined matrix directly for simpler skinning workflows, while still having access to per-bone matrices when needed.

Source: node_effect_global_skin_matrix_v1_1

Surface Nodes: New Space Property

Three vertex input nodes now include a Space property dropdown, giving you control over which coordinate space your values are returned in:

NodeWhat It Returns
Surface Normal (v1.1)Normal direction vector of the surface
Surface Position (v1.2)Position of the surface
Surface Tangent (v1.2)Tangent direction vector of the surface

This is particularly valuable when you need surface data in a specific coordinate system (Object, World, Camera, etc.) for your shader logic.

Source: node_effect_global_surface_normal_v1_1, node_effect_global_surface_position_v1_2, node_effect_global_surface_tangent_v1_2

Position From Depth Node: Custom Camera Support

The Position From Depth node now supports custom camera properties, unlocking new possibilities for depth-based effects:

New Inputs:

  • Near Plane
  • Far Plane
  • FOV (Radians)
  • Aspect Ratio
  • View Inverse Matrix

New Property:

  • Use Custom Camera - When enabled, the node uses your custom camera properties to transform depth from screen space to world/view space

This is especially useful for multi-camera setups or when you need to reconstruct positions from depth textures captured by different cameras.

Source: node_util_position_from_depth


💻 Scripting API Updates

See the Lens Scripting API Reference for full details.

Camera: New Matrix Methods

Access camera matrices directly for advanced rendering and projection calculations. See the Camera API Reference.

MethodReturnsDescription
getProjectionMatrix()mat4Returns the projection matrix for this camera
getViewMatrix()mat4Returns the view matrix for this camera
getViewProjectionMatrix()mat4Returns the combined view and projection matrix

New properties for advanced render target control:

PropertyTypeDescription
renderTargetMipmapLevelnumberSets the mipmap level for the camera's render target
renderTargetSlicenumberSets the slice index for the camera's render target

Gaussian Splatting: Full Data Access

Manipulate Gaussian Splat data programmatically with new getter and setter methods. See the GaussianSplattingAsset API Reference.

Read Splat Data:

  • getSplatColors() - Returns colors as Float32Array (r, g, b, a per splat)
  • getSplatPositions() - Returns 3D positions as Float32Array (x, y, z per splat)
  • getSplatRotations() - Returns quaternion rotations as Float32Array (w, x, y, z per splat)
  • getSplatScales() - Returns 3D scale values as Float32Array (x, y, z per splat)

Write Splat Data:

  • setSplatColors(rgbaArray) - Set all splat colors
  • setSplatPositions(vec3Array) - Set all splat positions
  • setSplatRotations(quatsWxyzArray) - Set all splat rotations
  • setSplatScales(vec3Array) - Set all splat scales

This enables dynamic Gaussian Splat effects, procedural modifications, and data-driven visualizations.

Example Usage: (illustrative)

// Read positions
var positions = gaussianSplat.getSplatPositions();

// Modify and write back
for (var i = 0; i < positions.length; i += 3) {
positions[i + 1] += Math.sin(getTime()); // Animate Y position
}
gaussianSplat.setSplatPositions(positions);

GLTF Asset: Static Composition Info

New method to retrieve asset statistics after instantiation. See the GltfAsset API Reference.

Example Usage: (from API source)

var info = gltfAsset.getStaticComposition();
if (info) {
var infoObj = JSON.parse(info.value());
print('Triangles: ' + infoObj.triangleCount);
print('File size: ' + infoObj.fileSizeBytes + ' bytes');
}

Returns JSON with: file size, triangle count, vertex count, mesh count, texture count, texture memory size, material count, animation count, and node count.


🛠️ Editor Scripting API Updates

See the Editor Scripting API Reference for full details.

Audio Support - NEW

Full audio component support in Editor Scripting:

New Components:

  • AudioComponent - Configurable audio playback with spatial audio, distance effects, and more
  • AudioTrackAsset - Base asset class for audio tracks
  • LicensedAudioTrack - Licensed audio with metadata (artistName, trackName, trackId)

AudioComponent Properties:

  • volume, recordVolume - Volume controls
  • enableSpatialAudio - Enable 3D audio positioning
  • enableDistanceEffect - Audio falloff over distance
  • minDistance, maxDistance - Distance effect range
  • curveType - Distance falloff curve (Linear, Inverse, Logarithm, InverseLogarithm)

Logger Module - NEW

New logging infrastructure for plugins:

Example Usage: (illustrative)

import * as Logger from 'LensStudio:Logger';

const logCollector = this.pluginSystem.findInterface(Logger.IUserLogCollector);
logCollector.onRevealLogRequest.connect((message) => {
console.log(message);
});

The IUserLogCollector interface enables custom log handling with onRevealLogRequest signal support.

Asset & Package Management

AssetImportMetadata additions:

  • assetTreePath - Get the asset's tree path in the project
  • isPackedPackageItem - Check if the asset is part of a packed package

Model additions:

  • unpack() - Unpack native packages programmatically

UI Improvements

ProgressBar widget enhancements:

  • setPrimaryColor(color) - Customize the primary bar color
  • setSecondaryColor(color) - Customize the secondary bar color

⌨️ Expanded Keyboard Shortcuts

We've expanded keyboard shortcut coverage across multiple panels to make common actions faster and navigation more consistent:

  • Scene Editor - New shortcuts for scene manipulation
  • Scene Hierarchy - Faster navigation and object management
  • Asset Browser - Quick access to common asset operations
  • Graph Editor - Streamlined node editing workflows

These improvements provide a more consistent experience across panels and platforms.


🔄 Improvements

UI & Workflow

  • Joystick Component - Three new texture presets added
  • Character Controller - Updated idle, walk, and run animations
  • Logger Panel - Double-click on an issue to navigate directly to the script asset
  • Turn Based Game Sample Project - Added auto capture and contextual score in chat

🐛 Bug Fixes

Stability Fixes

  • Fixed a crash in Character Controller when resolving overlaps with other colliders
  • Fixed a crash in Leaderboard component when its scene object is disabled between initialization start and initialized state
  • Fixed application crash when scene was removed due to project corruption
  • Fixed application crash when SceneObject with AnimationPlayer is deleted
  • Fixed application crash on quick start/stop of video recording from Preview
  • Fixed application crash when importing VFX.LSO from old Lens Studio versions
  • Fixed application crash when some old projects were corrupted

Component & Feature Fixes

  • Leaderboard Component - Can now be used with multiple instances without conflicts
  • Custom Node - Fixed issue where connections could be lost on project reopen
  • Diffuse Radiance Map - Fixed noisy map creation
  • Screen Transform - Moving the transform now properly updates Position fields
  • Material Editor - Fixed issue where not all compatible nodes were present when creating connections
  • 2D Editor - Fixed issue preventing it from working
  • Face Crop Texture - copyFrame() now crops the correct region
  • Flipbook Node - Now updates Max frames field interactively
  • Script Graph - Fixed import issues from old Lens Studio versions
Was this page helpful?
Yes
No