Issues with morphs projected on to geografts

andya_b341b7c5f5andya_b341b7c5f5 Posts: 694

Question: When a morph is projected on to a geograft from a figure, say the full body Height morph on Genesis 3 Female, how do you get the bones of the geograft to be re-positioned automatically as part of that projection?

Background/explanation

I have created a geograft with rigging to replace one hand of G3F.  When loaded on base G3F it works as expected, including posing the bones.  When I dial the Height morph (Actor/Full Body/Real World) on G3F, a generated (projected) morph appears on the geograft (FBMHeight).  This has a value matching the G3F Height value.   The mesh of the geograft moves up or down according to the increased or decreased height of G3F.  So far, so good.  However, the bones of the geograft stay in their original position, so the rigging is now broken. 

I can fix this up to a point by applying 'Adjust Rigging to Shape' to the geograft.  The bones are re-positioned and the rigging will now work.  But this has to be done after every change in the value of the Height morph, so it is impractical.  It seems to me there must be a way to set up some sort of ERC arrangement such that the G3F Height morph 'drives' the positions of the bones of the geograft so they maintain the correct position in relation to the geograft mesh.  I cannot figure out how to achieve this.

I note that with geograft products I have bought, this is indeed what happens.  As soon as I dial the Height morph, the FBMHeight property appears on the geografted product, and all the bones of that geograft show up as sub-components of G3F's FBMHeight under 1st stage (Add/Subtract) in the property hierarchy.  These sub-components do not appear for the projected morph on my geograft.  Now, I can create a new ERC property on G3F after applying Adjust Rigging to Shape to my geograft, with the geograft bones as 1st stage sub-components.  Unfortunately, after saving this new property as a morph asset and reloading G3F, all the sub-components for the geograft bones have disappeared from the property.  Also, it's a new property on top of the G3F Height and the projected FBMHeight on the geograft, which it seems I should not need.

Can anyone please help me with what I need to do to get this to work in the same way as I see existing geografts work?

Post edited by andya_b341b7c5f5 on

Comments

  • As far as I know custom bones need to be adjusted, manually or with Adjust Rigging to Shape, which requires using a custom morph. Do the items you are looking at not have a custom set-up for the shapes thata re working before you set the shape to on?

  • andya_b341b7c5f5andya_b341b7c5f5 Posts: 694
    edited November 2018

    Thanks, Richard.  I can't see any 'custom setup' or custom morph on the bought geograft that works as I would expect.  (The bought geograft is the genitalia for G2M.)  Maybe I just don't know what to look for. The projected morph appears on the geograft as soon as I dial it up on G2M, it's not there prior to that.  I have got hidden properties shown.  The bones for the geograft are 'magically' added to the projected morph as sub-components as soon as it appears, as far as I can see.

    I am wondering if I did something wrong when I used the Transfer Utility with my geograft.  I have gone back to that stage, and tried a few combinations of options.  Nothing I have tried achieves the same kind of results.  If I set up the G3F Height morph as a favorite I can get it transferred to the geograft, as 'FBMHeight', but that is then not a 'projected' or 'auto-generated' morph.  Also, I can't find a combination of options that doesn't also completely destroy the weight mapping and the face groups on the geograft: the weight mapping disappears completely, and the face groups all end up with zero faces assigned to them.  I have to uncheck 'Remove unused bones' or the TU will remove all the bones in the geograft as well, I presume because the weight maps have gone.  I had similar issues with the weight maps and face groups the first time around and just had to slog through re-doing them all. 

    I'll get back to this after the weekend.

    Post edited by andya_b341b7c5f5 on
  • I am coming back to this as I still cannot get the desired results after extensive testing with a simplified case.

    I have a modeled a simple figure intended ultimately to replace the right hand of a G3F figure.  It has a single 'finger' with 5 bones in a chain, parented to a bone named rForearmTwist.  I have used Transfer Rigging (Figure Space) to align the rForearmTwish bone of the geograft-to-be with the same bone of the G3F figure.

    I have observed with store-bougth geografts that when a morph (e.g. Height) is dialed in to the figure (G3F) a corresponding morph is generated automatically on the geograft (FBMHeight).  The value of the generated morph mirrors the value of the morph on the parent figure, and the custom bones within the geograft are controlled by the generated morph.  The bones of the geograft show up as sub-components of the generated morph in the Parameter Settings dialog 'as if by magic'.

    I cannot get this behaviour with my figure, in spite of trying every set of options in the Transfer Utility that I can imagine.  I can get a corresponding morph generated on the graft-to-be but the custom bones are not controlled by the generated morph, with the exception of the rForearmTwist bone.  The custom bones are all parented to the rForearmTwist and so I cannot see why they do not follow it.  (I can also deliberately transfer the morph (Height) to the graft-to-be in the Transfer Utility, but on the bought geografts it is generated/projected automatically when I dial the morph on G3F.)

    Attached is an image showing the figure and its bones after dialing Height to 100% on G3F.  The 5 custom bones have not moved; rForearmTwist has moved down.  I have hidden G3F for clarity.  I have also attached a screenshot of the Transfer Utility options that give me the results above.  I am not transferring weight maps or face groups because if I do the ones I have already defined on the graft-to-be are destroyed.

    Any ideas as to what I need to do to get the behaviour I see on bought geografts gratefully received.  I am using DS 4.10.0.123 on Win 8.1 64bit.

    Screenshot (24).png
    1920 x 1080 - 588K
    screenshot.JPG
    725 x 989 - 78K
  • You may need to give the fitted item more of the base Genesis skeleton I think, though I'm far from certain. Try giving it everything from Hip to the Forearm twist, and perhaps the hand too

  • OK, Richard, will try that when I have the chance. And I will look at the store-bought examples I have with again this in mind.  I'm hoping there isn't a PA-only element to this as I've no plans for marketing this, just a personal project(s) I'd like to complete.

  • I'm fairly sure it isn't a PA-nly thing (other than bitter experience :) ).

  • yaruuvvayaruuvva Posts: 33

    @andya_b341b7c5f5, were you able to find a solution to your problem? I am experience the same issue with my geografted mesh (female genitals).

  • @yaruuvva - No, sadly I never did find a solution.  The amount of frustration involved in trying and failing repeatedly to make it work (in the way that is obviously possible from bought products) meant it was no fun any more, so it's more or less permanently filed under 'Unfinished'.  I never found the motivation to try Richard's last suggestion, as it seemed far from trivial.  Pity to waste all the work I did on the modeling and rigging, and I thought it looked quite good, but sometimes life's just too short.

    hand.JPG
    535 x 855 - 55K
  • yaruuvvayaruuvva Posts: 33

    wow, this hand looks amazing!

  • yaruuvvayaruuvva Posts: 33

    wow, this hand looks amazing!

  • Syrus_DanteSyrus_Dante Posts: 983

    @andya_b341b7c5f5

    You may want to have a look at my post in this thread: How to prevent part of a geograft following figure morphs?

    There is a settings dialog called Rigidity Groups Editor hidden in the Geometry Editor if you set it to Vertex Selection. With the Rigidity Groups Editor and a Rigid Group made out of a vertex selection you define how the geograft will deform with the figure shapes and which figure bone it will follow.

    Also I think Richards suggestion about including all bones of the figure hierarchy from the hip to the hand is necessary in order to make it work.

  • @yaruuvva Thanks for the compliment.  I'm quite happy with it, hence a bit sad I can't solve this issue.  If I could, I would like to do an equivalent left hand, perhaps extend to the whole arm.  (Sharp line at the join needs attention too.)

    @Syrus_Dante I don't think rigidity (or lack of) is the problem here.  I have a rigidity map applied, basically completely rigid except around the with G3F, and it works.  Applying a full body morph like Weight, which does not alter the figure height, doesn't alter the graft's shape and the rigging still works (well enough).  The problem is the bones of the graft not moving in line with the figure's bones when a figure morph moves the arm bones of the figure, specifically the Right Forearm Twist. 

    As to adding bones from the hand to the hip, if I merge hierarchies in the Transfer Utility I get those bones, but the many bones in the graft are destroyed along with the weight mapping.  In theory, I could re-create  all the graft bones and re-map them, but the lack of tools in Daz Studio for rigging as accurately as is required here makes this a very unattractive prospect.  Frankly, doing it once was enough.  I just cannot find a combination of options in the TU which does not destroy the graft bones but does give me the bones from Right Forearm Twist to Hip.

    HandGeograft01.jpg
    2400 x 2400 - 2M
  • Syrus_DanteSyrus_Dante Posts: 983

    The option to keep both the bones of the Source and the Target figure is called Merge Hierarchies. Remove Unused Bones will remove those that have no Weight Map I think, sometimes refered to as ghost bones.

    But you propably don't want to have all bones of the source figure.

    In my post here: Easiest way to rig a new character

    I was showing the Convert Prop To Figure trick by parenting the prop to a figure bone and in the dialog you can choose Inherit Skeleton of Parent to create all bones neseccary starting from the hip.

    You could use a simple primitive, parent it to the hand left or right, then go to Edit>Object>Rigging>Convert Prop To Figure and you have your rigging. Now you could combine this with the Transfer Utility with Merge Hierarchies with your rigged robot hand figure. With this you would have the genesis figure rigging and your robot hand rigging in the same figure. Next in the Joint Editor you can re-parent the robot hand rigging to the Forearm Twist bone then it should follow all movements correctly.

    For demonstration purposes I once made this simple hand hook prosthesis. It is technicaly a GeoGraft but not merged to the figure. I'm only hiding the hand by the Auto-Hide group of the geograft.

    In the attached screenshot you can see the hand hook prosthesis figure hierarchy attatches to the Right Forearm Twist bone and even got extra rigging so I can scale, position, and bend those few hook segements.

    As I tested further by turning up Height and Heavy on the G3M figure to make hiom fat and short I saw the issues you may also have. The shape got distorted and the additional bones in the prosthesis moved away from the arm to the right somehow.

    I tried to fix it with various methods: in the Geometry Editor I assigned almost all of the prosthesis to the Rigid group. I also added a edge-loop as References. In Vertex Selection mode I also opened up the the Rigidity Editor and added the Right Forearm Twist bone as Reference and Transform Bone.

    Then I added the Height morph as Favourit, selected all geometry and used Cleared Selected Deltas from Favourits to get rid of the mesh moving in random directions.

    Next I also made a Rigid Weight Map in the Node Weight Map Editor, unfitted the geograft, Edit>Figure>Clear Generated Morphs and fit the geograft again to get new morphs generated.

    Finaly I also tried with the geograft unfitted and the Height morph dialed up Adjust Rigging to Shape in the Joint Editor, this wasn't working eigther. So I went to the Hierarchy Editor and deleted all Bone Adjustments from the Sub-Components, but still no luck. My only idea to make this work is to position the prosthesis bones with the universial tool and "bake" the position into the Height morph. This would be an unsatisfying workaround becasue I thought conforming figures would follow the rigging of the conformer figure even if the height does change.

    HandHook_Prosthesis_Right_Screenshot001.png
    1920 x 1044 - 887K
    HandHook_Prosthesis_Right_TestRender001.png
    887 x 887 - 3M
    HandHook_Prosthesis_Right_Screenshot002.png
    1920 x 1044 - 744K
    HandHook_Prosthesis_Right_Screenshot004.png
    1920 x 1080 - 1M
    HandHook_Prosthesis_Right_Screenshot003.png
    1920 x 1080 - 1M
    HandHook_Prosthesis_Right_Screenshot005.png
    1920 x 1044 - 1M
    HandHook_Prosthesis_Right_Screenshot006.png
    1920 x 1044 - 477K
    HandHook_Prosthesis_Right_Screenshot007.png
    1920 x 1080 - 483K
    HandHook_Prosthesis_Right_Screenshot008.png
    1920 x 1044 - 483K
    HandHook_Prosthesis_Right_Screenshot009.png
    1920 x 1044 - 1M
  • @Syrus_Dante, thanks for all that information.  It will take me a while to understand this issue again and I don't have time or motivation to do that immediately, but I will come back to digest what you say here when I do.

    I cannot get round the feeling that the bones of the graft, parented to the Right Forearm Twist bone, surely should follow the parent bone when it moves down as I apply the Height morph to G3F.  All the bones in the figure parented to the hip bone follow the hip in this way.  And yet the graft bones do not follow the Right Forearm Twist.  I can see that it does happen with products I have bought from the store. Though these are all joined to the figure at or around hip level, the principle should still be the same.  So what extra step(s) or techniques are required to get that to happen?

  • Syrus_DanteSyrus_Dante Posts: 983

    I would also try to save the geograft as Figure/Prop asset to the content library. You can have multible test versions I save those assets in the same Product folder but count up a number in the item name. Then restarting DS and load the saved geograft asset from the content library into the scene maybe this makes a difference in getting the conforming geograft settings applied correctly.

    Otherwise my test initialy showed that parts of the geograft actualy follow the figure height/heavy morphs correctly see HandHook_Prosthesis_Right_Screenshot002.png where the hook cap fits the forearm.

    The auto-generated height morph seems to simply add morph deltas to move the geometry verticaly to the correct height rather than adding bone translation adjustments into the Sub-Components of the morphs as some may think. By trying different things I've deleted those deltas with Cleared Selected Deltas from Favourits. The weird thing with the height morph was that the cap moved down while the unconnected hook moved up the same time but maybe this was casued by the fact that I've modeled the hook orentation in the wrong way and rotated the hook lateron.

    Anyway to me it looks like a bug with DS that the additionaly rigging and the unconnected geometry parts of the attached geograft does not follow the rest of the rigging by changing the figure shape.

  • andya_b341b7c5f5andya_b341b7c5f5 Posts: 694
    edited August 2019

    So, after much wailing and gnashing of teeth, I have reached some kind of conclusion here, though not the final destination I had in mind.

    Long story short.

    There is a bug (if you're me, perhaps a 'feature' you're Daz3D, I'm guessing) which affects geografts that replace a GxF/M body part (hand, arm, foot, leg etc.) whereby the bones in the geograft do not follow the bones of the figure when a morph is applied to the figure which moves the figure's bones e.g. FBMHeight. 

    This completely wrecks the rigging of the geograft, because the mesh the bones deform has moved with the main figure.  The issue can be worked around by creating an ERC controller property to move the geograft bones to match the geograft mesh.  Sadly, this has to be done for every single morph that you want your geograft to support.  So, not a practical solution if you want to cover more than a couple of morphs.

    The issue does not appear to affect geografts that are adding something to the figure e.g. horns, tails, genitalia, rather than replacing an existing body part.

    Full story and workaround for those interested enough.

    The problem has been described in detail earlier in this thread.  I have been testing using a simple and ugly geograft to replace G3F's right hand.  When you apply FBMHeight to the figure, for instance, the five bones in the geograft that have no equivalent in the G3F rig do not move down with the bones in the arm. 

    I found some helpful information to somewhat explain this behavior in Blondie999's tutorial 'Advanced Rigging in DS4 Pro' (from the Daz store), where exactly the same issue is described.  So, it's not me doing something wrong, which is a relief. 

    Blondie999 refers to an option in the Joint Editor to display 'ghost bones'.  As I understand it, these represent the memorized state of the bones. When the morph is applied to a figure, these 'ghost bones' stay put and actual bones move away from their memorized positions - well, except crucially for any bones belonging to geografts that replace body parts.  These bones, for some reason (bug?) stay stuck to their memorized positions.  Blondie999 describes the process to create an ERC property controller to move the geograft bones to where they should be, but the method is based on DS 4.0.3.47, so cannot be applied today without significant revision.

    Below is my adapted method using DS 4.11.0.383, which is definitely not perfect.

    1. Make sure the geograft rigging is memorized, without any relevant morph(s) applied.
    2. Apply a morph to the GxF/M figure that causes the issue e.g. FBMHeight.
    3. With the geograft selected, use the Adjust Rigging to Shape function.  Uncheck all geograft bones except the ones that have not moved as needed.  Check all 3  'Adjust...' options at the bottom of the dialog.  This should cause the geograft bones to move to match the geograft mesh, more or less.  Test the rigging*.
    4. In the Properties pane, find the auto-generated morph on the geograft with the same name as the morph on the figure that you dialed up.  Put the pane into Edit mode, right-click this auto-generated morph and choose 'ERC Freeze'.
    5. Click the 'Create New' button, give the property a name different from the morph you applied (e.g. FBMHeightGraft) and check the 'Create as Empty Morph' checkbox.  Change the path if you like.  Click Create.
    6. Back in the ERC Freeze Options dialog, check the list of Freeze Properties for any 'rogues' that you don't want to be controlled by the new property e.g. I somehow had the FBMHeight on the main figure, and weirdly a small twist on the Right Forearm Bend bone.  Deselect them.
    7. Check all 3 checkboxes under Additional Options and hit Accept.  Note - this includes the Restore Figure Rigging option, which Blondie999 recommends not checking.  I tried not checking it but had issues with that, which were resolved by checking it. 
    8. Now you have a property slider on the geograft which when at 100% should line the geograft bones up with the geograft mesh, and also with the figure bones.  We don't want to have to dial this manually when we apply the morph to the figure; this property needs to be controlled automatically by the morph on the main figure.  So...
    9. Dial the morph on the figure and the new property on the geograft down to 0.  Clear the auto-generated morph (e.g. FBMHeight) on the geograft (Scene pane 'waffle' menu, Assets->Clear Generated Morphs).
    10. Rename the new property on the geograft to match the name of the morph on the figure e.g. 'FBMHeight'.  This stops Daz Studio auto-generating a morph with this name on the geograft in future.
    11. Select the morph on the main figure (FBMHeight), right-click and choose 'Show in Property Hierarchy'.  (I suggest docking the Property Hierarchy to keep it visible/accessible.)
    12. In the Properties pane, find the new property on the geograft, and drag and drop it onto the main figure morph under Sub-Components->1st Stage (Add/Subtract).  
    13. The new property should now dial up/down automatically in line with the morph slider on the main figure, and as a result the bones of the geograft should stay aligned with the geograft mesh and with the bones of the main figure.

    *Hopefully, the adjusted bone positions will be acceptable.  For most purposes they probably will, but this is where I still have issues.  Firstly, for the full hand geograft I have been attempting to build, the bone positions aren't precise enough and hence the mesh deformation isn't right.  In theory, I could adjust this manually, but the number of bones involved makes this very tedious and time consuming, and the lack of certain tools in Daz Studio make it practically impossible.  In addition, when I tried adjusting the rigging in the simple test geograft, problems arose in the rest of the process which I could not resolve.  However, I did not try very hard because it has become apparent, regrettably, that my intended project is not achievable in DS at present.

    Geograft 01.jpg
    2006 x 1384 - 282K
    Geograft 02.jpg
    1920 x 1024 - 306K
    Geograft 03.jpg
    1920 x 1024 - 263K
    Post edited by andya_b341b7c5f5 on
  • This is neither a bug nor a feature - DS simply has no way to guess how a custom bone should be modified to track a new shape, other than running Adjust Rigging to Shape which isn't necessarily something you want happening in the background.

  • DS simply has no way to guess how a custom bone should be modified to track a new shape, other than running Adjust Rigging to Shape which isn't necessarily something you want happening in the background.

    Then I don't understand how DS manages to do exactly that when a geograft adds to the figure rather than replacing a body part.  It's only a matter of making child bones follow their parents.  The bones in the graft that don't move (Sec01-05) are parented in a chain to a bone (rForearmTwist) that does move correctly when the morph is applied, following it's parent.  DS seems capable of making child bones follow their parents in many other situations, but not here.  Not doing so is surely not the correct behaviour, hence my view that this is a bug (one that Blondie999 appeared to share when writing the referenced tutorial).

  • DS simply has no way to guess how a custom bone should be modified to track a new shape, other than running Adjust Rigging to Shape which isn't necessarily something you want happening in the background.

    Then I don't understand how DS manages to do exactly that when a geograft adds to the figure rather than replacing a body part.  It's only a matter of making child bones follow their parents.  The bones in the graft that don't move (Sec01-05) are parented in a chain to a bone (rForearmTwist) that does move correctly when the morph is applied, following it's parent.  DS seems capable of making child bones follow their parents in many other situations, but not here.  Not doing so is surely not the correct behaviour, hence my view that this is a bug (one that Blondie999 appeared to share when writing the referenced tutorial).

    Sorry, I'm not following what you are saying here (the details of what is working and what isn't).

  • Sorry, I'm not following what you are saying here (the details of what is working and what isn't).

    I think the images I posted previously show what is/isn't working best in terms of bones moving/not moving as required when the morph is applied.  You can imagine how that wrecks the rigging and hence posing the bones results in horrible mesh distortion. 

    Or if you have access to the tutorial by Blondie999 that I mentioned, then refer to section 7.6.4 'Morphing Problems' and in particulary section 7.6.4.2 'The Bone Ghosting Problem', which shows exactly the same problem I am having.

Sign In or Register to comment.