{"id":13838651,"url":"https://github.com/LumaPictures/usd-qt","last_synced_at":"2025-07-10T23:31:51.624Z","repository":{"id":136683971,"uuid":"98695029","full_name":"LumaPictures/usd-qt","owner":"LumaPictures","description":"Reusable Qt Components for Pixar's USD","archived":false,"fork":false,"pushed_at":"2023-10-10T01:23:08.000Z","size":460,"stargazers_count":153,"open_issues_count":5,"forks_count":41,"subscribers_count":37,"default_branch":"master","last_synced_at":"2024-08-05T16:16:49.941Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LumaPictures.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-07-28T23:20:42.000Z","updated_at":"2024-04-15T06:01:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"952b2e4c-bbab-409d-927a-b83379d30448","html_url":"https://github.com/LumaPictures/usd-qt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumaPictures%2Fusd-qt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumaPictures%2Fusd-qt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumaPictures%2Fusd-qt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumaPictures%2Fusd-qt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LumaPictures","download_url":"https://codeload.github.com/LumaPictures/usd-qt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225663579,"owners_count":17504435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T16:00:27.675Z","updated_at":"2024-11-21T02:30:42.870Z","avatar_url":"https://github.com/LumaPictures.png","language":"Python","funding_links":[],"categories":["3D-File-Format","Libraries \u0026 Tools","File formats","Integrations","Tools, Pipeline \u0026 Utilities"],"sub_categories":["Technical Explanation","USD","USD (Universal Scene Description)"],"readme":"# UsdQt\n\n### Qt components for building custom USD tools\n\n#### Current Branch Compatibility\n\n- master : USD 19.07\n     - Should be compatible with the post-19.07 USD dev branch up to and including [b6ccb4e5](https://github.com/PixarAnimationStudios/USD/commit/b6ccb4e543dea2ab4cd41b0fc162c5501ac9b103)\n- dev : USD 19.11+\n\n## Project Goals\n\nThe UI components that make up `usdview` are good reference for functionality,\nbut they’re purpose-built for the application, and are implemented in ways that\nmake them difficult to decouple from it.\n\nThis project is meant to provide application components that can provide similar\n(as well as new) functionality, to allow for ad-hoc use in custom tools.\n\nLonger-term, we hope this project will grow to the point that it can be used to\nbuild a fully-functional `usdview` application.\n\n## Contents\n\nThis project contains a mixture of pure Python and wrapped C++ code. All Qt code\nis written in pure Python to avoid the need to link against Qt and get `moc`\ninvolved in the build process. This may change in the future if deemed\nbeneficial/necessary.\n\nThe compiled extension module provides a set of helper classes that interface\nwith the USD C++ API to accelerate certain USD queries, operations, etc.\n\n#### Installed Python Packages\n\n- `pxr.UsdQt`: Contains various Qt item data models, helper classes for building\nUIs, and some other USD and Qt utility code. The `_bindings` module currently\ncontains all of the wrapped classes from the compiled extension module.\n- `pxr.UsdQtEditors`: Contains various Qt UI elements. These range from\npurpose-built display/editor widgets to an extensible outliner UI that also\nserves as a good usage example for many of the utilities in `pxr.UsdQt`.\n- `treemodel`: Contains a generic item tree and a Qt item model mixin that uses\nit, which are used by some of the classes in `pxr.UsdQt`.\n\n## Building/Installation\n\nThe recommended (and currently only tested) way to build the project is using\nCMake. A `setup.py` file is provided as well, but it has not been tested with\nthe most recent updates.\n\n#### Build Requirements\n\n- Boost Python\n- USD\n- TBB\n\n#### CMake Options\n\n- `INSTALL_PURE_PYTHON (BOOL)`: Whether to install the pure Python code in\naddition to the compiled extension module. This defaults to `ON`.\n\n#### A note about `UsdQt.py` and `UsdQtEditors.py`\n\nYou may notice that the source contains `UsdQt.py` and `UsdQtEditors.py` files\nalongside the package source directories. These are \"shim\" modules that we've\nfound to be very useful during the development of this project, as they enable\nus to do more rapid editing and testing on the pure Python code without needing\nto run a CMake build and install between each minor edit. They are not installed\nwith the project.\n\n## Using `UsdQt` with the USD Python bindings\n\n`UsdQt` uses `pkg_resources` (or `pkgutil` if the former is not available) to\ndeclare `pxr` as a \"namespace package\" at runtime. This allows it to overlay its\nsub-packages onto the same `pxr` package used by the USD Python bindings, so\nthat the two projects can be installed in separate locations and still work\ntogether.\n\nHowever, the USD Python bindings do not currently declare `pxr` as a namespace\npackage in a symmetrical way, which unfortunately means that if the USD Python\nbindings are listed before `UsdQt` on the module search path, you will not be\nable to import `pxr.UsdQt`. Thus, unless/until the USD Python bindings are\nupdated to declare `pxr` as a namespace package, you will need to make sure\n`UsdQt` is listed before the USD Python bindings on the module search path.\n\nMore information on namespace packages in Python can be found in the docs for\n`pkg_resources` and `pkgutil`:\n\nhttps://setuptools.readthedocs.io/en/latest/pkg_resources.html#namespace-package-support\n\nhttps://docs.python.org/2/library/pkgutil.html\n\n## Using an alternate Qt API\n\n`UsdQt` expects its underlying Qt API to adhere to the Qt5 module layout, and\nuses the PySide2 API.\n\nBy default, it will attempt to import and use `PySide2`. This can be overridden\nby setting the `PXR_QT_PYTHON_BINDING` environment variable to the name of the\nAPI package/module you wish to use instead.\n\nThis works with the popular [Qt.py](https://github.com/mottosso/Qt.py) project.\n\n## Planned Future Additions\n\nHere are some of the ideas we've had for future additions to the project. We're\nhappy to consider new suggestions as well.\n\n- UI components for authoring and working with USD variant sets.\n- An adaptor class to translate USD notices to Qt signals.\n- A `QSyntaxHighlighter` class for `.usda` syntax.\n- A Hydra viewport widget.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLumaPictures%2Fusd-qt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLumaPictures%2Fusd-qt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLumaPictures%2Fusd-qt/lists"}