How Poser, Python and DSON work together

Jun 10, 2020 at 10:00 am by Michelle Willard

Poser, Python, DSON and more

Python allows Poser users to "get under the hood" of the software and customize their experience.

Allowing support for the scripting language in Poser gives users power and flexibility to automate and liberate their creativity and productivity.

"Python scripts in Poser are very useful additions, automating some of the boring stuff that you need to do in Poser and also making things possible that not directly possible in Poser. Examples would be, converting materials to poses or vice versa, deleting all lights, quickly switching cameras. There are many things that Poser scripts can help with," said Structure, Poser support specialist.

Python has been included in Poser since Poser 4's Pro Pack was released in 2000.

One of the most popular Python-based add-ons and plug-ins was the "DSON Importer for Poser."

"For many years Poser and DAZ3D had a symbiotic relationship. DAZ created figures that were compatible with Poser. About 10 years ago DAZ decided to go their own way and didn't want rely on Poser as their application any longer. The however they didn't want to just dump the Poser users. This is where DSON (Daz Scene Object Notation) importer comes along," explained Charles Taylor a.k.a., Nerd3D, member of the Poser development team.

The plug-in allowed Poser users to seamlessly load DAZ Studio figures, Genesis 1 and Genesis 2, as well as props, morphs and UVs created for Genesis.

The plug-in used Poser's Python API to convert content saved in DAZ's new format so it could be displayed close to real time in Poser. This allowed Poser users to continue using the Genesis figures in Poser without converting them to Poser format, Taylor said.

The DSON plug-in was developed more than a decade ago and only worked with the first two generations of Genesis figures and products.

"DAZ has since changed their format substantially and the DSON importer plug-in has not been updated to support the newer generations of figures. Genesis 8 is the current figure, DSON only supports up to Genesis 2. It's been a long time since it was maintained," Taylor said.

With the development of DAZ Studio, DAZ's stand-alone 3D rendering program, the plug-in was depreciated and is no longer supported by DAZ.

"Poser does not own the rights to this plug-in and therefore can not maintain it," Taylor said, adding the plug-in "contains parts of the DAZ Studio engine so even if we wanted we couldn't legally reproduce it. Further, We don't have any of the source code for the original plug-in making recreating it not only illegal but impractical as well."

Many other Python scripts may be impacted by the release of Poser 12.

"We've actually held back some key updates for Poser as we don't want our users to lose the variety of available content provided by DSON. But we've come to a point where the Python engine we're using is just too old, we have to update it," Taylor said.

Since it was first implemented, Python has gone through different iterations. Currently, Poser supports Python 2.7, but the program's end-of-life date was initially set at 2015 then postponed to 2020 out of concern that a large body of existing code could not easily be forward-ported to Python 3.

"When we move to the newer version of Python it will almost certainly break the DSON plug-in and other scripts. We simply can't hold back the needed updates any longer. Poser needs to move forward, and we can't wait for DAZ to update a 10-year-old plug-in," he said.

If user want to use Genesis figures in Poser, DAZ Studio has a PZ2 (Poser format) exporter that allows the export of figures that can load from Poser's library system.

"This does require a bit more prep-work but once the figures are converted to Poser format you don't have to do it again and you don't need a plug-in for it to work," Taylor said.