Hi everyone,
I’m currently porting my Substance2Remix plugin to InstaMAT (InstaMAT2Remix). The goal is to allow a seamless “Pull” from NVIDIA’s RTX Remix directly into InstaMAT for texturing.
The Problem
In my current build, I can successfully trigger the “New Project” dialog via the action system, but I’m having trouble getting the plugin to “take over” from there. The wizard opens, but it stops without filling in the mesh path or clicking “Create”.
Current Approach & Roadblock
Because the New Project UI is QML-based, I’ve been trying to use QAccessible to find the fields and QTimer::singleShot to fire the automation. However, I’ve learned that the dialog is launched via QDialog::exec(), which is a blocking call. This means my automation logic only runs after the dialog is closed.
I plan to refactor this using QMetaObject::invokeMethod with a Qt::QueuedConnection to ensure the logic executes from within the dialog’s event loop.
The “Zero-Click” Goal
My ultimate goal for InstaMAT2Remix is a seamless workflow: the user clicks “Pull” in Remix, and the plugin handles the heavy lifting—initializing the project and loading the mesh—so the user lands directly in the active texturing workspace.
I have two questions for the community and dev team:
- Stable Identifiers: To make the UI automation robust, does anyone have the specific class names or object names for the project-creation dialog elements?
- Native API Initialization: Instead of driving the UI via automation, is there a way in the C++ API (e.g., via
IInstaMATPackageor a project factory) to initialize an Asset Texturing project directly with a mesh path and settings?
I’ve made two videos demonstrating where the plugin is currently getting stuck:
If anyone has experience with programmatically creating projects or a better way to handle the QML wizard from a C++ plugin, I’d love to hear your thoughts!
Thanks,
skurtyyskirts