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)