Posing controls bugs

marco95marco95 Posts: 26
edited December 1969 in Daz Studio Discussion

Hi,

Be careful if you want to use the news pose-controls who can move easly arms for exemple.

After using the copy/paste pose or the symmetry/miirror (Shitf Y) don't work :-(

So be careful and use the old Bend/twist/slide for each node.

Cordialy

Marc

Nb; I have post the bug

Comments

  • Richard HaseltineRichard Haseltine Posts: 100,785
    edited December 1969

    It isn't a bug, just a limitation - the symmetry function works on rotations, and the pose controls aren't transforms but control parameters. It is true, however, that as it stands you can't use the pose controls with symmetry.

  • marco95marco95 Posts: 26
    edited December 1969

    > isn’t a bug, just a limitation -

    Good joke :o)

    When you have passed some hours to do exactly pose,
    it's very fine to make a Shift-Y and make the miror position...
    very fine to discover that no because the pose-controls be using !!!

    IMO

    Marc

  • Richard HaseltineRichard Haseltine Posts: 100,785
    edited December 1969

    Given that there are only a few asymmetrical Pose controls you could adjust them fairly quickly by hand, or write your own script to mirror them after mirroring the rest of the pose.

  • kitakoredazkitakoredaz Posts: 3,526
    edited December 1969

    It is really strange,,if daz do not plan the poze controll can not wrok with symmetly,
    DAZ miss planning about poze controll.

    I know daz do not have clear plan about each tool usage.
    DAZ often just change behavor then add new tool, and find it can not work with some case.

    Richard say it is limitation. but it is no plan.

  • kitakoredazkitakoredaz Posts: 3,526
    edited December 1969

    symmetly must be expectd to make symmetly poze or swap, when poze figure.
    and poze controll are offered to poze easy. it is sectioned as pozing.

    if symmetly can not work with poze controlled rotation, it shows the symmetly have lack of usage.
    even though DAZ think it is just limitation, user do not know how daz plan each tool of daz studio.
    only programmer know the usage clear.

  • BlackFeather1973BlackFeather1973 Posts: 739
    edited July 2013

    Which pose controls are we talking about here ?
    I haven't had any trouble so far mirroring them, didn't try them all though.

    Edit : nm, got it now.

    Post edited by BlackFeather1973 on
  • marco95marco95 Posts: 26
    edited December 1969

    In attachement an exemple

    and a demo here :
    http://youtu.be/sfxiEjrtd98

    Marc

    bug-daz.jpg
    965 x 797 - 216K
  • Richard HaseltineRichard Haseltine Posts: 100,785
    edited December 1969

    As i said, it's a fairly simple thing to script - this seems, on a quick test, to work OK (though it does work only on the primary selection - adapting it to step through all figures selected would be fairly quick). It currently has only one of the pose controls added, but you can add the others pair-wise (get their labels from the Parameter Settings dialogue - click the gear icon at the end of the slider). It could be adapted to handle the pose controls on the hands and feet too. I may have a go at that, but no promises of when - if anyone else wants to try feel free, just note the original source of the base script in the source and readme.

    // Mirror Pose-controls
    // (c) Richard Haseltine, July 2013
    // Left-right reverse the pose-control sliders on
    // a figure.
    
    // List of controls to mirror, with each pair of labels in quotes
    // separated by a comma and in square brackets
    var controlPairs = [ [ "Arms Front-Back Left" , "Arms Front-Back Right" ] ];
    
    // Get the currently selected item, if any
    var fig = Scene.getPrimarySelection();
    if ( fig ) {
     // Make sure it is a figure, or if a bone get the figure
     if ( fig.inherits( "DzBone" ) ) {
      fig = fig.getSkeleton();
     }
     if ( fig.inherits( "DzSkeleton" ) ) {
      // Go through the list or parameters, getting them and reversing them
      var LCntrl, RCntrl;
      var oldL , oldR;
      for ( var n = 0 ; n < controlPairs.length ; n++ ) {
       // Use the labels in controlPairs to get the actual properties
       LCntrl = fig.findPropertyByLabel( controlPairs[ n ][ 0 ] );
       RCntrl = fig.findPropertyByLabel( controlPairs[ n ][ 1 ] );
       // If we found the controls, get their values and switch them
       if ( LCntrl && RCntrl ) {
        oldL = LCntrl.getValue();
        oldR = RCntrl.getValue();
        LCntrl.setValue( oldR );
        RCntrl.setValue( oldL );
       }
      }
     }
    }
  • marco95marco95 Posts: 26
    edited December 1969

    Whaou! That is not a beginner answer !

    Thank's for this possibility

    Marc

  • Richard HaseltineRichard Haseltine Posts: 100,785
    edited December 1969

    No, but if the names of the morphs were added it would work. I've modified the script a bit more, so now it wil work on all figures selected isntead of just one, and it can handle pose controls on body parts (one of the hand morphs in the example). I may have time to extract the full list of pose controls tomorrow, but if soemone reading thsi wants to pre-empt me (or to report any bugs) that will be welcome. (To use the script, copy and paste into the Script IDE pane available from Window>Panes(Tabs) and use the File>Save Script command in the pane to place it where you want it).

    // Mirror Pose-controls
    // (c) Richard Haseltine, July 2013
    // Left-right reverse the pose-control sliders on
    // selected figure.
    
    // List of controls to mirror, 
    // for root controls list each pair of labels in quotes
    // separated by a comma and in square brackets, with a 
    // comma before the next set or parameters; for controls
    // on a body part list the left body part name, the right body
    // part name, the left control name, and the right control name,
    // all in quotes and separated by commas with square brackets
    // around the group and a comma after (unless it's the last set).
    var controlPairs = [ [ "Arms Front-Back Left" , "Arms Front-Back Right" ] ,
             [ "Left Hand" , "Right Hand" , "Left Fingers Fist" , "Right Fingers Fist" ] ];
    
    // Get the currently selected items, if any
    var nodes = Scene.getSelectedNodeList();
    var figs = [];
    for ( var m = 0 ; m < nodes.length ; m++ ) {
     if ( nodes[ m ].inherits( "DzSkeleton" ) ) {
      figs.pushIfNotExists( nodes[ m ] );
     }
     else if ( nodes[ m ].inherits( "DzBone" ) ) {
      figs.pushIfNotExists( nodes[ m ].getSkeleton() );
     }
    }
    
    for ( m = 0 ; m < figs.length ; m++ ) {
     // Go through the list or parameters, getting them and reversing them
     var LNode, RNode;
     var LCntrl, RCntrl;
     var oldL , oldR;
     for ( var n = 0 ; n < controlPairs.length ; n++ ) {
      // There will be two properties for root nodes (the names of the 
      // parameters) and four for bone nodes (the names of the nodes and 
      // the properties)
      if ( controlPairs[ n ].length == 2 ) {
       // Use the labels in controlPairs to get the actual properties
       LCntrl = figs[ m ].findPropertyByLabel( controlPairs[ n ][ 0 ] );
       RCntrl = figs[ m ].findPropertyByLabel( controlPairs[ n ][ 1 ] );
      }
      else if ( controlPairs[ n ].length == 4 ) {
       LNode = figs[ m ].findBoneByLabel( controlPairs[ n ][ 0 ] );
       RNode = figs[ m ].findBoneByLabel( controlPairs[ n ][ 1 ] );
       if ( LNode && RNode ) {
        // Use the labels in controlPairs to get the actual properties
        LCntrl = LNode.findPropertyByLabel( controlPairs[ n ][ 2 ] );
        RCntrl = RNode.findPropertyByLabel( controlPairs[ n ][ 3 ] );
       }
       else {
        // Didn't find the node, so we must not give cotnrols to alter
        LCntrl = undefined;
        RCntrl = undefined;
       }
      }
      // If we found the controls, get their values and switch them
      if ( LCntrl && RCntrl ) {
       oldL = LCntrl.getValue();
       oldR = RCntrl.getValue();
       LCntrl.setValue( oldR );
       RCntrl.setValue( oldL );
      }
     }
    }
Sign In or Register to comment.