Standalone Switchboard panels for content-pipeline workflows — map compositing, texture conversion and channel packing, photogrammetry, mesh conversion, and Substance / Marmoset / Unity automation.
extapps
Each app is a self-contained subpackage that registers itself with uitk's
ExternalAppHandler via the uitk.external_apps.in_process entry-point
group. Hosts (tentacle, mayatk, etc.) discover and launch them automatically
— no host-side imports required.
Tools
| Tool | Purpose | Engine | Docs |
|---|---|---|---|
compositor |
Multi-layer texture compositing | pythontk.core_utils.engines.textures.map_compositor |
→ |
photogrammetry |
End-to-end photogrammetry runs — frame extraction/curation → align → mesh → texture, with per-engine presets | bundled runners (Metashape SDK, RealityScan RSNode, gaussian splat) | Metashape engine → · Tuning → |
substance_workflow |
Adobe Substance 3D Painter automation (JSON-RPC bridge) | bundled (SDK-specific) | → |
marmoset_workflow |
Marmoset Toolbag automation (RPC bridge + render templates) | bundled _marmoset_engine (SDK-specific) |
TBD |
unity_workflow |
Unity workflow panel | bundled | TBD |
converter |
Texture conversion (normal DX↔GL, smoothness↔roughness, spec→PBR, bump→normal, optimize, flip/swizzle channels), color+alpha pack/unpack, PBR prep | pythontk.ImgUtils / MapFactory |
TBD |
packer |
Channel-pack and unpack textures via per-channel sources (ORM/MRAO/MSAO/MetallicSmoothness templates) | pythontk.ImgUtils / MapFactory |
TBD |
mesh_convert |
FBX → glTF / GLB conversion | pythontk.file_utils.mesh_convert |
TBD |
Install
pip install extapps
Launch (standalone)
Installing extapps adds an extapps command (python -m extapps runs the same
program):
| Command | Opens |
|---|---|
extapps |
A browser listing every panel: search, filter by tag, double-click to open |
extapps compositor |
One panel, by its name in the Tools table (metashape_workflow, mesh_convert, ...) |
extapps --shortcut desktop |
Writes a desktop shortcut that opens the browser, then exits (--shortcut start_menu: the Start menu, or the Linux applications menu) |
extapps compositor --shortcut desktop |
Writes a shortcut that opens one panel (named "extapps Compositor") |
The command opens no console window, and quits once its last window is closed
or hidden. It is uitk's ExternalAppHub; extapps/__main__.py only declares its
name, icon and taskbar identity.
Desktop and Start-menu shortcuts
Three ways to get one; run any of them again to refresh a shortcut (after moving or upgrading the Python it runs, say):
- From the browser: its menu, Launch from the desktop: section, Create desktop shortcut / Add to Start menu.
- From inside Maya or Blender (tentacle): open the UI Browser, right-click a
panel's row, Create desktop shortcut / Add to Start menu. The shortcut runs
the host's own Python (
mayapy, Blender'spython) without opening the host. - From a terminal:
extapps --shortcut desktop.
Before writing anything, the shortcut is tried: extapps has to import in that
Python as the desktop starts it, without the host's startup scripts. When it does
not (extapps reaches the host only through userSetup.py or Maya.env), no
shortcut is written and the message says why. Fix it by installing extapps into
that Python with pip, or by putting the extapps folder on a PYTHONPATH saved in
your user environment.
A shortcut into a host's Python (which has no console-free twin, unlike a
python.org or venv Python's pythonw) opens a console window for a moment; the
program closes it as it starts.
When nothing seems to happen
A program started from the desktop has no console, so its output goes to a log:
%LOCALAPPDATA%\uitk\extapps\extapps.log on Windows (the previous run's is
extapps.log.1); on Linux the desktop session's journal. An uncaught error also
shows in a message box.
From Python
python -c "from extapps.texture_maps.compositor import CompositorUI; CompositorUI().show(pos='screen', app_exec=True)"
Launch (from a host)
Hosts that load uitk's ExternalAppHandler discover apps automatically:
sb.handlers.external_app.launch("compositor")
Dependencies
pythontk— domain logicuitk— UI frameworkqtpy— Qt abstractionunitytk— Unity project bridge (used byunity_workflow)
The metashape_workflow tool additionally requires the Agisoft Metashape Python module to be importable (installed alongside Metashape itself). The substance_workflow tool requires an Adobe Substance 3D Painter install (auto-detected) to launch sessions.
Metadata
Release files for extapps 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| extapps-0.3.5-py3-none-any.whl | Python 3 | none | any | Details |
Release files / extapps-0.3.5-py3-none-any.whl
| Download URL | extapps-0.3.5-py3-none-any.whl |
|---|---|
| Size | 373.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
068c602dcdef05627d97a371fff696a491c7facf7cc8ef0af39b2b94f4b9a51d
|
|
BLAKE2b-256 checksum How to use checksums |
b716386f56bf05f68fd4b46ddbb86bf4004b16d036e1080e9fec10ab70f93def
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Security for extapps 0.3.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.