WHEN... will DAZ3D learn...

2»

Comments

  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 3,296
    edited March 20

    Richard Haseltine said:

    For the record, the developers do not agree with the assessment of the relative superiority of "a component architecture". I lack even a fragment of the knowledge requiired to form my own judgement, but your assertion should not go without at least a note that it does not command universal assent.

    Neither should it go without a note that those that dissent are the same people that gave us static header files that they can never update in a way that changes the symbols, i.e. just about any change that would make them more useful.

    But maybe next time you could ask them to instead of defending themselves, to use the same time to answer some questions in the SDK forum? Just sayin'.

     

    Post edited by TheMysteryIsThePoint on
  • Richard HaseltineRichard Haseltine Posts: 109,329

    TheMysteryIsThePoint said:

    Matt_Castle said:

    TheMysteryIsThePoint said:

    Matt_Castle said:

    To say that the current system is bad does not actually mean that a better option is known, or is even possible at this stage.

    No, but the design created the situation. And if there is no solution, Richard M. Stallman coined a great phrase: "Broken By Design".

    This is pointless. You have yet to propose any alternative solution that meets the design requirements, which can be retrofitted at the current stage, and which hasn't already been tried and proven unsuitable.

    With a better design we would never have been "at the current stage". But now we are stuck with it and that offsets in bas relief the importance of a forward thinking design in the first place. My, and presumably the OP's, valid point. An argument based on the fact that an outsider not involved in the product's development at all doesn't have an alternative is an exceedingly weak one. And I still have not heard a convincing argument against the one that says that if the user experience is unsatisfactory, it was a deficiency in the design. And I sincerely doubt I ever will.

    If there is no solution, there is nothing for "Daz to learn" as the topic title puts it, because they couldn't have done any better. Sometimes there is no perfect answer. Sometimes there was never one to begin with.

    Again, that's "Broken by Design." There are always tradeoffs to be made. That's the process of Engineering in a nutshell. If there is no tradeoff to be made, the design cut off certain avenues to be explored. I have never seen that not to be the case. No one will ever convinve me that when there was ultimate freedom to determine how the framework would work, that the only way to make an extensible framework was to load all the morphs. At some point, that was designed in by a decision that, in retrospect, turned out to be a bad decision. Happens to the best of us.

    But again, do you have a better alternative that does what Daz needs it to - something along the lines of provide an extensible architecture for content items that can have new shapes, rigging adjustments, mappings etc. added and removed without requiring special actions (running additoonal utilities, invoking special commands to fiininalise the set up) - with less overhead than the current system?

    I'm sure if there was a good solution, Daz would love to hear it, because obviously it's not in their interests to have users getting picky about buying new content because they don't want it to slow down their library.

    That's probably the best argument for Open Source-ing DAZ Studio that I've ever heard.

     

  • Matt_CastleMatt_Castle Posts: 3,093

    TheMysteryIsThePoint said:

    No one will ever convinve me that when there was ultimate freedom to determine how the framework would work, that the only way to make an extensible framework was to load all the morphs.

    This is fundamentally flawed.

    Let's look at how the Genesis 9 figure works.

    Genesis 9 is a mesh that is weighted to follow the bones of a virtual armature. This is strictly inaccurate to how people actually move, but as a technique it's been used for decades because the full physical modelling and simulation of a skeleton, how muscles fit to it, how those muscles fit against each other, where the internal organs go, where fat layers sit and how the skin is attached and stretches over all of that would be ludicrously intensive, and a weighted mesh is generally an acceptable compromise.

    Even more so if you are prepared to go in and create corrective morph shapes to improve the weighted shape to something closer to physically accurate.

    And G9 does quite a lot of those. Here's a list of the primary Corrective Blend Shapes of Genesis 9:

    body_cbs_shoulder_x30n_l; body_cbs_shoulder_x30p_l; body_cbs_shoulder_z55p_l; body_cbs_shoulder_x30n_r; body_cbs_shoulder_x30p_r; body_cbs_shoulder_z55n_r; body_cbs_upperarm_x95n_l; body_cbs_upperarm_y110n_l; body_cbs_upperarm_z40n_l; body_cbs_upperarm_z90p_l; body_cbs_upperarm_y110n_z40n_l; body_cbs_upperarm_y110n_z90p_l; body_cbs_upperarm_x95n_r; body_cbs_upperarm_y110p_r; body_cbs_upperarm_z40p_r; body_cbs_upperarm_z90n_r; body_cbs_upperarm_y110p_z40p_r; body_cbs_upperarm_y110p_z90n_r; body_cbs_forearm_y75n_l; body_cbs_forearm_y135n_l; body_cbs_forearm_y75p_r; body_cbs_forearm_y135p_r; body_cbs_hand_y28n_l; body_cbs_hand_z70n_l; body_cbs_hand_z80p_l; body_cbs_hand_y28p_r; body_cbs_hand_z70p_r; body_cbs_hand_z80n_r; body_cbs_head_x25p; body_cbs_head_x30n; body_cbs_neck1_x25n; body_cbs_neck1_x40p; body_cbs_neck1_y22p_l; body_cbs_neck1_y22n_r; body_cbs_neck1_z40n_l; body_cbs_neck1_z40p_r; body_cbs_spine3_x35p; body_cbs_spine3_z20n_l; body_cbs_spine3_z20p_r; body_cbs_spine2_x40p; body_cbs_spine2_z24n_l; body_cbs_spine2_z24p_r; body_cbs_spine1_x35p; body_cbs_spine1_z15n_l; body_cbs_spine1_z15p_r; body_cbs_pelvis_x25n; body_cbs_pelvis_x25n; body_cbs_thigh_x35p_l; body_cbs_thigh_x90n_l; body_cbs_thigh_x115n_l; body_cbs_thigh_z90p_l; body_cbs_thigh_x115n_z90p_l; body_cbs_thigh_x35p_r; body_cbs_thigh_x90n_r; body_cbs_thigh_x115n_r; body_cbs_thigh_z90n_r; body_cbs_thigh_x115n_z90n_r; body_cbs_shin_x90p_l; body_cbs_shin_x155p_l; body_cbs_shin_x90p_r; body_cbs_shin_x155p_r; body_cbs_foot_x45n_l; body_cbs_foot_x65p_l; body_cbs_foot_z45n_l; body_cbs_foot_x65p_r; body_cbs_foot_x45n_r; body_cbs_foot_z45p_r; body_cbs_toes_x40p_l; body_cbs_toes_x60n_l; body_cbs_toes_x40p_r; body_cbs_toes_x60n_r

    And this is a list that omits things like all the ones on the fingers or toes. This is just the larger joints.

    Now, if we look at the first on the list, body_cbs_shoulder_x30n_l, this is a shape which is intended to be active when the left shoulder's X rotation is negative 30 (shoulder for shoulder, x30n for negative 30 x, and _l for left).

    We immediately have our first case for wanting bottom-up links. We do not want to have the primary bend parameters of a joint to need to be changed every time someone wants to hitch a new control to them. So, in this case, another file, not the primary rigging, will have to tell Daz Studio that body_cbs_shoulder_x30n_l is something that should be linked to the shoulder's X rotation. And, fundamentally, why have an entirely separate file to do that? Why not have it in the header section of body_cbs_shoulder_x30n_l? DS can look in the top of the file.

    Okay, now let's suppose we want to install another character on to G9. Victoria 9's morph changes the shape enough that the original CBS shapes are no longer quite right, so she's going to need her own CBSs.

    Even looking past how you drive her CBSs (it's much more practical to just hitch them onto the base ones rather than have to set up all the rotation multipliers separately), her CBSs however need to only activate when her shape does. So you want all those new shapes to have a link to her main morph. Now, Daz *could* put all those links in her shape, but that would mean that if Daz decided she needed an extra CBS they'd missed before, then that means adding a new CBS, and also adding links to it into her main morph file, and generally causing havoc with versioning. If those links could only be saved into her file, it would also be a nuisance any end user deciding that she needed an extra CBS, because then they would have to edit her file, and re-edit it every time a product update came through.

    As such, it is better for the links for character specific CBSs to be bottom-up links exist in those CBS files themselves.

    ~~~~~

    Now, even if we for some reason assume that it was even viable to have only top-down links, Daz Studio still needs to know more about each DSF file attached to the figure it has than just what its file name is.

    Firstly, DS needs to know what the morph should actually be called on the user side. It's all very useful to have a behind the scenes convention for file names, but they're ugly and unfriendly on the user side. "Victoria9_figure_ctrl_Character.dsf" is informative for technical purposes, and avoiding spaces in the file name makes certain things easier (although admittedly Daz have been inconsistent about enforcing that as a standard), but "Victoria 9" is what end users want to see.

    DS also needs to know what the limits of that morph are. Is this something like a height slider which can go from -100% to 100% to make the character taller or shorter, or is this a character morph that would be an eldritch horror if it were dialled in backwards?

    They need to know whether the morph should be shown to the user at all. Imagine if all the CBS files across every character were permanently visible.

    They need to know "hey, this slider has a picture to help the user see what it does".

    They need to know "this slider is tinted light blue to help differentiate it as a morph from the G9 Body Morphs set, where as this shade of yellow implies that it's a core character."

    To be functional, DS needs at least this "metadata" about every morph, even if it does not attempt to load any of the actual shape information about the morph. This is not feasible to encode into a filename. Even if you tried, you'd end up with a colossal problem every time you had to update something, because now that old scene file where everyone's Daz Studio is expecting that a character should have 50% of some morph file with an outrageous file name dialled in now can't find that filename any more.

    So, Daz Studio needs this information before it can display the figure controls correctly, and thus it has to load this information about every DSF file.

    Now, at present, this is all deliberately stored at the top of the morph files. Daz Studio can look in the top of the file and read that information. And, indeed, it actually stops when it gets to the end of that, and does not load the morph shape itself until the morph is actually activated on the figure. You can see this in the log file if you activate a morph you haven't yet; it will tell you that the morph deltas for that morph have just been loaded.

    ~~~~~

    The only even marginally feasible workaround I could see to this that doesn't force the user to manually specify what morphs they want loaded is permanently maintaining a database for every last figure (be it Genesis, a clothing item, a car, etc) and prop which collates all of this stuff and just that stuff. But that would itself need to be rebuilt every time the figure's morph library changed. And this would necessitate a large increase in the amount of drive space used by morphs, because not only do the morphs themselves still need to contain the information in order for such a database to know what to do with them, the database would itself end up duplicating all of that. 

    But if you have a suggestion for how Daz Studio could genuinely work by just being able to skim read file names and not know anything about what's inside them, then by all means, let us know. We would all love Daz Studio to be faster.

    Otherwise, your claim that you're unconvinced by the solution they've implemented is empty.

    That's probably the best argument for Open Source-ing DAZ Studio that I've ever heard.

    That I think would be a bad idea, because ultimately the entire Daz infrastructure relies on having a concrete framework upon which others can build and work. Making that kind of thing work requires oversight and direction.

    That said, except for a couple of their more proprietary techs, Daz Studio formats are mostly well documented. If someone else was of a mind to, they could absolutely make another program read Daz Studio format directly (maybe even as a direct Blender plug-in, for example), and handle things that way.

  • Sounds to me like you want to go back to the early days of DAZ Studio, when you had to load each set of morphs manually. Trust me it may have saved on render time, but the workflow was a nightmare.

  • Richard Haseltine said:

    TheMysteryIsThePoint said:

    Matt_Castle said:

    TheMysteryIsThePoint said:

    Matt_Castle said:

    To say that the current system is bad does not actually mean that a better option is known, or is even possible at this stage.

    No, but the design created the situation. And if there is no solution, Richard M. Stallman coined a great phrase: "Broken By Design".

    This is pointless. You have yet to propose any alternative solution that meets the design requirements, which can be retrofitted at the current stage, and which hasn't already been tried and proven unsuitable.

    With a better design we would never have been "at the current stage". But now we are stuck with it and that offsets in bas relief the importance of a forward thinking design in the first place. My, and presumably the OP's, valid point. An argument based on the fact that an outsider not involved in the product's development at all doesn't have an alternative is an exceedingly weak one. And I still have not heard a convincing argument against the one that says that if the user experience is unsatisfactory, it was a deficiency in the design. And I sincerely doubt I ever will.

    If there is no solution, there is nothing for "Daz to learn" as the topic title puts it, because they couldn't have done any better. Sometimes there is no perfect answer. Sometimes there was never one to begin with.

    Again, that's "Broken by Design." There are always tradeoffs to be made. That's the process of Engineering in a nutshell. If there is no tradeoff to be made, the design cut off certain avenues to be explored. I have never seen that not to be the case. No one will ever convinve me that when there was ultimate freedom to determine how the framework would work, that the only way to make an extensible framework was to load all the morphs. At some point, that was designed in by a decision that, in retrospect, turned out to be a bad decision. Happens to the best of us.

    But again, do you have a better alternative that does what Daz needs it to - something along the lines of provide an extensible architecture for content items that can have new shapes, rigging adjustments, mappings etc. added and removed without requiring special actions (running additoonal utilities, invoking special commands to fiininalise the set up) - with less overhead than the current system?

    Richard, I am not on DAZ Studio's design team, so I am not at all sure why you would want to use whether I have a better solution as an argument. I will only say that you probably thinking that you are raising a withering rebuke by pointing out these requirements, when in truth you are just pointing the deficiencies the original design was supposed to account for. It was the responsibility of the original system archtect to resolve the issues you state in a way that gives a suitable user experience, not mine years later and looking in from the outside.

    Why do I always debate software architecting with people that are not software architects and think that this time they'll actually understand my points and accept them as the obvious and objectively true statements that they are? How can anyone possibly contest the statement that "if the user experience is bad, it is because of the design"? How can that be controversial in any way?

     

  • Matt_Castle said:

    TheMysteryIsThePoint said:

    No one will ever convinve me that when there was ultimate freedom to determine how the framework would work, that the only way to make an extensible framework was to load all the morphs.

    This is fundamentally flawed.

    You are completely missing my point. Completely. You bring up, in fine detail, the problem space that a design is supposed to navigate and provide a satisfactory user experience. It doesn't. It is irrelevant if the problem space is convoluted or not; that is what the design was supposed to account for. If it does, it is a good design. If it does not, it is a bad design. Ful stop. No ammount of hand waving or creating empathy for the complexity of the problem can mutate this fact: the design was supposed to account for that. That is why architects make as much money as they do: the buck stops with their design. There is nothing else to blame.

    Let's look at how the Genesis 9 figure works.

    Let's not. If it is complicated, and I'm sure that it is, it was the design that determined literally everything that you wrote. There is no other place to lay the details of the current state of affairs but at the feet of the original design. Saying "But it is a hard problem" does not mean that an inefficient design is some how excusable. Engineers get paid to make the proper space/time tradeoffs until the user experience is satisfactory. I know of no principle that says that that is the engineer's responsibility "unless the problem is hard, in which case you can go with O(n^2) and expect no one to call you on it".

    Genesis 9 is a mesh that is weighted to follow the bones of a virtual armature. This is strictly inaccurate to how people actually move, but as a technique it's been used for decades because the full physical modelling and simulation of a skeleton, how muscles fit to it, how those muscles fit against each other, where the internal organs go, where fat layers sit and how the skin is attached and stretches over all of that would be ludicrously intensive, and a weighted mesh is generally an acceptable compromise.

    Even more so if you are prepared to go in and create corrective morph shapes to improve the weighted shape to something closer to physically accurate.

    And G9 does quite a lot of those. Here's a list of the primary Corrective Blend Shapes of Genesis 9:

    body_cbs_shoulder_x30n_l; body_cbs_shoulder_x30p_l; body_cbs_shoulder_z55p_l; body_cbs_shoulder_x30n_r; body_cbs_shoulder_x30p_r; body_cbs_shoulder_z55n_r; body_cbs_upperarm_x95n_l; body_cbs_upperarm_y110n_l; body_cbs_upperarm_z40n_l; body_cbs_upperarm_z90p_l; body_cbs_upperarm_y110n_z40n_l; body_cbs_upperarm_y110n_z90p_l; body_cbs_upperarm_x95n_r; body_cbs_upperarm_y110p_r; body_cbs_upperarm_z40p_r; body_cbs_upperarm_z90n_r; body_cbs_upperarm_y110p_z40p_r; body_cbs_upperarm_y110p_z90n_r; body_cbs_forearm_y75n_l; body_cbs_forearm_y135n_l; body_cbs_forearm_y75p_r; body_cbs_forearm_y135p_r; body_cbs_hand_y28n_l; body_cbs_hand_z70n_l; body_cbs_hand_z80p_l; body_cbs_hand_y28p_r; body_cbs_hand_z70p_r; body_cbs_hand_z80n_r; body_cbs_head_x25p; body_cbs_head_x30n; body_cbs_neck1_x25n; body_cbs_neck1_x40p; body_cbs_neck1_y22p_l; body_cbs_neck1_y22n_r; body_cbs_neck1_z40n_l; body_cbs_neck1_z40p_r; body_cbs_spine3_x35p; body_cbs_spine3_z20n_l; body_cbs_spine3_z20p_r; body_cbs_spine2_x40p; body_cbs_spine2_z24n_l; body_cbs_spine2_z24p_r; body_cbs_spine1_x35p; body_cbs_spine1_z15n_l; body_cbs_spine1_z15p_r; body_cbs_pelvis_x25n; body_cbs_pelvis_x25n; body_cbs_thigh_x35p_l; body_cbs_thigh_x90n_l; body_cbs_thigh_x115n_l; body_cbs_thigh_z90p_l; body_cbs_thigh_x115n_z90p_l; body_cbs_thigh_x35p_r; body_cbs_thigh_x90n_r; body_cbs_thigh_x115n_r; body_cbs_thigh_z90n_r; body_cbs_thigh_x115n_z90n_r; body_cbs_shin_x90p_l; body_cbs_shin_x155p_l; body_cbs_shin_x90p_r; body_cbs_shin_x155p_r; body_cbs_foot_x45n_l; body_cbs_foot_x65p_l; body_cbs_foot_z45n_l; body_cbs_foot_x65p_r; body_cbs_foot_x45n_r; body_cbs_foot_z45p_r; body_cbs_toes_x40p_l; body_cbs_toes_x60n_l; body_cbs_toes_x40p_r; body_cbs_toes_x60n_r

    And this is a list that omits things like all the ones on the fingers or toes. This is just the larger joints.

    Now, if we look at the first on the list, body_cbs_shoulder_x30n_l, this is a shape which is intended to be active when the left shoulder's X rotation is negative 30 (shoulder for shoulder, x30n for negative 30 x, and _l for left).

    We immediately have our first case for wanting bottom-up links. We do not want to have the primary bend parameters of a joint to need to be changed every time someone wants to hitch a new control to them. So, in this case, another file, not the primary rigging, will have to tell Daz Studio that body_cbs_shoulder_x30n_l is something that should be linked to the shoulder's X rotation. And, fundamentally, why have an entirely separate file to do that? Why not have it in the header section of body_cbs_shoulder_x30n_l? DS can look in the top of the file.

    Okay, now let's suppose we want to install another character on to G9. Victoria 9's morph changes the shape enough that the original CBS shapes are no longer quite right, so she's going to need her own CBSs.

    Even looking past how you drive her CBSs (it's much more practical to just hitch them onto the base ones rather than have to set up all the rotation multipliers separately), her CBSs however need to only activate when her shape does. So you want all those new shapes to have a link to her main morph. Now, Daz *could* put all those links in her shape, but that would mean that if Daz decided she needed an extra CBS they'd missed before, then that means adding a new CBS, and also adding links to it into her main morph file, and generally causing havoc with versioning. If those links could only be saved into her file, it would also be a nuisance any end user deciding that she needed an extra CBS, because then they would have to edit her file, and re-edit it every time a product update came through.

    As such, it is better for the links for character specific CBSs to be bottom-up links exist in those CBS files themselves.

    ~~~~~

    Now, even if we for some reason assume that it was even viable to have only top-down links, Daz Studio still needs to know more about each DSF file attached to the figure it has than just what its file name is.

    Firstly, DS needs to know what the morph should actually be called on the user side. It's all very useful to have a behind the scenes convention for file names, but they're ugly and unfriendly on the user side. "Victoria9_figure_ctrl_Character.dsf" is informative for technical purposes, and avoiding spaces in the file name makes certain things easier (although admittedly Daz have been inconsistent about enforcing that as a standard), but "Victoria 9" is what end users want to see.

    DS also needs to know what the limits of that morph are. Is this something like a height slider which can go from -100% to 100% to make the character taller or shorter, or is this a character morph that would be an eldritch horror if it were dialled in backwards?

    They need to know whether the morph should be shown to the user at all. Imagine if all the CBS files across every character were permanently visible.

    They need to know "hey, this slider has a picture to help the user see what it does".

    They need to know "this slider is tinted light blue to help differentiate it as a morph from the G9 Body Morphs set, where as this shade of yellow implies that it's a core character."

    To be functional, DS needs at least this "metadata" about every morph, even if it does not attempt to load any of the actual shape information about the morph. This is not feasible to encode into a filename. Even if you tried, you'd end up with a colossal problem every time you had to update something, because now that old scene file where everyone's Daz Studio is expecting that a character should have 50% of some morph file with an outrageous file name dialled in now can't find that filename any more.

    So, Daz Studio needs this information before it can display the figure controls correctly, and thus it has to load this information about every DSF file.

    Now, at present, this is all deliberately stored at the top of the morph files. Daz Studio can look in the top of the file and read that information. And, indeed, it actually stops when it gets to the end of that, and does not load the morph shape itself until the morph is actually activated on the figure. You can see this in the log file if you activate a morph you haven't yet; it will tell you that the morph deltas for that morph have just been loaded.

    ~~~~~

    The only even marginally feasible workaround I could see to this that doesn't force the user to manually specify what morphs they want loaded is permanently maintaining a database for every last figure (be it Genesis, a clothing item, a car, etc) and prop which collates all of this stuff and just that stuff. But that would itself need to be rebuilt every time the figure's morph library changed. And this would necessitate a large increase in the amount of drive space used by morphs, because not only do the morphs themselves still need to contain the information in order for such a database to know what to do with them, the database would itself end up duplicating all of that. 

    But if you have a suggestion for how Daz Studio could genuinely work by just being able to skim read file names and not know anything about what's inside them, then by all means, let us know. We would all love Daz Studio to be faster.

    And you've proven my point better than I ever could. You've pointed out in much greater detail that I knew how to, that the design has serious inefficiencies where some tradeoff should have been sough, but wasn't.

    Otherwise, your claim that you're unconvinced by the solution they've implemented is empty.

    OK, I guess we will just have to let history be the judge.

    That's probably the best argument for Open Source-ing DAZ Studio that I've ever heard.

    That I think would be a bad idea, because ultimately the entire Daz infrastructure relies on having a concrete framework upon which others can build and work. Making that kind of thing work requires oversight and direction.

    What you've accomplished is to clarify your opinion that DAZ would not be capable of providing oversight and direction. Open Source has worked out exceedingly well for so many projects that I'm not going to bother to name any of them.

    That said, except for a couple of their more proprietary techs, Daz Studio formats are mostly well documented.

    If I am wrong, then pease excuse me, but you have never actually tried to write a non-trivial plugin, have you? The problem with what you wrote above is that, yes, DSON is better documented than the SDK, and JSON is to some degree self documenting, but the problem is that DAZ Studio is not a purely data-driven application, i.e. the DSON does not tell you the whole story. As you say, I suppose I can forgive DAZ for not documenting their secret sauce for HD and autofitting since it is a rare far-seeing company that realizes that holding on to their IP, no matter how trivial it is probably retards the growth of their product, but there are things that you simply cannot divine how DAZ Studio goes from DSON to finished geometry from looking at it. And there are important things that a programmer needs to know that have nothing to do the data format.

    If someone else was of a mind to, they could absolutely make another program read Daz Studio format directly (maybe even as a direct Blender plug-in, for example), and handle things that way.

    This is the same falsity that I keep hearing over and over, by people who I'd wager have never written a non-trivial plugin. Knowing the DSON like the back of one's hand is not sufficient to duplicate everything DAZ Studio does. There is a lot of functionality in DAZ code, as opposed to the DSON. Again, it is not a purely data-driven app. There's logic in the code. I know this for a fact because I've been figuring things out for Sagan for 7 years now. Like memory ownership rules. In C++, when a function accepts a pointer, does it take ownership of that memory? Do I still have to free it up? Does it deep copy it, or just copy the pointer? Can I pass a local object or does it have to be on the heap? There's very little const correctness in the SDK, so will the function modify my object or not? It's very, very difficult to correctly guess all of these things, and even the shortest, simplest, yes-or-no questions go ignored in the SDK forum, if only a dev can answer it.

  • GrapeGrandpa said:

    Sounds to me like you want to go back to the early days of DAZ Studio, when you had to load each set of morphs manually. Trust me it may have saved on render time, but the workflow was a nightmare.

    Personally, I would. And have the designers consider what design tradeoffs would need to be made to provide an adequate user experience even when the user's catalog is huge. I'm sure CS majors had to study Algorithmic Complexity back then, still.

  • Richard HaseltineRichard Haseltine Posts: 109,329

    TheMysteryIsThePoint said:

    Richard Haseltine said:

    TheMysteryIsThePoint said:

    Matt_Castle said:

    TheMysteryIsThePoint said:

    Matt_Castle said:

    To say that the current system is bad does not actually mean that a better option is known, or is even possible at this stage.

    No, but the design created the situation. And if there is no solution, Richard M. Stallman coined a great phrase: "Broken By Design".

    This is pointless. You have yet to propose any alternative solution that meets the design requirements, which can be retrofitted at the current stage, and which hasn't already been tried and proven unsuitable.

    With a better design we would never have been "at the current stage". But now we are stuck with it and that offsets in bas relief the importance of a forward thinking design in the first place. My, and presumably the OP's, valid point. An argument based on the fact that an outsider not involved in the product's development at all doesn't have an alternative is an exceedingly weak one. And I still have not heard a convincing argument against the one that says that if the user experience is unsatisfactory, it was a deficiency in the design. And I sincerely doubt I ever will.

    If there is no solution, there is nothing for "Daz to learn" as the topic title puts it, because they couldn't have done any better. Sometimes there is no perfect answer. Sometimes there was never one to begin with.

    Again, that's "Broken by Design." There are always tradeoffs to be made. That's the process of Engineering in a nutshell. If there is no tradeoff to be made, the design cut off certain avenues to be explored. I have never seen that not to be the case. No one will ever convinve me that when there was ultimate freedom to determine how the framework would work, that the only way to make an extensible framework was to load all the morphs. At some point, that was designed in by a decision that, in retrospect, turned out to be a bad decision. Happens to the best of us.

    But again, do you have a better alternative that does what Daz needs it to - something along the lines of provide an extensible architecture for content items that can have new shapes, rigging adjustments, mappings etc. added and removed without requiring special actions (running additoonal utilities, invoking special commands to fiininalise the set up) - with less overhead than the current system?

    Richard, I am not on DAZ Studio's design team, so I am not at all sure why you would want to use whether I have a better solution as an argument. I will only say that you probably thinking that you are raising a withering rebuke by pointing out these requirements, when in truth you are just pointing the deficiencies the original design was supposed to account for. It was the responsibility of the original system archtect to resolve the issues you state in a way that gives a suitable user experience, not mine years later and looking in from the outside.

    Why do I always debate software architecting with people that are not software architects and think that this time they'll actually understand my points and accept them as the obvious and objectively true statements that they are? How can anyone possibly contest the statement that "if the user experience is bad, it is because of the design"? How can that be controversial in any way?

    No, it was the responsibility of the design team to design a system that met the requirements. You are asserting that they could have done better, but this needs suport - just saying they shgould have come up with a solution that did not have these drawbacks is not making a real argument if it is an unsupported assumption that such a better system existed. If you cannot propose - at least in outline, no one is expecting a fully-operational application - then you shoudl not assert that they failed to develop something reasonably close to an optimal design. If you are taking issue with the specifications then again, you need to show in outline that there were better specifications.

  • Richard Haseltine said:

    No, it was the responsibility of the design team to design a system that met the requirements.

    This is comically wrong. You are thinking of Waterfall development, and this is generally accepted these days as how not to do systems. With respect, Richard, it really seems as if you have no idea what you are talking about but are thinking that the fact that you're a really smart guy is somehow going to compensate for that fact. It isn't. The things you are saying make perfect logical sense, but they are not informed by actual industry experience that one accrues over years or decades.

    What makes your statement so wrong is that a design team that doesn't dig a little deeper into the requirements and ask "What could change in the future" should probably not be doing design. If a wrong assumption or change renders a design inefficient, it's a bad design. Yes, this can get complicated. Yes, people like Grace Hopper and others have been searching for the ultimate way to contain complexity and there seems to be another paradigm every few years. But that's the job of the analyst and architect. And it is a tough one.

    You are asserting that they could have done better, but this needs suport - just saying they shgould have come up with a solution that did not have these drawbacks is not making a real argument if it is an unsupported assumption that such a better system existed.

    I am 100% certain that they could have done better. Do not think that DAZ Studio is the only app that exists in a complicated context. I can't talk about my day job, but don't think that DAZ Studio is unique or even close to as bad as it can get in terms of complexity. But in any case, I think these irrational and emotional reactions may be coming from the fact that these are probably people that you work with, and you perceive what I am saying as some sort of slight. It's not. I think I've said it a few times now that this is simply an unfortunate truth of software development: you almost never get to design and implement the system the way you know you should, and the way you want to. That's how I can pretty confidently say that they could have done better because in my entire career, I cannot think of an instance when I thought "Yep, I've really outdone myself... it's a perfect thing of beauty". There are always things that future me is going to look at and throw up in his mouth a little. If you want to just say that that is no insight into the software business and I don't know what I'm talking about, that's up to you.

    If you cannot propose - at least in outline, no one is expecting a fully-operational application - then you shoudl not assert that they failed to develop something reasonably close to an optimal design. If you are taking issue with the specifications then again, you need to show in outline that there were better specifications.

    I'm sorry, I only do free analysis for Open Source projects where I feel like I belong to some sort of community. But again, if you prefer to think that DAZ Studio is somehow unique in the world and I just don't know what I'm talking about, you're certainly free to do so.

  • richardandtracyrichardandtracy Posts: 7,430
    edited 6:07AM
    I am not an experienced enough software engineer to make suggestions, but I am an experienced enough engineer to know that nothing is perfect and everything can be improved. Sometimes it's necessary to stop tweaking what you've got trying to improve it, and start again from scratch. There are also times when you have to acknowledge that you've pushed the structure you have as far as it will go and it can't support further growth efficiently. I approach this from a mechanical view, but in many ways software exhibits similar limits. When you hit the limits, the least pain in the long term happens when everyone acknowledges it and works together in a collaborative manner to identify and solve the fundamental causes. The open source model is effective because there are many possible solutions and a small number of people can suffer 'group think' and miss really good solutions that can be imagined by a wider pool of knowledge and experience. DS is good, but I reckon we all want it to be even better. I haven't suffered 50 minute load times, but the couple of minutes I am experiencing are making me question one or two things and hope that the causes have been addressed properly in DS6. Regards, Richard
    Post edited by richardandtracy at
  • Matt_CastleMatt_Castle Posts: 3,093
    edited 8:00AM

    TheMysteryIsThePoint said:

    I'm sorry, I only do free analysis for Open Source projects where I feel like I belong to some sort of community.

    And yet you're prepared to spend hours arguing about it. I mean, whenever I think I have an idea for improving Daz Studio, I am happily willing to submit it to the dev team as a feature request, because ultimately it's an improvement I'd benefit from.

    In any case, at this point, there is no point in me or anyone else discussing with this with you any further, because whether it's trolling (in which case, yes, clap clap, very good, you got us, now maybe the next thing you should try and get is get a life), smugness, laziness, or just simply no longer being confident enough in your argument as to present it, this statement on its own constitutes your refusal to meaningfully engage in the discussion.

    Post edited by Matt_Castle at
Sign In or Register to comment.