Skip to content

v2.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Jun 16:34
· 1 commit to master since this release

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 removed
  • capture(path) β€” raw viewport screenshot
  • capture(path, backdrop_color=(R,G,B)) β€” temporarily sets viewport background for clean compositing
  • capture_sprite(path) β€” alpha-matted sprite using u2net for clean interior edges
  • get_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  # Windows

Notebook 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::Server object 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).