DCC Integration
AuroraView is designed specifically for integration with Digital Content Creation (DCC) software.
Supported Software
| DCC Software | Status | Python Version | Integration Mode |
|---|---|---|---|
| Maya | ✅ Supported | 3.7+ | Qt Mode |
| Houdini | ✅ Supported | 3.7+ | Qt Mode |
| 3ds Max | ✅ Supported | 3.7+ | Qt Mode |
| Blender | ✅ Supported | 3.7+ | Desktop / Native Mode |
| Nuke | ✅ Supported | 3.7+ | Qt Mode |
| Substance Painter | 🚧 In Progress | 3.9+ | Qt Mode |
| Unreal Engine | 🚧 In Progress | 3.9+ | Native Mode (HWND) |
| Photoshop | 🚧 Planned | 3.9+ | WebSocket |
Integration Modes
AuroraView provides three integration modes for different scenarios:
| Mode | Class | Description | Best For |
|---|---|---|---|
| Desktop | WebView + show() | Independent window with own event loop | Standalone tools, desktop apps |
| Native (HWND) | WebView + parent=hwnd | Embedded via HWND, no Qt dependency | Blender, Unreal Engine, non-Qt apps |
| Qt | QtWebView | Embedded as Qt widget child | Maya, Houdini, Nuke, 3ds Max |
Desktop Mode
Best for: Standalone tools, development, Blender (floating windows)
Creates an independent window with its own event loop.
from auroraview import run_desktop
run_desktop(
title="My Tool",
url="http://localhost:3000"
)Key features:
- ✅ Full window effects support (click-through, blur, mica)
- ✅ No DCC dependency
- ✅ Owns event loop
Native Mode (HWND)
Best for: Blender, Unreal Engine, non-Qt applications
Embeds WebView via HWND without Qt dependency.
from auroraview import WebView
# Get parent HWND from non-Qt app
parent_hwnd = get_app_window_handle()
webview = WebView.create(
title="My Tool",
parent=parent_hwnd,
mode="owner",
)
webview.show()
# Get HWND for external integration
hwnd = webview.get_hwnd()Key features:
- ✅ Direct HWND access
- ✅ Full window effects support
- ✅ Works with any HWND-accepting application
- ✅ No Qt dependency required
Qt Mode
Best for: Maya, Houdini, Nuke, 3ds Max
Creates a true Qt widget that can be docked and managed by Qt's parent-child system.
from auroraview import QtWebView
webview = QtWebView(
parent=dcc_main_window(),
url="http://localhost:3000",
width=800,
height=600
)
webview.show()Key features:
- ✅ Works with
QDockWidgetfor dockable panels - ✅ Automatic lifecycle management
- ✅ Native Qt event integration
- ✅ Supports all Qt layout managers
- ⚠️ Limited window effects support
Installation
Basic Installation
pip install auroraviewWith Qt Support
For Qt-based DCCs (Maya, Houdini, Nuke):
pip install auroraview[qt]This installs QtPy as middleware to handle different Qt versions.
Common Patterns
Getting Main Window
Each DCC has its own way to get the main window:
import maya.OpenMayaUI as omui
from qtpy import QtWidgets
import shiboken2
def maya_main_window():
ptr = omui.MQtUtil.mainWindow()
return shiboken2.wrapInstance(int(ptr), QtWidgets.QWidget)import hou
def houdini_main_window():
return hou.qt.mainWindow()from qtpy import QtWidgets
def nuke_main_window():
return QtWidgets.QApplication.activeWindow()Dockable Panel
from auroraview import QtWebView
from qtpy.QtWidgets import QDockWidget
# Create dock widget
dock = QDockWidget("My Tool", main_window)
# Create WebView
webview = QtWebView(parent=dock)
webview.load_url("http://localhost:3000")
# Set as dock widget content
dock.setWidget(webview)
main_window.addDockWidget(Qt.RightDockWidgetArea, dock)
webview.show()Lifecycle Management
AuroraView automatically handles cleanup when the parent DCC closes:
webview = QtWebView(
parent=dcc_main_window(), # Monitor this parent
url="http://localhost:3000"
)
# WebView closes automatically when parent is destroyedFor manual control:
webview = AuroraView(
url="http://localhost:3000",
parent_hwnd=get_dcc_hwnd(),
parent_mode="owner"
)
# WebView follows parent minimize/restore/close