What's New in v2.6.0
π₯οΈ DAZ Studio 6 (Qt6) Support
The plugin now builds and runs against the DAZ Studio 6.25+ SDK (Qt6). DS4 and DS6 variants are available for all platforms in this release.
π Multi-Platform Builds
All six platform/SDK combinations are now part of the standard release:
| Plugin | Platform |
|---|---|
DazScriptServer-ds4-windows.dll |
Windows, DAZ Studio 4.5+ |
DazScriptServer-ds4-macos-Intel.dylib |
macOS Intel, DAZ Studio 4.5+ |
DazScriptServer-ds4-macos-AppleSilicon.dylib |
macOS Apple Silicon, DAZ Studio 4.5+ |
dsp_DazScriptServer-ds6-windows.dll |
Windows, DAZ Studio 6.25+ |
dsp_DazScriptServer-ds6-macos-Intel.dylib |
macOS Intel, DAZ Studio 6.25+ |
dsp_DazScriptServer-ds6-macos-AppleSilicon.dylib |
macOS Apple Silicon, DAZ Studio 6.25+ |
πΎ Scene Save Copy β POST /scene/save-copy + DazScene.save_copy()
Save the current scene to a new path without changing the scene's internal filename pointer or dirty flag β the programmatic equivalent of "Save a Copy Asβ¦".
result = scene.save_copy("C:/backups/scene_v2.duf")
print(result["method"]) # "copy", "serialize", or "serialize+restore"For clean scenes: pure QFile::copy() (byte-identical, zero state change). For dirty scenes: serialise then restore the original filename. See docs/examples/fundamentals/scene_save_copy.py.
πΈ Viewport Capture β DazViewport + ComfyUI Pipeline
New DazViewport class for capturing the DAZ Studio viewport programmatically:
from dazpy import DazClient, DazViewport
viewport = DazViewport(DazClient())
viewport.capture("C:/renders/frame.png")
viewport.capture_sprite("C:/renders/sprite.png") # alpha-matted, background removedcapture(path)β raw viewport screenshotcapture(path, backdrop_color=(R,G,B))β temporarily sets viewport background for clean compositingcapture_sprite(path)β alpha-matted sprite using u2net for clean interior edgesget_size()/set_size(w, h)/is_available()
Includes examples/capture_viewport.py β a CLI for all three capture modes β and examples/comfyui_enhance/ β an end-to-end DAZ Studio β ComfyUI img2img enhancement pipeline.
π Body Measurements β 19 New Measurements
docs/examples/body_measurements.py now measures a full body profile for G8, G8.1, and G9 figures:
9 vertical lengths: total height, inseam, torso length, arm length, thigh/shin/forearm/upper arm, head height
10 circumferences: neck, chest, underbust, waist, high hip, hip, thigh, knee, calf, ankle
2 breadths: shoulder width, across-back and across-chest
Includes corrected bone names for G8/G8.1/G9 (resolving prior mismatches), improved high-bust anchor, and a 3D sleeve length calculation. Pass --figure-type G9F (or G8F, G9M, etc.) to force calibration when the scene label lacks a gender keyword.
π Jupyter Notebook β Interactive dazpy Exploration
The repo now ships notebooks/dazpy_intro.ipynb β an interactive notebook for exploring dazpy live against a running DAZ Studio instance.
Launch with one command:
./notebook.sh # macOS/Linux
.\notebook.ps1 # WindowsNotebook sections: Quick Connect β Scene Info β Move/Rotate Nodes β Render β API Browser β Jupyter Introspection β ipywidgets Bone Rotator β Morph/Property Explorer β Scene Tree Pretty-Printer.
π Bug Fixes
- Fixed hang on server stop: listener thread is now joined before the
httplib::Serverobject is destroyed, preventing a crash/deadlock when toggling the server off. - Fixed body measurement bone name mismatches for G8.1 waist/underbust anchors and G9 neck circumference.
- Fixed 3D sleeve length calculation (was using 2D projection, underestimating on posed figures).