Code Monkey home page Code Monkey logo

cesium-omniverse's People

Contributors

brianwthomas avatar corybarr avatar jshrake-nvidia avatar kring avatar lilleyse avatar mattelser avatar r-veenstra avatar shehzan10 avatar timoore avatar weegeekps avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cesium-omniverse's Issues

Re-enable compiler warnings

Warnings are temporarily disabled. We should re-enable them and fix the issues.

if(MSVC)
set(CESIUM_OMNI_CXX_FLAGS
${CESIUM_OMNI_CXX_FLAGS}
# TODO: temporarily disable warnings
#/W4 # enable all warnings
#/WX # error on warnings
/Zc:__cplusplus # make __cplusplus defined correctly
)

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CESIUM_OMNI_CXX_FLAGS
${CESIUM_OMNI_CXX_FLAGS}
# TODO: temporarily disable warnings
# -Werror
# -Wall
# -Wextra
# -Wpedantic
# -Wparentheses
# -Wreturn-type
# -Wmissing-braces
# -Wunknown-pragmas
# -Wshadow
# -Wunused
# -Wuninitialized
# -Wconversion
# -Wno-missing-field-initializers
# -fstrict-aliasing
# -fstrict-enums
)

Need for origin rebasing?

We should be able to quantify

  • Depth precision
  • Vertex transform precision

Omniverse does 64-bit matrix math under the hood, so theoretically could support techniques like Relative To Center for high precision rendering. My suspicion is that the RTX pipeline (including BVH construction, ray tracing) is different enough that it may not have this, but we should check.

If not, we may need to implement origin rebasing similar to Cesium for Unreal, or sub-scenes in Cesium for Unity.

Background reading:

Fetch Nvidia libraries ourselves

Several Nvidia libraries are needed to build Cesium Omniverse - Nvidia's USD fork, Python 3.7, and likely Omniverse Client once we start interacting with Nucleus. Currently we require users to install Connect Sample 200.0.0 and run build.bat which will fetch these libraries from Pacman. Then our CMake project links to these libraries.

From the README:

Install Connect Sample 200.0.0 (use this exact version) with the default install location. The reason we need Connect Sample is because it downloads some dependencies that we need including USD and OmniClient. In the future we should download these dependencies ourself.

This approach was inspired by https://github.com/PatrickPalmer/Omniverse-Connect-cmake which was inspired by https://forums.developer.nvidia.com/t/creating-an-omniverse-usd-app-from-the-connect-sample/189557.

Super easy way to get started, but we should be fetching the libraries as part of our CMake build process. We should poke around the Connect Sample 200.0.0 code to see how it's done there.

Handle unlit materials

If a glTF uses the KHR_materials_unlit extension we should render with an unlit material and not generate normals.

We could also give some control to the user. There could be a drop-down list to override the default behavior. The options would be UNLIT, LIT, or AUTO.

Error loading .pyd with coverage symbols

When building a static debug library with coverage enabled on Linux we see the following error in Omniverse Code:

2022-11-02 19:06:52  [Error] [omni.ext.impl.custom_importer] Failed to import python module cesium.omniverse. Error: ...snip.../cesium/omniverse/bindings/cesium/omniverse/CesiumOmniversePythonBindings.cpython-37m-x86_64-linux-gnu.so: undefined symbol: llvm_gcda_emit_arcs. Traceback:

To reproduce:

cmake -B build-debug -D CMAKE_C_COMPILER=gcc-9 -D CMAKE_CXX_COMPILER=g++-9 -D CMAKE_BUILD_TYPE=Debug -D CESIUM_OMNI_ENABLE_COVERAGE=ON -D BUILD_SHARED_LIBS=OFF
cmake --build build-debug --parallel 8
cmake --install build-debug --prefix ../cesium-kit-exts/exts/cesium.omniverse/cesium/omniverse/bindings/cesium/omniverse/ --component kit
# Then load the extension in Omniverse Code

This seems like a problem with pybind11. One way to work around it is to set -D BUILD_SHARED_LIBS=ON. Unfortunately this triggers a different bug in the build system: #30.

USD depth-bias support

USD currently does not support depth-bias for gPrims, so all meshes are rendered from back to front. This is an issue for us when we start working with overlaying construction sites and other props that may have sections that go lower than the tileset.

Autodesk opened an issue and pull request for a similar need in 2021 but the PR was abandoned as the Pixar team had some issues with it. The USD team is definitely open to the idea but they need someone to champion it.

We should be that champion, as this will continue to be a major issue for us.

Coordinate systems

According to https://forums.developer.nvidia.com/t/usd-coordinate-system/201914:

  • USD stage is right-handed
  • USD stage coordinate system can be Y-up or Z-up (default is Y-up)
  • USD stage meters-per-unit is configurable (default is 0.01, a.k.a centimeter units)

3D Tiles is right-handed, Z-up, and meters (from the spec)

Special care should be taken so that 3D Tiles are positioned/scaled correctly in the scene

Centimeters are currently hard coded and we need to make this more generic. A good solution would be to check the USD state for the unit and change our tiles respectively.

Programmatically increase far plane

The default far plane distance is too small when we create a scene with centimeter units. Our kit extension should be able to adjust this setting dynamically.

far-plane

Tile flashing artifacts

When we are using OmniPBR, there is a brief flash of white while tiles are loading. This does not appear to be related to the synchronous material loads problem we were having earlier.

white_flashing.mp4

Versioning

This project is composed of a few different parts:

  • C++ library for streaming 3D Tiles into a USD stage
  • Python library that wraps the C++ streaming library
  • Omniverse Kit extension - front-end UI that can be added to Omniverse Code, Omniverse Create
  • ... future libraries
  • ... future kit extensions

Are these versioned separately or together? The kit extension version is here and the change log is here. This is what's shown when loading the extension in Omniverse Code/Create. Meanwhile the C++ library version is here. If we want to version everything together we need to be careful that these don't get out of sync.

I think it makes more sense if the C++/Python library are versioned separately from the Kit extensions since the C++ library may have users outside of the Omniverse ecosystem.

Improve Debugging

Debugging is currently hacky. The solution found for #1 works but we could do better when we have time.

More details TBD.

Switch to MDL materials

There are some problems with UsdPreviewSurface in Omniverse:

  • Transform2d node doesn't seem to work (we need this for raster imagery)
  • Strange behavior when using primvars for UV coordinates
  • opacity below 1.0 causes model to become completely transparent

Instead of going much further in this direction we should use MDL directly. OmniPBR template is a good starting point. It has texture translate/scale controls that we need to finish implementing raster overlays #15.

Resources:

Here's the branch where I tried to get Transform2d working: https://github.com/CesiumGS/cesium-omniverse/commits/material-improvements

Github Actions CI

We should set up Github Actions in this repo. Each job would:

  • Build Conan libraries (and cache them)
  • Fetch Nvidia libraries #7 (and cache them)
  • Configure and build
  • Check clang-format
  • Check clang-tidy
  • Run tests
  • Run coverage
  • Generate documentation
  • Package

We would set this up for Ubuntu GCC and Windows MSVC. For compatibility with older GLIBC systems we might need to have a CentOS Docker container do the packaged release builds. See how this is done in our internal repos.

Other thoughts:

  • Not sure what to do for Omnvierse Kit extensions

Python API

Related to #3 and #4

We should have a lightweight Python API that wraps the C++ 3D Tiles streaming API.

This is the API used by our Omniverse Kit extensions. It should also be generic enough that it can be used by other Kit extensions and even non-Omniverse Python code.

Currently we use pybind11 to generate a Python Dynamic Module (.pyd), which includes some baked-in documentation. See PythonBindings.cpp. In addition to this we probably need some basic .py wrapper code to create a proper Python module.

C API

We should consider providing an ABI stable C interface for CesiumOmniverse, inspired by the concept of Omniverse Native Interfaces (ONI) as described in the Carbonite SDK documentation.

The initial skeleton of this can be found in CesiumOmniverse.h. We would need to think of an elegant way to pass through USD objects such as UsdStageRefPtr and GfMatrix4d.

This also affects the Python API which is essentially just a wrapper of the C++ API. If we switched to a C API we could consider switching from pybind11 to cython.

Shading artifacts on tile edges

Smooth normals look bad on tile edges where there are terrain skirts.

Ways to fix this:

  • If we have control over normal generation, generate hard normals for terrain skirts and smooth normals for the interior triangles
  • Disable terrain skirts in cesium-native (that's what nowarn was doing)
  • Unlit materials: #36

image

Packaging and publishing

  • Decide how to package the C++ and Python libraries. As far as tooling goes CPack has worked well for at least one internal Cesium project. This should be straightforward since we already have an install target that installs the libs and headers. Packaged builds would be hosted on the GitHub releases page.
  • Should the C++ std library be statically linked or not? I can't find the link anymore, but I believe this was recommended somewhere in the Carbonite documentation. Currently it's dynamically linked which means users would need to install the redistributables.
  • Decide how to pack the Omniverse Kit extensions. Note that the extension bundles the .pyd file and its dependencies, which includes the USD libraries and Python 3.7. Is this considered ok practice? How do we get these onto Omniverse Exchange?

Hot reloading

Omniverse Code will automatically hot-reload extensions when files that match the fswatcher pattern are changed. This works pretty well for Python code. Hot reloading C++ code is more complicated for several reasons:

  • We may need to clear the USD stage after each hot-reload, or some other "reset" behavior
  • The C++ code is built as a Python Dynamic Module (.pyd) โ€” essentially a DLL โ€” and the Python interpreter within Omniverse Code will hold onto this until program exit. Therefore trying to replace the file at runtime with a new version is not permitted by Windows.

One possibility is to handle the hot-reloading completely within the DLL's. On every update CesiumOmniversePythonBindings.cp37-win_amd64.pyd could check if a new variant of CesiumOmniverse[N].dll has been created and dynamically load it.

Also see:

HTTP status code 0 error on Linux

We can't run the extension on Linux right now due an HTTP status code error. We should fix this as soon as possible.

Untitled

2022-11-02 19:45:31  [Info] [omni.usd] - Received status code 0 for asset response https://api.cesium.com/v1/assets/1/endpoint?access_token=...

Figure out why `forbidHoles` isn't working

tileset->getOptions().forbidHoles = true doesn't seem to work. Holes appear on the edges of the screen as the camera is rotating.

A similar thing happens in Unreal in editor mode but not play mode. According to @nithinp7

In Unreal, the holes on the edge of the screen come from a one-frame delay between the editor camera position as the renderer knows it vs the editor camera position as the tileset traversal is aware of it

Could something similar be happening in Omniverse?

holes

Once we fix this, we should delete tileset->getOptions().enableFrustumCulling = false

Bring changes from `main-old` into `main`

main-old is the original demo branch of Cesium for Omniverse and we'd like to stop developing on it as soon as possible.

There are a few things we have to bring over to main before we can delete the branch:

  • The USD asset resolver plugin. This allows us to load in-memory textures. To summarize the old readme we need to:
    • Add instructions for setting the PXR_PLUGINPATH_NAME environment variable and creating the mem.cesium file.
    • Install pluginInfo.json into the bindings directory. See CMakeLists.txt#L69-L73.
  • Meters to centimeters conversion from c61ef95

List of third party libraries

Similar to other Cesium projects, we should maintain a ThirdParty.json file in this repo.

  • The build system automatically generates ThirdParty.json but it does not include Nvidia libraries currently

Blue areas while textures are loading

While a prim's textures are loading it has bright blue placeholder material. This is really distracting when loading 3D Tiles.

There are few possible fixes here:

  • Force USD to not mark a prim as loaded until textures are loaded
  • Decode PNG/JPEG as raw RGBA and wrap in a DDS or other uncompressed format
  • Save texture to disk prior instead of storing in memory. See if this changes USD behavior / performance.
Code.2022.2.0-rc.2.-.New.Stage_.2022-09-28.12-39-43.mp4

RuntimeError: Failed to acquire interface

If you try running usdrt-test on Linux you'll see the error:

2022-12-16 19:35:33 [49,101ms] [Error] [carb.scripting-python.plugin] RuntimeError: Failed to acquire interface: cesium::omniverse::ICesiumOmniverseInterface (pluginName: nullptr)

At:
  /home/slilley/Code/cesium-omniverse/exts/cesium.omniverse/cesium/omniverse/extension.py(51): on_startup
  /home/slilley/.local/share/ov/pkg/deps/82b461274b877b7d5e1a405066cfd47a/kernel/py/omni/ext/_impl/_internal.py(148): _startup_ext
  /home/slilley/.local/share/ov/pkg/deps/82b461274b877b7d5e1a405066cfd47a/kernel/py/carb/profiler/__init__.py(81): wrapper
  /home/slilley/.local/share/ov/pkg/deps/82b461274b877b7d5e1a405066cfd47a/kernel/py/omni/ext/_impl/_internal.py(197): startup
  /home/slilley/.local/share/ov/pkg/deps/82b461274b877b7d5e1a405066cfd47a/kernel/py/omni/ext/_impl/_internal.py(280): startup_extension
  PythonExtension.cpp::startup()(2): <module>

2022-12-16 19:35:33 [49,101ms] [Error] [omni.ext.plugin] [ext: cesium.omniverse-0.0.0] Failed to startup python extension.

This can be reproduced on main as well by just linking usdrt in src/core/CMakeLists.txt

Some observations so far:

  • The libusdrt.scenegraph.plugin.so file that ships with kit is significantly smaller than the libusdrt.scenegraph.plugin.so that ships with packman. This is not true for Windows.
  • usdrt is an Omniverse Native Interface but out plugin is Carbonite Interface. Normally Carbonite interfaces can declare dependencies on other Carbonite Interfaces but I'm not sure if Carbonite can declare dependencies on Omniverse Native Interfaces.
  • There's a note in the Carbonite Interface doc that could be relevant.
    /// Note that because of some dynamic linking behavior on Linux, it is possible that on
    /// unload this module could be shutdown but not actually unloaded from memory.  This would
    /// prevent any global variables from being reset or cleaned up during C++ static
    /// deinitialization.  However, if the plugin were loaded into the process again later,
    /// C++ static initialization would not occur since the module was not previously unloaded.
    /// Thus it is important to perform any and all global and static cleanup explicitly here.

Unit tests

The C++ unit test infrastructure is set up but there aren't any meaningful unit tests yet. We're using doctest.

Since the C++ library interacts with a USD stage and has no hard dependency on Omniverse or even a 3D context, we can mock a lot of streaming behavior in a headless way.

We may need to write additional unit tests for the Omniverse Kit extensions (Python code) but it's not clear what those would be yet or what the tooling would look like.

Error loading .pyd as static library when built in debug mode

When building a static debug library on Linux we see the following error in Omniverse Code:

2022-11-02 19:57:34  [Error] [omni.ext.python] ImportError: /home/slilley/Code/cesium-omniverse/cesium-kit-exts/exts/cesium.omniverse/cesium/omniverse/bindings/cesium/omniverse/CesiumOmniversePythonBindings.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN14CesiumGeometry3RayC1ERKN3glm3vecILm3EdLNS1_9qualifierE0EEES6_

pybind11 might be the culprit because if we build cesium-omniverse as a shared library the problem goes away. Likely related to #32. Another related issues is that shared libraries aren't installed correctly, CC #30.

UI

The Omniverse Kit extension UI should resemble the Cesium for Unreal, Cesium for Unity, and Cesium for O3DE UIs so that there's a consistent user experience across engines.

  • Ability to load tileset from path or asset id / access token
  • Ability to change georeference origin
  • Debugging aids
  • ...

Cache USD instead of glTF

We use cesium-native for 3D Tiles streaming, loading, and caching. Tiles are cached as glTF blobs in a local sqlite database.

Since we need to convert glTF to USD to bring it into Omniverse, it would be more efficient if we could store USD in the cache so that we don't have to perform this conversion every time a tile is loaded from the cache.

Related to and will likely build on the work in CesiumGS/cesium-native#566

Improve Python IntelliSense for Kit extensions

We use the Pylance extension in VS Code which provides code completion, code navigation, etc as we develop Omniverse Kit extensions.

In order to locate Omniverse python modules we include them in python.analysis.extraPaths. The problem is Pylance does not support globs so we have to list all the modules manually which is error prone:

// Python modules search paths:
"python.analysis.extraPaths": [
"${workspaceFolder}/exts/cesium.omniverse",
"${workspaceFolder}/app/kit/extscore/omni.kit.pip_archive/pip_prebundle",
"${workspaceFolder}/app/kit/plugins/bindings-python",
"${workspaceFolder}/app/extscache/kaolin_app.research.dataset_visualizer-1.0.0+cp37",
"${workspaceFolder}/app/extscache/kaolin_app.research.training_visualizer-1.0.0+cp37",
"${workspaceFolder}/app/extscache/kaolin_app.research.utils-1.0.0+cp37",
"${workspaceFolder}/app/extscache/omni.anim.curve-103.7.13+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.anim.curve_editor-103.7.14+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.anim.graph.bundle-103.5.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.anim.graph.core-103.5.3+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.anim.graph.ui-103.5.2+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.anim.retarget.bundle-103.5.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.anim.retarget.core-103.5.2+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.anim.retarget.ui-103.5.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.anim.shared-103.7.1+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.anim.skelJoint-103.3.2+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.anim.timeline-103.0.4+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.anim.window.timeline-103.5.18+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.contest.popup-1.0.2",
"${workspaceFolder}/app/extscache/omni.curve.creator-103.0.1+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.curve.manipulator-103.6.1+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.curve.nodes-103.3.3+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.graph.visualization.nodes-1.2.0+cp37",
"${workspaceFolder}/app/extscache/omni.graph.window.action-1.3.9",
"${workspaceFolder}/app/extscache/omni.graph.window.core-1.29.1+cp37",
"${workspaceFolder}/app/extscache/omni.graph.window.generic-1.3.9+cp37",
"${workspaceFolder}/app/extscache/omni.graph.window.particle.system-103.1.16+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.asset_converter-1.2.34+wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.kit.browser.asset-1.1.11",
"${workspaceFolder}/app/extscache/omni.kit.browser.asset_provider.actorcore-1.0.5",
"${workspaceFolder}/app/extscache/omni.kit.browser.asset_provider.local-1.0.8",
"${workspaceFolder}/app/extscache/omni.kit.browser.asset_provider.sketchfab-1.0.9",
"${workspaceFolder}/app/extscache/omni.kit.browser.asset_provider.turbosquid-1.0.8",
"${workspaceFolder}/app/extscache/omni.kit.browser.asset_store-1.0.2",
"${workspaceFolder}/app/extscache/omni.kit.browser.core-2.0.15",
"${workspaceFolder}/app/extscache/omni.kit.browser.folder.core-1.3.0",
"${workspaceFolder}/app/extscache/omni.kit.browser.material-1.2.15",
"${workspaceFolder}/app/extscache/omni.kit.browser.sample-1.0.10",
"${workspaceFolder}/app/extscache/omni.kit.capture.viewport-1.1.14",
"${workspaceFolder}/app/extscache/omni.kit.debug.settings-0.1.1",
"${workspaceFolder}/app/extscache/omni.kit.environment.core-1.0.35",
"${workspaceFolder}/app/extscache/omni.kit.graph.delegate.default-1.0.16+cp37",
"${workspaceFolder}/app/extscache/omni.kit.graph.delegate.modern-1.6.1",
"${workspaceFolder}/app/extscache/omni.kit.graph.delegate.neo-1.0.4+cp37",
"${workspaceFolder}/app/extscache/omni.kit.graph.docs-1.0.4+cp37",
"${workspaceFolder}/app/extscache/omni.kit.graph.editor.core-1.4.1",
"${workspaceFolder}/app/extscache/omni.kit.graph.editor.example-1.0.15",
"${workspaceFolder}/app/extscache/omni.kit.graph.usd.commands-1.2.0",
"${workspaceFolder}/app/extscache/omni.kit.graph.widget.variables-2.0.3",
"${workspaceFolder}/app/extscache/omni.kit.livestream.websocket-2.6.4+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.kit.mesh.raycast-103.8.3+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.kit.pointclouds-0.0.13",
"${workspaceFolder}/app/extscache/omni.kit.preferences.time-0.1.0+cp37",
"${workspaceFolder}/app/extscache/omni.kit.profiler.window-2.0.2",
"${workspaceFolder}/app/extscache/omni.kit.property.environment-1.0.15",
"${workspaceFolder}/app/extscache/omni.kit.property.example-1.0.2",
"${workspaceFolder}/app/extscache/omni.kit.property.sequence-0.1.0+cp37",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.actions-0.8.10",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.commands-1.1.3",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.hdri-0.8.9",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.material-0.8.6",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.menu-0.8.6",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.props-0.8.5",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.select-0.8.3",
"${workspaceFolder}/app/extscache/omni.kit.quicksearch.settings-0.8.4",
"${workspaceFolder}/app/extscache/omni.kit.sequencer.core-103.2.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.sequencer.usd-103.2.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.stage_column.payload-1.0.6+cp36.cp37",
"${workspaceFolder}/app/extscache/omni.kit.stage_column.variant-1.0.4+cp36.cp37",
"${workspaceFolder}/app/extscache/omni.kit.thumbnails.images-0.2.3+cp37",
"${workspaceFolder}/app/extscache/omni.kit.thumbnails.mdl-1.0.16",
"${workspaceFolder}/app/extscache/omni.kit.thumbnails.usd-0.5.2+cp37",
"${workspaceFolder}/app/extscache/omni.kit.tool.asset_exporter-1.1.8",
"${workspaceFolder}/app/extscache/omni.kit.tool.asset_importer-2.3.21",
"${workspaceFolder}/app/extscache/omni.kit.usd_docs-1.0.5+cp37",
"${workspaceFolder}/app/extscache/omni.kit.viewport.stage_preview-1.0.4+cp37",
"${workspaceFolder}/app/extscache/omni.kit.widget.calendar-1.0.5",
"${workspaceFolder}/app/extscache/omni.kit.widget.collection-0.1.9",
"${workspaceFolder}/app/extscache/omni.kit.widget.material_preview-1.0.6+cp37",
"${workspaceFolder}/app/extscache/omni.kit.widget.searchable_combobox-1.0.4+cp37",
"${workspaceFolder}/app/extscache/omni.kit.widget.searchfield-1.0.6",
"${workspaceFolder}/app/extscache/omni.kit.widget.sliderbar-1.0.10",
"${workspaceFolder}/app/extscache/omni.kit.widget.timeline-103.5.1+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.widget.zoombar-1.0.3",
"${workspaceFolder}/app/extscache/omni.kit.widgets.custom-1.0.4",
"${workspaceFolder}/app/extscache/omni.kit.window.collection-0.1.8",
"${workspaceFolder}/app/extscache/omni.kit.window.environment-1.1.8",
"${workspaceFolder}/app/extscache/omni.kit.window.material-1.0.19",
"${workspaceFolder}/app/extscache/omni.kit.window.material_graph-1.5.7",
"${workspaceFolder}/app/extscache/omni.kit.window.modifier.titlebar-103.0.1+wx64.r",
"${workspaceFolder}/app/extscache/omni.kit.window.movie_capture-2.1.0",
"${workspaceFolder}/app/extscache/omni.kit.window.quicksearch-2.3.1",
"${workspaceFolder}/app/extscache/omni.kit.window.sequencer-103.2.1+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.xr.common-103.5.1+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.xr.core-103.5.1+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.kit.xr.profile.tabletar-103.5.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.kit.xr.system.cloudxr21-103.5.0+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.kit.xr.system.playback-103.5.0+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.kit.xr.system.simulatedxr-103.5.0+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.paint.brush.attribute-103.4.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.brush.modify-103.2.1+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.brush.primvars-103.5.1+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.brush.scatter-103.2.1+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.brush.scripting-103.8.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.brush.select-103.2.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.system.bundle-103.5.5+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.system.core-103.5.3+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.paint.system.ui-103.5.5+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.particle.system.bundle-103.2.21+103.5",
"${workspaceFolder}/app/extscache/omni.particle.system.core-103.5.2+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.particle.system.ui-103.3.0+103.5.cp37",
"${workspaceFolder}/app/extscache/omni.ramp-103.0.13+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.replicator.core-1.4.4+wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.replicator.core-1.4.7+wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.scene.visualization.core-103.4.2+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.services.browser.asset-1.2.7",
"${workspaceFolder}/app/extscache/omni.services.client-0.4.0+cp37",
"${workspaceFolder}/app/extscache/omni.services.core-1.2.0+cp37",
"${workspaceFolder}/app/extscache/omni.services.facilities.base-1.0.2+cp37",
"${workspaceFolder}/app/extscache/omni.services.facilities.monitoring.metrics-0.2.1+cp37",
"${workspaceFolder}/app/extscache/omni.services.facilities.monitoring.progress-0.2.2+cp37",
"${workspaceFolder}/app/extscache/omni.services.pip_archive-0.4.0+cp37",
"${workspaceFolder}/app/extscache/omni.services.streamclient.webrtc-1.3.6",
"${workspaceFolder}/app/extscache/omni.services.streamclient.websocket-1.4.5",
"${workspaceFolder}/app/extscache/omni.services.streaming.manager-0.3.3",
"${workspaceFolder}/app/extscache/omni.services.thumbnails.mdl-0.1.3+cp37",
"${workspaceFolder}/app/extscache/omni.services.transport.client.base-1.2.0+cp37",
"${workspaceFolder}/app/extscache/omni.services.transport.client.http_async-1.3.2+cp37",
"${workspaceFolder}/app/extscache/omni.services.transport.server.base-1.0.3+cp37",
"${workspaceFolder}/app/extscache/omni.services.transport.server.http-1.1.2+cp37",
"${workspaceFolder}/app/extscache/omni.services.tutorials.menu-1.1.1+cp37",
"${workspaceFolder}/app/extscache/omni.services.tutorials.one-1.0.1+cp37",
"${workspaceFolder}/app/extscache/omni.services.tutorials.setup-1.0.0+cp37",
"${workspaceFolder}/app/extscache/omni.services.tutorials.two-1.0.1+cp37",
"${workspaceFolder}/app/extscache/omni.ui.scene.docs-1.3.3+cp37",
"${workspaceFolder}/app/extscache/omni.usd.fileformat.e57-0.1.6+wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.usd.schema.sequence-2.1.1+103.5.wx64.r.cp37",
"${workspaceFolder}/app/extscache/omni.warp-0.4.1+cp37",
"${workspaceFolder}/app/extscache/semantics.schema.editor-0.2.3+cp37",
"${workspaceFolder}/app/exts/omni.code.app.resources",
"${workspaceFolder}/app/exts/omni.code.app.setup",
"${workspaceFolder}/app/exts/omni.code.splash",
"${workspaceFolder}/app/kit/extsphysics/omni.blockworld-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.convexdecomposition-1.4.18",
"${workspaceFolder}/app/kit/extsphysics/omni.kit.property.physx",
"${workspaceFolder}/app/kit/extsphysics/omni.kvdb",
"${workspaceFolder}/app/kit/extsphysics/omni.localcache",
"${workspaceFolder}/app/kit/extsphysics/omni.physics.tensors-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.bundle-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.camera-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.camera.tests-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.cct-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.commands-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.demos-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.flatcache-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.forcefields-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.preview-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.pvd-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.tensors-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.tests-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.tests.visual-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.ui-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.vehicle-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.vehicle.tests-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.zerogravity-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.physx.zerogravity.tests-1.4.18-5.1",
"${workspaceFolder}/app/kit/extsphysics/omni.usd.schema.forcefield",
"${workspaceFolder}/app/kit/extsphysics/omni.usd.schema.physics",
"${workspaceFolder}/app/kit/extsphysics/omni.usd.schema.physx",
"${workspaceFolder}/app/kit/extsphysics/omni.usdphysics-1.4.18",
"${workspaceFolder}/app/kit/extsphysics/omni.usdphysics.tests-1.4.18",
"${workspaceFolder}/app/kit/extscore/carb.audio",
"${workspaceFolder}/app/kit/extscore/carb.windowing.plugins",
"${workspaceFolder}/app/kit/extscore/omni.appwindow",
"${workspaceFolder}/app/kit/extscore/omni.assets",
"${workspaceFolder}/app/kit/extscore/omni.assets.plugins",
"${workspaceFolder}/app/kit/extscore/omni.client",
"${workspaceFolder}/app/kit/extscore/omni.gpu_foundation",
"${workspaceFolder}/app/kit/extscore/omni.hydra.engine.stats",
"${workspaceFolder}/app/kit/extscore/omni.hydra.iray",
"${workspaceFolder}/app/kit/extscore/omni.hydra.pxr",
"${workspaceFolder}/app/kit/extscore/omni.hydra.rtx",
"${workspaceFolder}/app/kit/extscore/omni.hydra.scene_api",
"${workspaceFolder}/app/kit/extscore/omni.hydra.scene_delegate",
"${workspaceFolder}/app/kit/extscore/omni.hydra.ui",
"${workspaceFolder}/app/kit/extscore/omni.kit.agent",
"${workspaceFolder}/app/kit/extscore/omni.kit.app_snippets",
"${workspaceFolder}/app/kit/extscore/omni.kit.async_engine",
"${workspaceFolder}/app/kit/extscore/omni.kit.autocapture",
"${workspaceFolder}/app/kit/extscore/omni.kit.commands",
"${workspaceFolder}/app/kit/extscore/omni.kit.console",
"${workspaceFolder}/app/kit/extscore/omni.kit.context_menu",
"${workspaceFolder}/app/kit/extscore/omni.kit.core.tests",
"${workspaceFolder}/app/kit/extscore/omni.kit.extpath.git",
"${workspaceFolder}/app/kit/extscore/omni.kit.livestream.core",
"${workspaceFolder}/app/kit/extscore/omni.kit.loop-default",
"${workspaceFolder}/app/kit/extscore/omni.kit.mainwindow",
"${workspaceFolder}/app/kit/extscore/omni.kit.manipulator.camera",
"${workspaceFolder}/app/kit/extscore/omni.kit.manipulator.prim",
"${workspaceFolder}/app/kit/extscore/omni.kit.manipulator.selection",
"${workspaceFolder}/app/kit/extscore/omni.kit.manipulator.tool.snap",
"${workspaceFolder}/app/kit/extscore/omni.kit.manipulator.transform",
"${workspaceFolder}/app/kit/extscore/omni.kit.material.library",
"${workspaceFolder}/app/kit/extscore/omni.kit.menu.create",
"${workspaceFolder}/app/kit/extscore/omni.kit.menu.utils",
"${workspaceFolder}/app/kit/extscore/omni.kit.pipapi",
"${workspaceFolder}/app/kit/extscore/omni.kit.pip_archive",
"${workspaceFolder}/app/kit/extscore/omni.kit.profile_python",
"${workspaceFolder}/app/kit/extscore/omni.kit.registry.nucleus",
"${workspaceFolder}/app/kit/extscore/omni.kit.renderer.capture",
"${workspaceFolder}/app/kit/extscore/omni.kit.renderer.core",
"${workspaceFolder}/app/kit/extscore/omni.kit.renderer.init",
"${workspaceFolder}/app/kit/extscore/omni.kit.splash",
"${workspaceFolder}/app/kit/extscore/omni.kit.streamsdk.plugins",
"${workspaceFolder}/app/kit/extscore/omni.kit.test",
"${workspaceFolder}/app/kit/extscore/omni.kit.test_app_compat",
"${workspaceFolder}/app/kit/extscore/omni.kit.test_async_rendering",
"${workspaceFolder}/app/kit/extscore/omni.kit.test_helpers_gfx",
"${workspaceFolder}/app/kit/extscore/omni.kit.test_suite.helpers",
"${workspaceFolder}/app/kit/extscore/omni.kit.uiapp",
"${workspaceFolder}/app/kit/extscore/omni.kit.ui_test",
"${workspaceFolder}/app/kit/extscore/omni.kit.usd_undo",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.menubar.camera",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.menubar.core",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.menubar.display",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.menubar.render",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.menubar.settings",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.registry",
"${workspaceFolder}/app/kit/extscore/omni.kit.viewport.window",
"${workspaceFolder}/app/kit/extscore/omni.kit.widget.viewport",
"${workspaceFolder}/app/kit/extscore/omni.kit.window.privacy",
"${workspaceFolder}/app/kit/extscore/omni.kit.window.splash",
"${workspaceFolder}/app/kit/extscore/omni.kit.window.viewport",
"${workspaceFolder}/app/kit/extscore/omni.mdl",
"${workspaceFolder}/app/kit/extscore/omni.mdl.neuraylib",
"${workspaceFolder}/app/kit/extscore/omni.renderer-rtx",
"${workspaceFolder}/app/kit/extscore/omni.stats",
"${workspaceFolder}/app/kit/extscore/omni.syntheticdata",
"${workspaceFolder}/app/kit/extscore/omni.timeline",
"${workspaceFolder}/app/kit/extscore/omni.ui",
"${workspaceFolder}/app/kit/extscore/omni.ui.scene",
"${workspaceFolder}/app/kit/extscore/omni.ui_query",
"${workspaceFolder}/app/kit/extscore/omni.usd",
"${workspaceFolder}/app/kit/extscore/omni.usd.config",
"${workspaceFolder}/app/kit/extscore/omni.usd.libs",
"${workspaceFolder}/app/kit/extscore/omni.usd.schema.anim",
"${workspaceFolder}/app/kit/extscore/omni.usd.schema.audio",
"${workspaceFolder}/app/kit/extscore/omni.usd.schema.omnigraph",
"${workspaceFolder}/app/kit/extscore/omni.usd.schema.physics",
"${workspaceFolder}/app/kit/extscore/omni.usd.schema.semantics",
"${workspaceFolder}/app/kit/exts/omni.audioplayer",
"${workspaceFolder}/app/kit/exts/omni.audiorecorder",
"${workspaceFolder}/app/kit/exts/omni.command.usd",
"${workspaceFolder}/app/kit/exts/omni.debugdraw",
"${workspaceFolder}/app/kit/exts/omni.example.ui",
"${workspaceFolder}/app/kit/exts/omni.flowusd",
"${workspaceFolder}/app/kit/exts/omni.graph",
"${workspaceFolder}/app/kit/exts/omni.graph.action",
"${workspaceFolder}/app/kit/exts/omni.graph.bundle.action",
"${workspaceFolder}/app/kit/exts/omni.graph.core",
"${workspaceFolder}/app/kit/exts/omni.graph.examples.cpp",
"${workspaceFolder}/app/kit/exts/omni.graph.examples.python",
"${workspaceFolder}/app/kit/exts/omni.graph.expression",
"${workspaceFolder}/app/kit/exts/omni.graph.instancing",
"${workspaceFolder}/app/kit/exts/omni.graph.io",
"${workspaceFolder}/app/kit/exts/omni.graph.nodes",
"${workspaceFolder}/app/kit/exts/omni.graph.scriptnode",
"${workspaceFolder}/app/kit/exts/omni.graph.test",
"${workspaceFolder}/app/kit/exts/omni.graph.tools",
"${workspaceFolder}/app/kit/exts/omni.graph.tutorials",
"${workspaceFolder}/app/kit/exts/omni.graph.ui",
"${workspaceFolder}/app/kit/exts/omni.hydra.pxr.settings",
"${workspaceFolder}/app/kit/exts/omni.inspect",
"${workspaceFolder}/app/kit/exts/omni.iray.settings.core",
"${workspaceFolder}/app/kit/exts/omni.kit.agent.watcher",
"${workspaceFolder}/app/kit/exts/omni.kit.audio.test.usd",
"${workspaceFolder}/app/kit/exts/omni.kit.audiodeviceenum",
"${workspaceFolder}/app/kit/exts/omni.kit.capture",
"${workspaceFolder}/app/kit/exts/omni.kit.collaboration.channel_manager",
"${workspaceFolder}/app/kit/exts/omni.kit.compatibility_checker",
"${workspaceFolder}/app/kit/exts/omni.kit.debug.python",
"${workspaceFolder}/app/kit/exts/omni.kit.debug.vscode",
"${workspaceFolder}/app/kit/exts/omni.kit.documentation.builder",
"${workspaceFolder}/app/kit/exts/omni.kit.example.toolbar_button",
"${workspaceFolder}/app/kit/exts/omni.kit.filebrowser_column.acl",
"${workspaceFolder}/app/kit/exts/omni.kit.filebrowser_column.tags",
"${workspaceFolder}/app/kit/exts/omni.kit.gfn",
"${workspaceFolder}/app/kit/exts/omni.kit.hydra_texture",
"${workspaceFolder}/app/kit/exts/omni.kit.livestream.native",
"${workspaceFolder}/app/kit/exts/omni.kit.livestream.webrtc",
"${workspaceFolder}/app/kit/exts/omni.kit.manipulator.viewport",
"${workspaceFolder}/app/kit/exts/omni.kit.menu.aov",
"${workspaceFolder}/app/kit/exts/omni.kit.menu.common",
"${workspaceFolder}/app/kit/exts/omni.kit.menu.edit",
"${workspaceFolder}/app/kit/exts/omni.kit.menu.file",
"${workspaceFolder}/app/kit/exts/omni.kit.multinode",
"${workspaceFolder}/app/kit/exts/omni.kit.notification_manager",
"${workspaceFolder}/app/kit/exts/omni.kit.numpy.common",
"${workspaceFolder}/app/kit/exts/omni.kit.primitive.mesh",
"${workspaceFolder}/app/kit/exts/omni.kit.procedural.mesh",
"${workspaceFolder}/app/kit/exts/omni.kit.property.audio",
"${workspaceFolder}/app/kit/exts/omni.kit.property.bundle",
"${workspaceFolder}/app/kit/exts/omni.kit.property.camera",
"${workspaceFolder}/app/kit/exts/omni.kit.property.file",
"${workspaceFolder}/app/kit/exts/omni.kit.property.geometry",
"${workspaceFolder}/app/kit/exts/omni.kit.property.layer",
"${workspaceFolder}/app/kit/exts/omni.kit.property.light",
"${workspaceFolder}/app/kit/exts/omni.kit.property.material",
"${workspaceFolder}/app/kit/exts/omni.kit.property.render",
"${workspaceFolder}/app/kit/exts/omni.kit.property.skel",
"${workspaceFolder}/app/kit/exts/omni.kit.property.tagging",
"${workspaceFolder}/app/kit/exts/omni.kit.property.transform",
"${workspaceFolder}/app/kit/exts/omni.kit.property.usd",
"${workspaceFolder}/app/kit/exts/omni.kit.quicklayout",
"${workspaceFolder}/app/kit/exts/omni.kit.search_core",
"${workspaceFolder}/app/kit/exts/omni.kit.search_example",
"${workspaceFolder}/app/kit/exts/omni.kit.selection",
"${workspaceFolder}/app/kit/exts/omni.kit.stage.copypaste",
"${workspaceFolder}/app/kit/exts/omni.kit.stage.mdl_converter",
"${workspaceFolder}/app/kit/exts/omni.kit.stage_templates",
"${workspaceFolder}/app/kit/exts/omni.kit.tagging",
"${workspaceFolder}/app/kit/exts/omni.kit.telemetry",
"${workspaceFolder}/app/kit/exts/omni.kit.tool.collect",
"${workspaceFolder}/app/kit/exts/omni.kit.usd.layers",
"${workspaceFolder}/app/kit/exts/omni.kit.usda_edit",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.bundle",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.docs",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.legacy_gizmos",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.pxr",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.ready",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.rtx",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport.utility",
"${workspaceFolder}/app/kit/exts/omni.kit.viewport_widgets_manager",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.browser_bar",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.fast_search",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.filebrowser",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.graph",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.imageview",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.inspector",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.layers",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.live",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.live_session_management",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.path_field",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.prompt",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.settings",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.spinner",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.stage",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.stage_icons",
"${workspaceFolder}/app/kit/exts/omni.kit.widget.versioning",
"${workspaceFolder}/app/kit/exts/omni.kit.window.about",
"${workspaceFolder}/app/kit/exts/omni.kit.window.audio.oscilloscope",
"${workspaceFolder}/app/kit/exts/omni.kit.window.audioplayer",
"${workspaceFolder}/app/kit/exts/omni.kit.window.audiorecorder",
"${workspaceFolder}/app/kit/exts/omni.kit.window.commands",
"${workspaceFolder}/app/kit/exts/omni.kit.window.console",
"${workspaceFolder}/app/kit/exts/omni.kit.window.content_browser",
"${workspaceFolder}/app/kit/exts/omni.kit.window.cursor",
"${workspaceFolder}/app/kit/exts/omni.kit.window.drop_support",
"${workspaceFolder}/app/kit/exts/omni.kit.window.extensions",
"${workspaceFolder}/app/kit/exts/omni.kit.window.file",
"${workspaceFolder}/app/kit/exts/omni.kit.window.filepicker",
"${workspaceFolder}/app/kit/exts/omni.kit.window.file_exporter",
"${workspaceFolder}/app/kit/exts/omni.kit.window.file_importer",
"${workspaceFolder}/app/kit/exts/omni.kit.window.images",
"${workspaceFolder}/app/kit/exts/omni.kit.window.imageviewer",
"${workspaceFolder}/app/kit/exts/omni.kit.window.inspector",
"${workspaceFolder}/app/kit/exts/omni.kit.window.material_swap",
"${workspaceFolder}/app/kit/exts/omni.kit.window.popup_dialog",
"${workspaceFolder}/app/kit/exts/omni.kit.window.preferences",
"${workspaceFolder}/app/kit/exts/omni.kit.window.property",
"${workspaceFolder}/app/kit/exts/omni.kit.window.provide_feedback",
"${workspaceFolder}/app/kit/exts/omni.kit.window.script_editor",
"${workspaceFolder}/app/kit/exts/omni.kit.window.splash_close_example",
"${workspaceFolder}/app/kit/exts/omni.kit.window.stage",
"${workspaceFolder}/app/kit/exts/omni.kit.window.stageviewer",
"${workspaceFolder}/app/kit/exts/omni.kit.window.stats",
"${workspaceFolder}/app/kit/exts/omni.kit.window.status_bar",
"${workspaceFolder}/app/kit/exts/omni.kit.window.stream_viewport",
"${workspaceFolder}/app/kit/exts/omni.kit.window.tests",
"${workspaceFolder}/app/kit/exts/omni.kit.window.title",
"${workspaceFolder}/app/kit/exts/omni.kit.window.toolbar",
"${workspaceFolder}/app/kit/exts/omni.kit.window.usd_paths",
"${workspaceFolder}/app/kit/exts/omni.mdl.usd_converter",
"${workspaceFolder}/app/kit/exts/omni.resourcemonitor",
"${workspaceFolder}/app/kit/exts/omni.rtx.multinode.dev",
"${workspaceFolder}/app/kit/exts/omni.rtx.settings.core",
"${workspaceFolder}/app/kit/exts/omni.rtx.tests",
"${workspaceFolder}/app/kit/exts/omni.rtx.window.settings",
"${workspaceFolder}/app/kit/exts/omni.threadtime-tracker.dev",
"${workspaceFolder}/app/kit/exts/omni.uiaudio",
"${workspaceFolder}/app/kit/exts/omni.videoencoding",
"${workspaceFolder}/app/kit/exts/omni.volume"
],

This list was auto-generated when we first created the project from within Omniverse Code. The list for Linux was much smaller for some reason, which means we get pretty poor IntelliSense.

// Python modules search paths:
"python.analysis.extraPaths": [
"${workspaceFolder}/exts/cesium.omniverse",
"${workspaceFolder}/app/kit/extscore/omni.kit.pip_archive/pip_prebundle",
"${workspaceFolder}/app/kit/plugins/bindings-python"
],

Either we need to wait for microsoft/pylance-release#2712 to be fixed or we could write a script to update these workspace files by walking the Omniverse python tree.

Using Ninja on Windows fails

Using Ninja on Windows fails to build due to issues with paths.

[199/441] Building CXX object extern\draco\CMakeFiles\draco_compression_attributes_enc.dir\src\draco\compression\attributes\sequential_integer_attribute_encoder.cc.obj
  FAILED: extern/draco/CMakeFiles/draco_compression_attributes_enc.dir/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc.obj 
  C:\PROGRA~1\MICROS~2\2022\PROFES~1\VC\Tools\MSVC\1433~1.316\bin\Hostx64\x64\cl.exe  /nologo /TP -DDRACO_CMAKE=1 -DDRACO_FLAGS_SRCDIR=\"C:/Users/AMorris/Projects/cesium-omniverse/cesium-omniverse/extern/cesium-native/extern/draco\" -DDRACO_FLAGS_TMPDIR=\"/tmp\" -DNOMINMAX=1 -D_CRT_SECURE_NO_DEPRECATE=1 -IC:\Users\AMorris\Projects\cesium-omniverse\cesium-omniverse\extern\cesium-native\extern\draco -IC:\Users\AMorris\Projects\cesium-omniverse\cesium-omniverse\extern\cesium-native\extern\draco\src -IC:\Users\AMorris\Projects\cesium-omniverse\cesium-omniverse\build-debug\extern\cesium-native\src\cesium-native-external-build /EHsc /Zi /Ob0 /Od /RTC1 -MDd /w44018 /w44146 /w44244 /w44267 /w44804 /showIncludes /Foextern\draco\CMakeFiles\draco_compression_attributes_enc.dir\src\draco\compression\attributes\sequential_integer_attribute_encoder.cc.obj /Fdextern\draco\CMakeFiles\draco_compression_attributes_enc.dir\ /FS -c C:\Users\AMorris\Projects\cesium-omniverse\cesium-omniverse\extern\cesium-native\extern\draco\src\draco\compression\attributes\sequential_integer_attribute_encoder.cc
C:\Users\AMorris\Projects\cesium-omniverse\cesium-omniverse\extern\cesium-native\extern\draco\src\draco\compression\attributes\sequential_integer_attribute_encoder.cc : fatal error C1083: Cannot open compiler generated file: '': Invalid argument

The C1083 error is often related to long file paths in this particular type of scenario and that seems to be the case here. However, enabling NTFS long paths does not fix this issue. Further investigation is required to determine if in fact long paths are the issue, and if so, how to remedy the situation.

Documentation

Currently we're using Doxygen for C++ documentation.

  • All public API functions should be documented
  • How can we minimize duplication between C++ documentation and pybind11 documentation?

Credit display

Show a credit display on the bottom of the screen similar to CesiumJS and Cesium for Unreal. We should support two modes for this:

Mode 1: Show credits in popup when "Data attribution" is clicked

image

image

Mode 2: Show credits on screen

image

Note - credits are HTML and can have images (see the Bing Maps logo). We'll need to investigate the best way to do this with the Omniverse Kit UI.

Note 2 - Omniverse supports viewport overlays. That should be helpful here.

USDRT and Fabric support

We should use the USDRT API once it is available in Kit. This will allow us to bypass USD and have a faster path to the GPU. Our biggest performance bottleneck right now is converting tiles to USD.

Shading artifacts for GPU generated normals

When meshes don't have normals they are generated automatically, either CPU or GPU depending on the render settings. GPU is the default but it has some pretty serious artifacts for Cesium World Terrain. Can we chose CPU programmatically?

CPU GPU
artifacts-cpu ezgif com-gif-maker

This is the UI panel for selecting the method:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.