How to add 1 vertex to a character?



  • Here's a problem that for many years I thought exposes a basic defect with Poser's architecture, but maybe I just never thought of a process to do it.

    Say that I have a finalized figure which has 100 morphs, 50 bones, 20 magnets, 50 joint weight maps, 20 materials, 3 soft body simulations and 1 dynamic hair. Then after all my hard work on building that figure I think... "Oh no! I forgot a vertex! Let me add a vertex here!".

    So one would export the mesh to Blender as an OBJ, add the vertex in blender, then import the OBJ back in Poser, then copy the 50 bones from the original figure in the setup room. All that is 10 minutes tops, and I know that Blender will automatically adjust the UV map to add my vertex there.

    But then... what? I still have 100 morphs, 20 magnets, 50 joint weight maps, 20 materials, 3 soft body simulations and 1 dynamic hair to do... what of that has a way to reuse easily, and what will be a pain to redo?


  • Poser Ambassadors

    Hi, See my video 1 and video 4 in the Poser2Blender2Poser tutorial series on YouTube.

    Your single vertex is not the major problem in your workflow.

    Never export a rigged obj file from Poser because Poser will split it up into individual vertex groups hereby doubling all vertices at all welds.
    => Changing vertex order on weightmapped figures will make the obj explode in Poser when bend.

    On conventionally rigged characters, you "can" add a vertex in Blender to the ORIGINAL obj file and use that one in Poser.

    On weightmapped figures, this becomes impossible. You have to repaint the weightmaps for the affected vertex groups for all bends.



  • You can add vertices to the geometry without messing up morphs as long as you add them to the end of the vertex list and all vertices already there are not changed place in the list. If you insert a vertex in the list say after position n, your new vertex would be number n+1, and original n+1, would become number n+2, and become associated with bending weights and morph deltas of the old n+1, and so on. All vertices originally on positions n and over become wrongly associated, so the end of the list is where you can add withoiut messing up.

    Of course you will need to add all referencing information for a new vertex, so fix the weight maps and the morphs.

    It is not all as black as it seems though.
    If your figure does not use weight mapping but traditional Poser rigging, of course there are no weight maps that can be messed up. It may help to use traditional rigging to build the initial rig and freeze those to weight maps later.
    The 'copy morphs from' function should bring you a long way to regenerate the morphs for your modified mesh.


  • Poser Ambassadors

    Correct:
    The possibility to add or remove vertex is one of the big advantages of conventional rigging. => That's why it is good practice to convert to a weightmap rigging at the last possible moment.



  • Thanks for the tutorial, tony.

    So even if the morphs are compatible using the vertex index trick, you still need to load 100 morphs one by one, with the Load Morph function, right?

    And then you need to re-create and copy/paste 20 magnets, 20 materials and 3 soft body simulations from scratch, correct?

    I always thought of this as a basic problem with Poser's approach of not implementing any vertex insert/delete function as that in Poser if you change the topology of the mesh then you have a lot of rework, while if you do all in Blender (sculpting/rigging/animating) the rework is much smaller, because Blender will adjust a lot of that stuff (like shape keys) by itself when you edit the topology.



  • @fbs7
    If you add the vertex at the end of the row you cannot use the .obj import anymore to load as a morph unless you add vertices there also but you can use the same .cr2 with morphs or use the same morph injections as before. The morph set for Antonia was made before the geometry was extended with 'fake' polygons as they were necessary at the time to support the ghost bones, but they work fine.



  • Earl started a thread elsewhere about the features that we might want in Poser 14. I'd like the ability to morph by volume, not by vertices, so one volume becomes the target for another. I realise mapping one to another could appear problematic, but if you've ever played with face mapping software, you'll know it's easy to simply designate key points for translation to new locations (eye and mouth corners for instance).

    I'd also love to see any geometry usable as a magnet.



  • @fverbaas said in How to add 1 vertex to a character?:

    @fbs7
    If you add the vertex at the end of the row you cannot use the .obj import anymore to load as a morph unless you add vertices there also but you can use the same .cr2 with morphs or use the same morph injections as before. The morph set for Antonia was made before the geometry was extended with 'fake' polygons as they were necessary at the time to support the ghost bones, but they work fine.

    Hmmm... how about this: say one has in Blender the original OBJ. Then, instead of having 100 other OBJs for the 100 different morphs, one has 100 frames in Blender, each with one shape key for the morph.

    Then you add a vertex in frame 1 in Blender, say through edge/split; that will also add the same vertex in the 100 shape keys, automatically. Then the user adjusts that added vertex in the shape keys where the vertex is relevant. Then he exports the whole series of 100 frames as a FBX.

    Now, if one would have a script in Poser that would read that FBX with 100 frames, and then reload each morph target based on the frame where that is in the FBX, then voila, now you have a pipelined way to modify the topology in Blender, automatically adjust all morphs that use that topology, and then a way to mass load all that stuff back in Poser -- perhaps using a control file that says "frame 2 corresponds to EyeBlinkLeft" and so forth.

    Of course such script does not exist atm, but is that feasible as a way of establishing a pipeline for modifying rigged characters in Poser?

    A DeLuxe(tm) complement to this would be another script that would take a character in Poser and then build that in Blender as a base mesh with 100 frames, each frame with a shape key corresponding to the 100 morphs from Poser - but then I have no clue if that's feasible or not.