2020.2

Client Library

  • New omni.client extension (all extensions using python/C++ client lib should set this as extension dependency).

  • omni.client python binding.

  • OmniClient.h C++ dynamic library interface.

  • OmniClient carbonite interface.

  • DataSource interface with carb.datasource-omniclient.plugin implementation.

  • Direct use of Connection Library, IConnectionHub, omni_usd_plugin, omni.connection, omni.connectionhub, omni.usd_plugin are now deprecated. Any new carbonite plugins, Kit extensions should develop with client library/omni.client directly. Any old extensions/scripts/plugins using these components will stop working and need to be updated.

  • URL format has changed. You do not need to make an explicit connection to a server to access the files, instead you specify the server name in the URL. For example if you want to load a file from localhost, previously you need to log into localhost first, then open omni:/Users/foo/bar.usd. Now you can open omniverse://localhost/Users/foo/bar.usd directly. Client library manages the connection internally.

  • With the new URL format, you can now reference USD layers across servers (experimental, material may not work properly).

  • Old omni: URL will still work in USD, but it’s recommended to update your files to use the full qualified omniverse:// URL.

Extensions System

  • Extension system now supports setting registry provider which can be implemented anywhere

  • Add omni.kit.registry.nucleus extension which implement registry provider interface using nucleus and client library

  • Add more API to extension manager to fetch extension info, to allow treating both remote and local extension in uniform way

  • Added “enabledCore” setting to enable some extensions before others (like extension registry).

  • Extensions 2.0 manager UI with remote extension browser

  • By default extension system now prefers highest extension version

  • Add “list all extensions” cmd param to kit.exe

  • Add publish command to kit.exe

  • package.target config property. Allows to specify platform specific filters. It is also autofilled when publishing. Allows publishing of binary extensions.

  • Semantic Versioning support, including prerelease and metadata

  • Proper package name for extensions (using version and package.target)

  • Version removed from premake and moved into extension.toml.

  • Extension.toml reworked, added [package] section to avoid polluting root, added various info for UI here.

  • CHANGELOG in extension.toml + example

  • Add platform info to IApp interface

  • Added live mode support for documentation editing (build_docs.bat -l)

  • Huge extension documentation update

General Improvements

  • Changed settings override command line prefix to –/ and previous prefix –carb/ is now deprecated.

  • Refactored and cleaned up standalone rendering codepath that is used in Kit Mini and Kit non-RTX.

  • Editor interface is bumped to version 1.0 to facilitate semantic compatibility.

  • Added flag –skip-core-config to force Kit to load without the implicit configuration files (kit-core.json and kit-default.json)

  • New way to process Kit experience configuration files, allowing configuration merging using –merge-config/-m command line arguments, with experimental support of configuration file imports (using “@import@” directive) and appending array values using “++” child field.

  • Kit data path now includes build number

  • New extension omni.kit.usda_edit that allows editing usd file as text in the external editor

  • Stage Window: displaying instance proxies

  • Content Browser: Ability to use custom context menu

  • Bugfix: Press F to frame objects will no longer include the bounds of Camera and Light gizmo.

  • Bugfix: Fix normal issues of creating standard mesh in z-up stage.

  • Bugfix: Stage Window: fixed tree updating when muting layers

  • Bugfix: Stage Window: fixed removing of multiple items

  • Bugfix: Stage Window: fixed Ctrl-A

  • Bugfix: Stage Window: fixed focus on selection

Animation

  • omni.anim.usdskel an OmniGraph-based extension to support Skinning, BlendShape (no skinning), BlendShape & Skinning (preskinning)

  • Split the transform constraints extension into three extensions: omni.anim.wrap (a mesh-to-mesh deformer), omni.anim.xform_constraints, omni.anim.pinConstraint

  • omni.anim.jiggle extension to simulate the secondary jiggle bounce mesh deformation

  • Add options in the Preference window to select default xformOp when creating new prims

  • Add support of USD layer offset such that animations in different layers with different timeCodePerSecond can play together, a.k.a auto retiming.

  • Add Transform spline interpolation supported in omni.anim.timesample_editor , such that the key framed xForm value can be evaluated in Bezier curve interpolation method.

  • Moved the timeCodePerSecond editing feature from the timeline UI to the omni.anim.timesample_editor window

  • Switched the default animation time unit from seconds to frames in the timeline UI

  • Improved the robustness of omni.anim.player such that it can playback almost all kind of animation scene. The only exception is the none-OmniGraph skeleton mesh pipeline, it is a known issue and will be address in the next release.

UI Framework

  • Moved Omni::UI to a separate extension

  • New embeddable omni.kit.widget.filebrowser UI widget for exploring file systems, including nucleus servers.

  • New widget, ImageWithProvider and a set of helper ImageProviders, which serve as a source of image data for the widget. ByteImageProvider allows to display raw byte data, RasterImageProvider allows to load a raster image and display it, VectorImageProvider allows to load vector image, rasterize it and display.

  • TreeView: rewrote to avoid using ImGui table

  • TreeView: the ability to reorder items

  • Added new extension omni.graph.ui that allows inspect omni.graph and UsdShade networks as graph view

  • Delayed UI population with Frame.set_build_fn

  • Ability to overlay existing windows

  • Bugfix: Fixed possible freeze/crash on window resize.

  • Bugfix: TreeView: fixed selection lag and selection crash

  • Bugfix: CheckBox: fixed disabled state

  • Bugfix: CollapsibleFrame: fixed margin and padding

Kit Application UI/Material Workflow

  • Toolbar has been moved from C++ to python using omni.ui.

  • Layers

  • Layers window has been written with omni.ui and moved to python extension.

  • It supports live mode control per single layer.

  • Improvements to Cache/Live mode indicator.

  • Content Window now supports multiple servers at the same time. All local drives will also be listed by default.

  • Global login window is removed. On-demand login will popup when needed.

  • “file:” prefix is removed from local file path returned in FileDialog and in Content Window’s address bar (pending cherry-picking)

  • Improve the collect tool to optimize the collect performance.

  • Improve asset importer to support FBX version under 7.

  • New Copy Service extension for copying files between Nucleus and local file servers.

  • Stage widget type column on by default

  • Stage Widget show/hide columns

  • Bugfix: Certain aliasing on UI images has been improved.

  • Bugfix: Rasterized svg glyph is now center aligned

Cloud and Microservices

  • Kit control port extension is now part of Omniverse. It forms the base of the micro services framework that is being built around it. It

  • Kit-services is an application that makes it easy to get going with Kit and its micro services framework. Build, run and deploy kit microservices.

  • Basic facilities that make it easier to write stateless services using dependency injection.

Hydra Viewport

  • Early preview of the new hydra viewport extension in kit, accessed by running kit-hydra.bat in Windows. This viewport renders the USD world using render delegate plugins like Pixar’s OpenGL based hdStorm and hdEmbree. This allows kit to run on machines with non-RTX GPUs and be embedded in lightweight, quick loading experiences. The hydra viewport is not yet feature complete, but picking and camera controls are implemented.

Viewport Window

  • Performance improvements for UI draw event stream events creation/dispatch

  • Viewport context menu add group selected

  • Viewport window prim selection fix for context menu

Ansel

  • Cleaned up Ansel extension matrix code

  • Default save folder matches recommended Ansel default folder

Materials

  • Improved OmniGlass has more intuitive controls to simulate refractive materials. Please note, in some cases there can be a look change.

  • New OmniPBR_ClearCoat is a multi-layer physical material that adds an additional clear thin coat to OmniPBR.

  • Both materials also have Opacity versions that add cutout opacity mapping support.

Physics & Simulation - General

  • Debug visualization fixes

  • Grab with force can have now force value defined in Physics settings window

  • Fixed runtime switch of collision shapes inside bodies

  • Updated Physics demos to new UI, added custom parameters to demos

  • Improved convex decomposition performance and quality

  • Debug visualization for collisions supports time varying transformations

  • Physics demos are created under default prim

  • Improved errors while parsing physics data out of USD

  • Commands for physics menu - undo/redo works for physics menu

  • Undo/redo for physics properties changes

  • Physics error stream added

  • Support for distance joint springs

  • New PSCL (physics scripting language) demos

  • Documentation for physics extensions

  • Documentation for physics python bindings

  • Exposed disable gravity on PhysxRigidBodyAPI

  • Blast extension support for impact based damage

Physics & Simulation - Vehicles

  • Support for PhysX vehicles

  • Default input device support to drive a vehicle

  • Custom camera types

  • Special property windows

  • Vehicle creation wizard

  • Samples

Physics & Simulation - Blast

  • Voronoi fracture of UsdGeomMesh

  • “Explode view” of fractured chunks

  • Multilevel fracture - can select chunks in explode view (or stage view) and fracture those further

  • Ability to set interior materials of fractured meshes

  • Fracturing a mesh with a PhysicsAPI creates a destructible rigid body

  • Ability to choose kinematic or dynamic physics mode for the initial destructible rigid body

  • Can select multiple meshes and create a combined-mesh destructible

  • Reset feature deletes blast object and restores original mesh

  • Impact damage option

  • Contact threshold

  • Ability to attach a blast destructible to the static world or a dynamic rigid body

  • Damage profiles: radial, cutter, and impact spread

  • Base damage amount

  • Min/max damage distance

  • Impulse to apply to chunks when taking damage

  • Impact-to-damage setting

  • Max contact impulse, to allow heavy objects to pass through “weak” destructibles (such as a cannonball through a window)