Home Technical Talk

How to model a curved/twisted zip?

In 3ds Max or Zbrush. Trying to make a zip that goes along the edge of a jacket and it curves up to a lapel, so the upper part of it faces the different direction with a smooth transition inbetween. Tried pathdeform + clone, path constraint and whatever I could think of, but in the end it all boils down in arranging each zip small zip part manually which is a ton of boring work, because it always faces the same direction on a spline. Is there an easier, more effective way to make it? Something like this:

BbThAjy.jpg

Replies

  • Kroma!
    Options
    Offline / Send Message
    Kroma! polycounter lvl 9
    Isn't the Twist parameter of PathDeform working for you?

    What about using a Twist modifier on all of the segments before you PathDeform?

    You could use the Clone modifier to control your segments and use Rotate to turn the segments to get the same kind of effect as the Twist parameter. http://www.itoosoft.com/freeplugins/clone.php

    You could also try using an FFD before you PathDeform but be aware this will distort the shape of the segments the lower amount of control points you use.

    Hope this helps :)

    4SjlKRy.jpg
  • fleity
    Options
    Offline / Send Message
    fleity polycounter lvl 6
    you could try to orient the zip parts based on the normal direction of a poly plane. basically create a zip part at every vertex of one side of the plane and make them aim at the corresponding vertex on the other side of the plane or use the normal of that plane directly. that would give you a lot of control with a quite sane amount of work (maybe skin the plane to a couple of bones, even less vertices to control one by one). however I would still script the whole create zip part and align to plane work...
  • Ahoburg
    Options
    Offline / Send Message
    Thanks for a suggestion. I definitely can achieve needed result with twist modifier, but only if I break down the zip at least in 3 or 4 parts, which isn't the most convenient way, and I presume there's another way. Twisting the whole line before path deform works, but not as good, it misses the part inbetween no matter what I do. If only I could stack up twist modifiers, that'd make it much easier, but twist's limit effect doesn't seem to work properly,since it twists the mesh even beyond the lines.

    Here's my max file, maybe you can look at it? The red/green mesh indicates the direction the zip should assume, green being the one.
    fleity wrote: »
    you could try to orient the zip parts based on the normal direction of a poly plane. basically create a zip part at every vertex of one side of the plane and make them aim at the corresponding vertex on the other side of the plane or use the normal of that plane directly. that would give you a lot of control with a quite sane amount of work (maybe skin the plane to a couple of bones, even less vertices to control one by one). however I would still script the whole create zip part and align to plane work...

    Sounds like a whole lot more work, actually :) And there's like 150 of these small parts, and they all need to be at one distance from one another. I have no knowledge of skinning or scripting, unfortunately.
  • Kroma!
    Options
    Offline / Send Message
    Kroma! polycounter lvl 9
    I can't open that Max file, I'm on 2013 and it seems like it was made with a newer version. Could you save it as 2013 compatible please?
  • Ahoburg
    Options
    Offline / Send Message
    Kroma! wrote: »
    I can't open that Max file, I'm on 2013 and it seems like it was made with a newer version. Could you save it as 2013 compatible please?

    Sure, here you go.
  • Dickie
    Options
    Offline / Send Message
    Dickie polycounter lvl 9
    Look up path constraint.
    You could really easily make a quick zip tooth and draw the path with a spline and then path constrain the teeth along it, this leaves it very easy to edit/change the path
  • Kroma!
    Options
    Offline / Send Message
    Kroma! polycounter lvl 9
    What you have looks alright to me, it seems to follow the jacket for the most part. What exactly is the problem area?

    Remember to check the model from viewing distance and assess whether or not it's worth putting your efforts into details that once textures, shaders and animations are applied, will hardly be seen.
  • Ahoburg
    Options
    Offline / Send Message
    Kroma! wrote: »
    What you have looks alright to me, it seems to follow the jacket for the most part. What exactly is the problem area?

    Remember to check the model from viewing distance and assess whether or not it's worth putting your efforts into details that once textures, shaders and animations are applied, will hardly be seen.
    Yeah, I played more with twist modifier and more or less achieved a desired result with one strip, which is super. It can be better, but perhaps it's not worth the hassle. Looks like the twist center should be somewhere around the area where the zip starts to bend and have some 300+ angle to it. Thanks for help.
    Look up path constraint.
    You could really easily make a quick zip tooth and draw the path with a spline and then path constrain the teeth along it, this leaves it very easy to edit/change the path

    Path constraint is nice, but it doesn't work for this situation. And it's not very convenient. At least I couldn't make it to work.
  • Neox
    Options
    Offline / Send Message
    Neox veteran polycounter
    try pathdeform (wsm), should work flawlessly
  • Dickie
    Options
    Offline / Send Message
    Dickie polycounter lvl 9
    pathdeform world space modifier's a good one though I've always found it frustrating to work with.

    Tried it out and here's the max file incase you wanted to have a browse

    kvZ9OyF.png

    and the maxscript I used to work out how many teeth I needed is -
    curveLen = --insert result of curveLength here
    mul = curveLen / (selection[1].max.z - selection[1].min.z)
    count = 1
    
    while count <= mul do 
    (
    	maxOps.cloneNodes selection[1] cloneType:#instance newNodes:&nodes
    	percent = (count as float / mul as float ) * 100.0
    	nodes[1].pos.controller.percent = percent
    	format "% percent done\n" percent
    	count += 1
    )
    

    you'll need to use "curveLength <spline>" on your spline to find the length of the spline first and then it'll work out the math for you alternatively you can just replace the the bit after "mul =" with a number of teeth that you want it to produce.
Sign In or Register to comment.