FFD Mirroring

I’ve always found mirroring FFD Spacewarps to be a real pain. I finally decided to play a bit earlier today to try to find a good way of doing it rather than settling for a negative scale in the x-axis or roughing out a “mirrored” version.

So, we all know negative scale is a bad thing; however, mirroring without getting a negative scale is not as straight forward and easy as simply clicking the mirror button in the tool bar.  There are ways of getting around this for things such as morph targets: most straight forward in Max 2010 is using Symmetry Tools in the Graphite Modeling Tools. I’ve always found it to be extra tedious though when dealing with FFD Spacewarps. They are often warped into very obscure shapes for cartoon-style characters, and unfortunately the Graphite Tools only deal with Editable_Poly classes.  FFD Spacewarps are also a bit of a black hole when it comes to MAXScript, so as far as I know you can’t just go and write a tool to do it either.

Anyways, I’ve put together a little tutorial for how to get the mirrored version of an FFD Spacewarp without a negative scale. It uses a similar method to one that has been floating around for quite a while for mirroring morph targets (not sure where original credit is due, sorry :S), but it just requires a few slight edits for tricking Max to doing it with FFDs.

3 Comments

  1. Neat trick!

  2. Great method,

    There is a little problem with this way you doing it, which is : what if we have a FFD(5, 5, 5) then you can skin wrap that to a Box, but as you know inside of the Box is empty so how the interior FFD Control Points gonna get wrapped to the Box , in this case they remain at the same place. So to Fix it you just need to have a Box which has interior Vertices, so I wrote this little script which create a box like that regarding to the size of the box segments you need just change it as your box setting.
    ——————————————
    boxes = #()

    for x = 0 to 1 do
    (
    for y = 0 to 1 do
    (
    for z = 0 to 1 do
    (
    b = box width:10 height:10 length:10
    append boxes b
    b.position = [x*10, y*10, z*10]
    )
    )
    )

    –print boxes

    select boxes[1]
    macros.run “Modifier Stack” “Convert_to_Mesh”

    for i = 1 to boxes.count do
    (
    i += 1
    if i < 9 do
    (
    attach boxes[1] boxes[i]
    )
    )
    ——————————————

    Good luck,
    Ehsan Kiani.

  3. Hey! Thanks for catching that and posting a solution as well. I had overlooked that and yet to be in a situation to notice it. I might go back and add to the end of the video to mention this and show the solution. You will get full credit. Thanks again!

Leave a Reply