Documentation errata
I found this is wrong:
http://docs.daz3d.com/doku.php/public/dson_spec/object_definitions/uv_set/start
indicates that the UVs in a uv_set object are stored like:
UVSetObject.uvs = [ [ 0.02083333, 0 ],... ]
The actual UVs are actually stored like this:
UVSetObject.uvs.values = [ [ '2.49991', '0.316552' ],...]
That threw me off just now, so in case anyone else runs across this.
Also be aware that while the documentation does say this is in a DAZ object parent, the way it's shown sort of glosses that over a bit; the contents of the file aren't directly accessed like the example makes it look, since that example elides the parent container.
(Oh yeah... BTW, I'm definitely doing this so anyone who says it's impossible or even all that hard... just watch me!)
Comments
Oh, here's a problem
Looking at G8M, polygon_vertex_indices[6] says "[ 7858, 5, 17091 ]," (and they just go up from there)
Straight away that seems to be not agreeing with what the docs say:
That second item, index 1 in this list, cannot be a "polygon_vertex_index", as in, the index of a vertex within the polygon. It just cannot, because only tris and quads are allowed. So if it were what the docs claim, it would only ever be 0, 1, 2, or 3. Three and no more. Not four. Five is right out.
So my guess is that it must just be the actual vertex_index, not a polygon_vertex_index as indicated. I mean, the last one is [ 15659, 16200, 17949 ] so those are definitely going high.
Please report these via tickets so that they can be addressed.
I don't know where to do that.
BTW my guess was correct. That second value is the actiual vertex index, not the vertex-of-the-poly index.
I have, at this point, successfully extracted the G8M geometry (base resolution) from the DSF and saved it as a OBJ, scaled to 0.41010499% (centimetres to v6+ Poser Normal Units, that is, 8 feet) all from the command line.
I am now starting in on the DSF->CR2 conversion. The weight maps look pretty straightforward, too.
A big part of my reason for doing this is, sorry DAZ guys, but frankly the Poser weight map editing tools are just vastly superior to the weird "smooshy blue with yellow edges" DAZ ones. Being able to easily and quickly switch between limiting by group or material (and, since the figure can be swapped out by changing two lines in the CR2, you can map ANY material groups you want for whatever precision of selection on a geometry copy and then just swap the figureResFile out to one without a zillion usemtls to the actual intended use geometry).
Since DAZ seems to be able to import Poser content complete with weight maps now, well, as a result, I am going to rig my content in Poser and just use DAZ to set the materials and finalise the package for any DAZ content. (Or, what do you call them, surfaces?) But in order to do this, I will need to be able to take any DAZ-only content and load it in Poser. (I mean, I can't very well copy the rigging in Poser if I can't get the rigging in Poser, right?).
And since ther'es no way to load DAZ-only content in Poser, I'm *making* myself a way.
And hey, maybe such a piece of software would even sell, I dunno. Maybe some people want to use G9 in Poser, after all. It could happen. And while I certainly cannot distribute such a conversion, nothing says I can't distribute a Python library to load a DSF into Poser, after all.
https://bugs.daz3d.com/hc/en-us
It's the index of the vertex in the mesh that is used by the polygon, it isn't the index of the vertex within the set defining the polygon (setting the winding order) - you could call it vertex_index_of_a_vertex_used_by_the_polygon, but that would be unwieldy.
The colours used for weight, or no weight, are user-configurable.
Selection by group, surface, or selection set (which allows you to cerate and store mutliple selections, including overlapping selections (which I suspect is why you want to swap), without having to redefine groups and/or surfaces) is available through the right-click menu>Geoemtry Selection>Select By, and of course you can use the Geometry Editor (which gives direct acess to adding or removing groups, surfaces, and selection sets from the current selection via the Tool Settings pane) to do the ground work.
By all means use the tools you know, if thet gain enough speed to offset the preparation stage, but I don't think being known in this case amounts to inherent superiority.
The description has now been updated to remove any amibguity over this.
The colours weren't really the issue, it was the, well, to me rather weird looking display of those colours. The smooshy painted-across-the-whole-poly thing. YMMV of course
As for tools though, specific things I'm not seeing any equivalent of at all (and which I use a lot) are the weight eyedropper and "set all to" capabilities.
For instance, when making armour for Poser, I very often will create a copy fo the geometry with each separate segment of overlapping armour in a different material. Take a pauldron (shoulder armour) for instance. There's usually a "pauldron proper" itself ofer the actual shoulder-that-we-call-a-collar, larger and corresponding to the "xCollar" part, and there's often an upper arm plate/tube corresponding to xShldr, but also there are often multiple overlapping segmented plates either forming the pauldron or transitioning from the pauldron proper to the arm armour. With the joint connecting, say, rCollar to rShldr, imagine you had just three parts, one for the collar for sure, one for the shoulder for sure, and one in between.
Using Poser's weight mapping tools, this is pretty easy to handle. I create a copy of the geometry with different material definitions like "shoulderPlate1", "shoulderPlate2", "shoulderPlate3", "straps", "buckle1", "buckle2", and "buckle3" say, where the "real" geometry will only have Plate, Straps, and Buckles. Straps are allowed to have the full bendiness because they bend. Initually, the same would apply to buckles, but those get changed later. So those are left with the copied weights or maybe smoothed if necessary. But the plates, well, I would restrict to material Plate1 and set all to 0, then restrict to Plate3 and set all to 1, and then restrict to Plate2 and set all to 0.5 (or whatever works best, just as a for instance).
Next I would use the eyedropper to sample the weight of the strap right at the place buckle1 touches it, and then restrict to buckle1 and "set all" to the sampled value. Repeat for the other two buckles. Now I have buckles that stay solid no matter what but have the weight matching where they touch the strap (I might also paint in the strap weight a little at that point with that value to reflect the fact that the buckle keeps the strap from bending/twisting where they touch).
After this, I would then save and, in a text editor, swap out the geometry in the figureResFile to the one with the "real" usemtl definitions. And viola.
I cannot for the life of me figure out any way to do this (or really anything equivalent) in DAZ directly.
I put the requests under "Custom Content" because I couldn't find a "documentation" tech type.
Not bad for two days working on this so far, with it being fully automated via a script, I think. Perl for now, but a Python translation is only a ChatGPT away.
There's that weird thing where some bones have a separate bone for the twist, and I need to accommodate that quirk, because it's breaking the hierarchy as you can see.
Yeah, I am feeling good about my progress on this so far.
You need to limit the width of your image in the image horizontal field to 800. The forum forces that width but leaves the length alone which is why it is so stretched.
Oh yeah, it's coming along. Bypassed the Twist nodes and pelvis, and that's fixed. Still misssing a few welds. Have to figure that out.
But then once I have the weight mapping translated, this should work most of the way right away.
I'm confused. I'm not seeing any stretching (and it's at 1024 and displaying at 1024 px wide)
Right-click>Weight Display, or Tool Settings pane option menu>Weight Display, gives various options for what is shown and how. Showing the weights on the vertices is one of them.
No eyedropper, currently, but the Selection Analysis tab in the lower half of the Tool Settings pane will give numeric values and right-click>Weight Editing>Fill Selected... will let you assign values directly.
You can do that with Selection ets, without needing to chnage the actual groups/surfaces (so you can immediately see the effect on the mesh as you edit the weights).
Select the vertex, get the weight from Selection Analysis (no copying, however, as far as I can see - you would have to type it), then select and use Fill Selected to set the other vertices.
The twist bones are because, with general weights, there is only one map per bone - and of course the bend is usually limited to the actual joint while in the limbs the twist is spread along the limb 9as two long bones move relative to each other). In DS clone properties are used to hide this, so you can edit the rotations on either the twist or bend bone without worrying which is the native rotation and which is driving the other bone. If you are using different maps for each rotation in Poser that will nto work correctly in DS without compensatory actions.
I actually almost never do that, unless it's corrective (which usually means the collar-chest joint from experience), and then it's really minor. I almost always have the three joints use the same weight mapping copied from one to another because the idea that a different direction of the mesh would affect different parts of the mesh is biased and wrong (except, as you mentioned, when there's a compensatory "this joint is more complicated than this and has a variable fulcrum, so we're covering that with a trick" for the Twists, and the same for the few times I deviate from using the same map for all 3 rotations).
I'm finding another documentaiton problem at http://docs.daz3d.com/doku.php/public/software/dazstudio/4/userguide/surfaces/videos/surfaces/start
The video is listed as private. Trying to suss out how you guys to trans maps.
But when I am on docs.daz3d.com pages I am not logged in and cannot report anything
Another:
http://docs.daz3d.com/doku.php/public/software/dazstudio/4/referenceguide/interface/panes/surfaces/shaders/iray_uber_shader/shader_general_concepts/start#base_mixing
1: Does not say anything about "Diffuse Overlay Weight" -- I have no idea what that means.
2: Starts with a sentence that says: "The Iray Uber Shader is compromised of three separate shaders in one." I am pretty sure what it's trying to say is "The Iray Uber Shader comprises three separate shaders in one." Except without the italics I added to show where the change is.
I'm pretty sure it isn't "compromised of". But typo aside, also it's a common grammatical error to think things are "comprised of" other things. Things comprise things and are composed of things. An encyclopaedia is never "comprised of 26 volumes", but it may comprise 26 volumes and can be said to be composed of 26 volumes.
Report then issues via a Technical Support ticket.
Diffuse Overlay Weight controls how much of the Diffuse Overlay is applied - a flat value, or more usually a mask. That is true of most of the weight properties.
"Select the vertex, get the weight from Selection Analysis"
I can't find anything on this. Looking here, where I would think that woud be mentioned, there's no match on Ctrl-F for that phrase.
Sometimes it feels a bit like "Documentation-Averse Zygote"
[edit] Oh wait, it's a tab. NM I found it eventually right before givingup.
[edit edit] UGH this tool is annooying, it keeps closing the ">"/"V" panel expose widget every time you change vertex/poly
wait isn't there a way to paint a specific value??
"You can do that with Selection ets"
I don't see anything about Selection Sets in here anywhere.
Oh, I see. It's in a right click menu.
(Why aren't things like this in the tool settings UI area?)
OK so even so, these numbers in Selection Analysis don't make any sense. They appear to be weights, and they're set like "0.0437171" so they look like I expect a weight to look.. But the fill tool asks for a percentage. 4.3% is nowhere near right.
... adding ...
after experimentation, they seem to be off by a decimal place. 43.7% worked correctly.
(also it's really weird that the undo menu seems to change depending on the selection type)
OK no it did NOT work correctly, it was just close enough to 50% that I did not notice because apparently...
IT'S INVERTED!
I just had something at 0.7382 and change. So I put in 73.82% and it was all wrong but then I measured what it said it was at...
0.261799
100 - 100-73.82 = 26.18
For real?
Also... DAZ's forums throw a barely visible exception adn do not work when you try to type an emoji. You probably want to get that looked at.