ZBrushCentral

Edgeloops causing distortion when rotating geometry

This is meant to replace my previous post on lightwave posing technique problems - due to it not being a Lightwave problem at all ?

It appears that adding edgeloop geometry causes distortion when rotating sections of a model once subdivision is applied. Note the simple arm model below and the effect of adding an edgeloop section when it’s rotated at the “elbow”. The distortion only appears when the subD level is increased after the rotation. Once this happens, decreasing the subD level back to 1 reveals that the distortion is now applied to the level 1 mesh as well. I’m hoping this is user error and there’s an easy way out :wink:

Why do you need to subdivide the model before your low res is done?
Also with Zbrush what you do on one level
will impact the other levels in the mesh
once you traverse through them. This is one
of the most powerful things about Zbrush.

Skycastle,

That’s a valid question and I’m going to try and answer :wink:

In this specific case, it was one of my first three z figures. After getting to a fairly advanced point on the model I realized that to properly pose the character using a low rez mesh I needed more control at the joints and added edgeloops. I’ve also found it necessary to add edgeloops for certain types of large scale forms during the modeling process. It helps keep the model resolution manageable and gives the ability to control when and where resolution is added when subdividing.

For really effecient character models that can be animated and rigged well in other packages it’s extremely important.

Granted there may be better ways for the next time out, but for versatile and flexible models (rigging, animating, natural deformations during posing) it’s the best way. It’s pretty rare for a modeler to establish all the base geometry (and edgeloops if used) then not have to add more later in the process as the model is developed.

As for the edgeloop effects propogating through the subdivision heirarchy, that’s what I love the most - it’s a breeze to modify characters. The only issue I’ve had at this point is the distortion outlined above. I’ve added loops during the modeling process to all my characters so far and really want to be able to pose them !

This was sort of an exercise for me - to not use another modeling app to create the base geometry and do the whole shebang in Zbrush. Up until this point it’s gone extremely well and I hope there’s a solution to this one little bitty problem :slight_smile:

Wanted to bump this one again seeing that there hasn’t been any satisfactory technical explination or workaround and I keep banging my head against this problem. Anyone ? Anyone ? Buehler ?.. :wink:

Are you applying the mask before or after creating the edge loop? Masks should be applied after an edge loop operation rather than before, since this allows ZBrush to take the additional geometry into account when performing deformations based on the mask intesities. If the mask is applied before adding the edge loop, then you may get the kinds of results that you’re showing here.

Matthew,

No - although the example implies it it happens when the mask is applied after creating the edgeloop. I’ve tried every conceivable method of fixing this problem and it happens to any piece of geometry I add an edgeloop to, complex or simple.The greater the rotation, the more severe the distortion. I’ve had experience with software QA and testing so I tend to be pretty thorough in this sort of thing.

I’ve tried deleting the lower levels of subdivision (5 is top) and reconstructing subdivision in a hope that rebuilding the geometry would sort it out but that didn’t work either.

Any rotation applied wether manually using the deformation xyz rotate controls or importing a reposed version of the level 1 mesh from another application causes the same result. Translation doesn’t seem to cause it, only rotation. It’s as if the vertices created by the edgeloop function are getting different values (alternating increased plus and minus at each loop and creating a zig zag pattern) from the rotation operation. It is weird. the further the rotation and the further out the geometry from the rotation point the worse the distortion.

It’s been driving me crazy - hopefully you can shed some light on the problem !

Thanks

Wanted to add that if there’s anything I can provide by way of example geometry to you I’d be happy to oblige. So far on my end it’s consistently reproduceable with anything I add edgeloops to. It may not be noticeable with minor rotations, but rotate an edgelooped leg 90 degrees up at the hip and it’s pretty ugly.

  • Jay

Jay,

The easiest thing to do is to record and post a script that shows the distortion happening. That way everyone is working on the same page…

Sven

Duhh…Thanks Sven !
Disclaimer first though - this is my first ever recorded z session so it’s pretty raw :eek:
What a great tool for troubleshooting !

(btw - is there a zscripting for dummies tut somewhere ? Couldn’t find anything initially…)

Basically shows a quick “arm” type form created in spheres, adaptive skin made/ saved and redrawn (my workflows don’t lend themselves well to keeping the zsphere model).

Center located at elbow, then forearm is rotated - all’s fine. Hide polys, create an edgeloop and rotate again at highest subdivision setting - all’s still fine.

Undo, clear mask , rotate forearm at level 1 and bam, distortion. Decrease back to level 1 and distortion is “set” in base mesh.

Hope it helps !

edge loop problem.zip

Thanks for the ZScript. We’ll take a look at it and if we find more relevent info I’ll post it in this thread.

Meanwhile, a quick method to produce the desired result is to apply the rotation at the highest subdivision level. This will eliminate the need for transformation interpolation, and will guarantee exact rotation of the affected high resolution vertices.

Thanks for the quick response Matthew !

Yep - rotating at the highest subdivision level does work, but this prevents being able to pose low resolution versions of edgelooped models in external apps for re importing back into zbrush as morph targets.

I’ll keep a lookout for any more feedback.

Matthew,

Just FYI - I’m running into another problem that may be edgeloop related ?

When activating the cage mode for subD level 1 with this geometry, the cage distortion causes pinching to show within the edgeloop areas. Subdividing the cage geometry within Z brush or Lightwave shows the creases. The level 1 non cage geometry subdivides smoothly though.

Granted, the geometry in this example isn’t as optimized as it could be (and will be next round) but should this be happening ? Is this another area where edgeloop geometry calculations are askew ?

My concern is that in order to get optimal displacement the map should be generated from the cage geometry, and the edgeloop pinching is preventing me from doing that.

Thanks,
Jay