Correcting Rogue Morphs which Overwrite the Base Figure.

Home Page Forums General Chat Correcting Rogue Morphs which Overwrite the Base Figure.

Viewing 15 posts - 1 through 15 (of 19 total)
  • Author
    Posts
  • #2115281
    eelgoo
    Moderator
    Rank: Rank 7

    I suspect many of us have come across this issue.
    Occassionaly, you install a character package, usually from an inexperienced vendor, which after you load it once, it corrupts your base figure by writing to it's duf.
    The culprits are usually head morphs & body morph dufs.

    Now, whilst I can reset the base figure handily enough, if I were to load the character again, the same overwrite issue is going to happen again.

    I can & have sucessfully edited dufs in Notepad++
    Does anyone know where to find the rogue lines of the duf script that would write to the base figure?

    :0/

    #2115319
    outro
    Participant
    Rank: Rank-2

    If it's a rogue morph that fires up on the base model by default, check the head, body or character duf file of the unwanted morph.
    Under the "channel" section you will find the following entries "value, min, max".
    value and min should be set to 0
    If they're set to 1, then that's the problem.
    Setting them to 0 should solve the problem.

    #2115330
    eelgoo
    Moderator
    Rank: Rank 7

    I have corrected & resaved the base character. That is not the issue.

    The issue is that the corruption will reappear as soon as I reload the 'infected' character.

    I would like to get in the relevant character head & body dufs to correct the error.

    Is it the character head & body dufs you are referring to?

    🙂

    #2115338
    outro
    Participant
    Rank: Rank-2

    Yes, look into the head & body dufs of the character that gives you trouble
    Check the character duf aswell (the one that loads the full character with head and body morphs)
    if "value" and "min" are not set to 0, the head/body morphs of this character will load by default and take over the base model

    #2115391
    eelgoo
    Moderator
    Rank: Rank 7

    Great info!

    Thanks a lot.

    I sent you a little 'Thank you!'

    Eel 🙂

    #2115395
    outro
    Participant
    Rank: Rank-2

    Thanks! Hope it solved your issue.

    #2115650
    revolutioncom
    Participant
    Rank: Rank-1

    Hi eelgoo.
    Other thing you can do is use this script from Praxis on Daz3D Forum its really helpful to find rogue morph and another hidden translations that i are some body parts of the figures.I hope this can be helpful for you.

    Script:

    Link of the Script

    Guide how to use it:

    Guide

    #2115651
    eelgoo
    Moderator
    Rank: Rank 7

    Thanks for the input.

    I have managed to nail the problem with Notepad++

    TBH I think I would be lost with the complexity of that script.

    🙂

    #2115652
    revolutioncom
    Participant
    Rank: Rank-1

    its very simply to use just put in daz library, click on figure and run the script,after that click and utilites and click to list-non-zero morphs and list-non zero transformation.This going to open a notepad++ and list all non zero morphs and translations of the figure.
    If you want a more straight up script to show all morphs dialed on the figure you can this script below on Script IDE and it going to show everything that is dialed on the selected figure,including rogue morphs.
    After Finding the Rogue morph just change this value on morph file (if the morph is compress you need to descompress first).

    Script To find Rogue Morphs

    How to change Morph start Value:
    "modifier_library" : [
    {
    "channel" : {
    "id" : "value",
    "type" : "float",
    "name" : "Value",
    "label" : "Rogue Morph",
    "auto_follow" : true,
    "value" : 1,
    "min" : 0,
    "max" : 1,
    "clamped" : true,
    "display_as_percent" : true,
    "step_size" : 0.01
    },

    "value" stores the default value of the morph. Above, it's set to 1, which means it gets automatically turned on. In my case, this is bad.

    So,

    CHANGE:
    "value" : 1,
    TO:
    "value" : 0,

    Script:

    // Script to List all Morphs Dialed on the figure
    function dumpMorphs(obj)
    {
    var a = [];

    if(!obj) return false;

    var n = obj.getNumModifiers();
    for( var i=0; i < n; i++ )
    {
    var mod = obj.getModifier(i);
    if( mod.inherits("DzMorph"))
    {
    var oProp = mod.getValueChannel();
    var sName = mod.getName();

    var nMin = oProp.getMin();
    var nMax = oProp.getMax();

    var nDef = oProp.getDefaultValue();
    var nVal = oProp.getValue();

    var sLabel = oProp.getLabel();
    var sPath = oProp.getPath();

    //var bFlag = (nDef > 0) ? 1 : 0;
    var bFlag = (nDef != nVal) ? 1 : 0;

    if(bFlag) {

    var sVal1 = String(nDef);
    var sVal2 = String(nVal);

    if (oProp.getDisplayAsPercent()) {
    nDef = nDef * 100;
    nVal = nVal * 100;

    sVal1 = parseFloat(nDef.toFixed(2));
    sVal2 = parseFloat(nVal.toFixed(2));
    }

    var sEntry = String( "\"%1\", \"%2\", %3, %4")
    .arg(sLabel)
    .arg(sPath)
    .arg(sVal1)
    .arg(sVal2);

    a.push(sEntry);
    }
    }
    }

    return a;
    }

    (function ()
    {
    var node = Scene.getPrimarySelection();
    if (!node) {
    MessageBox.critical( qsTr("Nothing selected."), qsTr("Warning"), qsTr("&OK") );
    return;
    }

    if( node.inherits("DzBone")) node = node.getSkeleton();
    if( !node.inherits("DzSkeleton")) {
    MessageBox.critical( qsTr("Selection is not a figure."), qsTr("Warning"), qsTr("&OK") );
    return;
    }

    var obj = node.getObject();
    if(!obj) {
    MessageBox.critical( qsTr("Error getObject."), qsTr("Warning"), qsTr("&OK") );
    return;
    }

    var a = dumpMorphs(obj);

    print("Lines: " + a.length + "\n");

    for (var i=0; i < a.length; i++) {
    print(a[i] + "\n");
    }
    })();

    #2115738
    sandeep
    Participant
    Rank: Rank-2

    Check the character duf aswell (the one that loads the full character with head and body morphs)
    if "value" and "min" are not set to 0, the head/body morphs of this character will load by default and take over the base model

    Its not always that simple. In some cases, the corrective morphs are not even linked to the body morph as in the case of EM3D Charmaine. These unlinked morphs show up as soon as the associated joint is activated in any character even though the parent body morph stays at 0. If you have Charmaine installed, it's orphaned correctives will dial-in if you bend the arms or move the legs sideways in any of your other Genesis 9 characters.

    The right solution then is to add those missing ERC entries linking the thigh and shoulder correctives to Charmaine's body morph.

    #2115741
    eelgoo
    Moderator
    Rank: Rank 7

    I wasn't explicit, but I was referring to G8F / G8.1F

    I don't even want to think about G9!

    :0/

    #2115745
    sandeep
    Participant
    Rank: Rank-2

    The issues caused by orphaned JCMs are not restricted to any generation. You should consider yourself lucky if you haven't encountered them.

    #2115746
    eelgoo
    Moderator
    Rank: Rank 7

    TBH that doesn't surprise me. :0/

    #2115747
    sandeep
    Participant
    Rank: Rank-2

    For posterity, linking the Charmaine issue thread as reported in the official forums: https://www.daz3d.com/forums/discussion/663306/genesis-9-leg-bend-deforming-oddly

    Note, the thread does not discuss the root cause or provide a solution though. Not sure if the vendor has released a fix in the store.

    #2115750
    eelgoo
    Moderator
    Rank: Rank 7

    I get the impression, problems like these are from the vendor being either unaware of the potential problems, or being careless with the morphing.

Viewing 15 posts - 1 through 15 (of 19 total)
  • You must be logged in to reply to this topic.

 

Post You Might Like