Improving or alternate ways of creating MC Escher ribbon head effect


#1

Stumbled across this trick yesterday, and thought I’d share.

ribbon head boole.c4d (333.5 KB)

Project file above takes a free head from TurboSquid, and subtracts a helix from it using a boole. Head is poly painted with skintones on outside, and purple inside. Neat trick, but it’s slow to render, and I’d like to create thickness to the skin. The edges the boole creates are messy, and the cloth simulator freaks out trying to roll them.

So, I thought I’d turn it over to the community and see if anyone has any way to improve on:

  1. Render times: Different method? Change some of my existing settings? (I just generally tried to get reasonable geo density on objects, but know next to nothing about how to optimize better.

  2. Better edge quality: I would guess that remeshing via volume mesher or similar would do a better job of having edges match the rest of the geometry, but I’m not sure how to do this while retaining the paint job. Perhaps it’s just because I colored using poly selection? Some way to use UV map instead and preserve paint through remeshing process?

  3. Edge thickness: Cloth simulation seemed like the obvious go to, but perhaps I have missed some way to extrude inward, or bevel inward? Perhaps better optimizing settings for eiher object ahead of time, or applying some sort of smoothing or other process prior to rolling the edges would help?

  4. Outside the box: I’ve tried faking this a few times too by doing various versions of using invisibility masking to cut away the front while revealing the back, etc. Haven’t gotten it quite right yet, but these methods certainly render faster. Interested to know too if the perspective doesn’t shift if there’s a way to fake the edge thickness using a simple mask technique as opposed to slicing and reconstructing geometry.


#2

After messing with every control I could think of, I got some better (though not quite usable) results with cloth simulator.

ribbon head boole cloth.c4d (347.7 KB)

There’s something odd that happens as I increase the polys in the corkscrew either by increasing within the rectangle being swept, or via the segments in helix. More looks better… right up until the boole suddenly stops doing the subtraction. In current project, that number is 749 on the helix segments. at 750, boole no longer subtracts, and his face is just sliced and (poorly) stitched back together.

Since the boole isn’t a mesh, I don’t have inner bevel tool, but I tried using a bevel deformer. Putting “I” in the selection field does limit the bevel to the intersections of the boole only… but it’s a bloody mess.

I see there are several plugins that seem to be designed specifically to address cleaning up boole edges. Wondering if it’s really necessary to purchase them.

Very funny and informative vid here for one of them which appears to have a name your price option. Haven’t checked r20 compat yet) that uses some sort of Hudini link.

Also: Having trouble isolating the thickened edge created by the cloth simulator. Tried placing material tag on it and limiting selection to various things (R,I,C, etc.) I must be doing that wrong. I would think too that placing a phong tag on it with a super wide angle range might be able to smooth out the jagged edges, but then limiting it to just that edge to not over-smooth the face. Just have to work out how to target that edge…


#3

Here’s one quick approach…Bake the object down as I have here. Manually select the edges and clone them back. In theory you could create a bevel doing this but that will considerably raise the difficulty level. Here I just did a sharp push back.

I just did a little sample section as it’s tedious to select edges w/such geo.


#4

A quick note. Models from places like TurboSquid are often out of scale…as this one was. It makes it cumbersome to work at such tiny scale. I enlarged the head to the size of a cube.

You’ll notice a little white line in the extrusion I made. That’s because I missed selecting a tiny edge. Repair w/Polygon Pen.

spiralHeadExtrude.c4d (1.3 MB)


#5

Ahh… forgot to mention… the goal (for me, anyway) is to be able to apply it procedurally as both the head and the helix will be animated. If it was just a still, it might just be easier in PS.

I pulled the trigger a minute ago on the bevel anything plug, but still need to work through the Hudini licensing and install issues. A ccouple comments on YT tut saying their free Houdini license didn’t work for the c4d pipeline tool. will see.

The cloth edge is having some other weird effects too… like beveling some edges inward, and others more upward. Ideally, I’d like them all beveled in at their exact Y coordinates… so inward as a circle, not a sphere. Anyway, I’ve exhausted the controls on cloth, so will need another method.

So long as I can get a glitch free animated result, this will be in upcoming musiv vid one way or another, but it would be better with smooth beveling. Taking photos later tonight to take a crack at building my first cloned head so I can animate it and run it through here.

I would’ve thought there’d be a built in function or plugin that would just smooth out edges so I could even out the jagged bits before applying the bevel, but without smoothing the rest of the face… like the smoothing deformer, but with an option to smooth only the edges. Still seems like such a thing must exist and I just haven’t found it yet.


#6

You gotta love (and trust) a guy who blatantly rips off stock video and audio in his promotional sales video.

Watermarks, who cares!?

Anyway…at less than $10 for the tool I guess one can roll the dice…


#7

I took that bit as a joke… Like he’s trying to push the envelope on just how generic he could make it. Meh… he didn’t use stolen high res versions, and the entire thing is a non-stop ad for the watermarked companies. Their rights are what they are, but if I ran such a stock footage company, I’d be thrilled if more people made videos just like that. Gonna have to rinse my ears out now to stop hearing “Audio Jungle.”

I thought it was funny… but I have an odd sense of humor.


#8

Haven’t got it working yet as I haven’t had time to mess with Houdini install, and I need to make room on my program drive.

Video of our ribbon-headed friend isn’t looking good so far. The boole likes the relative positions of the objects more in some frames than others, so he sometimes has a full stitched face before popping back to the ribbon. It’s fairly unpredicatable, so working on how to make it more reliable.

I was just thinking… if he were to move and have springy behavior, it shouldn’t work like a noral squash, but more like an actual spring in that he looks like if you pressed down on the top of his head, the spaces between the ribbon should compress, but not the ribbon itself… like the metal of a spring doesn’t get thinner, but rather it just decreases the space between each layer.

I guess I’d have to look up some vids on modeling springs to see how others have handled that.

Similarly, I wonder how to unwind / rewind him.


#9

I had 40 minutes or so to mess Bevel Anything plug tonight once I got Houdini free license situated (which didn’t take long).

Unfortunately, so far, though plug (actually a Houdini asset) appears to be loading fine, and going through the motions, but ultimately, it doesn’t appear to be doing anything.

The vid shows the original object having it’s preview and render turned off, then loading it into the geometry field for the plug. Doing so creates a child of the plug called Bevel_Anything2/convert… All of which looks just like the vid, except then nothing happens. Nothing is visible in preview or render.

I tried simplifying the setup down to just replacing the head with a mesh, but still nothing.

Maybe I’ve missed something about needing some Houdini server to be running or something prior to loading the asset. I would think if it were confused about the shape, it would just screw up somehow… but still be visible. Never tried loading a pipeline asset before, so I’m guessing the missing link is in that chain.

Sound like a typical pipeline asset issue I should be paying attention to?


#10

When you swim in deep waters…on remote beaches in third world countries where there aren’t any other people within 500 miles…not people that you know or trust…it’s quite possible to drown.

It was a dubious gambit to begin with and I can say w/confidence: Nobody is going to help you with “Bevel Anything”.

The promo video…and the name of the product (Bevel Anything is an inherent impossibility) were two strong “Tells”

I suggest you don’t sink any more time with it. A Big Part of this 3d thing is knowing when to cut your losses and move on to Plan B.


#11

Sure. Not hung up on it at all.

I will need some other remedy, though. Hard to tell from the png you posted exactly what’s going on with that bevel. Looks horixontal on the left of the jawline, and vertical on the right. Not sure if that’s just the perspective, but reminds me of an issue with the cloth sim in that it was pulling bevel different directions. i think it was always perpendicular to the poly, so in areas like mouth or eyes wher polys were less vertical, bevel was less horizontal. Ideally should be fully horizontal as if it’s just hugging the shape of the helix.

Definitely need something procedural to deal with both the head and helix being separately animated. Ideally, bevel should just fold in exacly horizontally… as if it went in along the edge of the helix, but with some rounding. I think the issue the cloth sim was having is that it was going perpendicular to each poly, so general skin polys were more or less inward, but something with a different slope like lips or around eyes was suddenly turning.

I see a number of other plugs out there like MeshBoolean, Boole Cutter, etc. Most seem geared toward hard surface modeling, so not exactly sure if they’d work for this purpose.

Or maybe just some way to smooth the edges? Just the boole animation itself is problematic as it fails on certain frames (splits the head but doesn’t subtract). Dialing back the helix segments can help with this (at the expense of more jagged edges), but it still messes up on some frames. Perhaps a remesh of each to more closely matched geo before the boole? Just done via volume meshing? (Not sure if texture can be maintained in volume mesh). Some way to just smooth edges so I can dial everything way back to eliminate boole animation glitches?


#12

Trying to think outside the box:

What about not doing a traditional bevel at all, but something that more or less looks like one… like somehow sweeping the edge of the ribbon. (Can worry later about whether that looks right, or if sweep can be offset somehow to be more like bevel)

There’s an option in boole to select the intersections. The intersection is essentially an edge which is essentially a spline. We have tools to turn a spline into something with thickness in the form of sweeps.

Trying a few things along those lines at the moment, but it’s looking for the moment like it wants me to first make the object editable, then select the edge, then convert edge to spline, and then sweep.

Is there maybe some way to do something similar without all that? Perhaps using correction deformer since it appears to be designed to allow editable functions on objects that aren’t made editable?

Or…

What about shrnking an instance of the head so they’re nested like this:

And connecting them somehow? Simple connect isn’t doing it at the moment, but since each has intersection already selecteed, maybe just some way of connecting edges?

If shrunk like I did here where x and z are at 85% while y left at 100%, then if correspoinding edges were connected, resulting bevel would be perfectly flat.


#13

Do you see all the irregularities in the mesh…like it’s wrinkled? That’s due to a lack of clean topo. When you try building on that…bevels, extrusions, deformers, etc. …It just gets more pronounced.

Connecting it will produce the same, as there simply isn’t a clean mesh to work with.

And other boolean products will yield similar issues.

You will either need to go with it flat…or you will need to retopologize.


#14

Face itself looks to me like relatively clean topology. I assume you’re talking about distortions at and near the edges. The slight wrinkles near the edge aren’t enough of a problem for me to worry about. The haphazard stair-stepping of the edge itself is another matter.

So… howzabout a cheat:

I just need it to LOOK like there’s a smooth bevel (or other trick to give width).

I couldn’t figure out how to connect the inner and outer face outlines, so I cheated by using correction deformer to access the outer head’s geometry, selecting the outline, and converting the edge to a spline. The problem is always that the boole is so haphazard that the spline isn’t well formed. So, I smoothed it out (first tutorial I found used mospline. There may be a better way).

I then created a shrunken version of the head and smoothed outline spline. The “bevel” is actually a loft (black and white stripes) connecting the smoothed inner and outer splines, and they line up with the inner and outer heads, so that’s it.

Anticipating that the smoothed splines might not perfectly line up with the head meshes at some point in the animation, though, I also created a tiny sweep of each spline with color scheme to match the “bevel” so that little bit of piping could hide any mismatches. Since I’m personally going for a rather cartoony look, I like that the touch of piping on the edge helps it to pop.

So… Good enough for me, but… since the head mesh is dynamic, and the spline will change on every frame, I’d need to find a way to do something similar procedurally since this process involved extracting the outline.

Ideas?

EDIT: Oops, forgot to add the project file:

ribbon head cheat spline loft.c4d (5.4 MB)

Actually, as a much simpler alternative, I don’t particularly mind the look of just skipping the smaller head entirely and adding some piping to the ribbon edge like so:

Still requires smoothing the edge, though, so still need to find procedural way to extract the outline spline so it can be smoothed and applied to the sweep.


#15

My opinion:

Anything that draws too much attention to the edges diminshes the visual appeal. What makes it work best is for the positive and negative space to just fall away from one another.

As for animating it I don’t think you need to make it complicated. You could render out a depth pass matte and in AE use a combination of the depth matte with AE masks… you could reveal the head in a spiral transition.


#16

Not quite following about the depth pass (don’t think I’ve used that term before). I generally try to avoid any 3d workflows in AE (Actually avoiding AE wherever possible lately) due to laggy workflow.

Yeah, I was exaggerating edges for the sake of demonstration. The particular cartoonish look I’m going for has a good deal of smooth diffusion and gradients, but sticks to thick (and often oversized) elements with black outlines. I think I’m happiest right around here:

I like this basic approach because it gives a nice smooth gradient in place of the bevel, the piping hides any imperfections, and by making the smooth spline a separate object, there’s no chance that I inadvertently screw up the facial geometry beyond the initial boole.

I’ve got a few ideas about animation, but will likely split those into another thread as they deal with separate issues. Still need to resolve a few things like how I’m going to deal with backs of eyeballs, etc if I don’t go with flat perspective.

Any idea how to do something along the lines of select outline --> edge to spline --> smooth spline procedurally?


#17

ribbon head cheat spline loft.c4d (3.9 MB)

It was a bit confusing for anyone from the outside to make out, so I cleaned up and organized the project, and added a single slider for head width (in User Data tab for “Xpresso Controller”). I also implemented better smoothing for the outlines to help hide imperfections from the boole, and the pure luma black on the outlines should help to keep any small glitches from producing shiny artifacts when animating.

I’d still like to dial in the boole a bit better (there is a glitch just short of halfway up the ramp above his eye, and there are frames wehre boole just doesn’t do the subtraction unless dialed way back on object resolution), but there’s only 1 major hurdle at this point stopping him from being fully animateable with a talking face:

This technique relies upon extracting the outline of the boole and converting it to a spline. (Right now, the “Extracted Bigspline” in the “Spiral Face Outliner” is just a static spline taken from boole outline in frame 0.) How can this be done procedurally so the spline is updated on each frame?


#18

I wouldn’t be “in” on proceeding with this file as it has boole generated toplogy. That’s been my view from the start.

If I was going to try ambitious animation with the face I would have manually cut the face model and made clean extrusions.


#19

Either I’m missing something, or I’ve not properly explained my intended purpose.

The still face in the project file is just a stand in for a facial tracked head clone (FBX not ready yet) that will be imported already fully animated.

The helix will be rotating as well (or at least may be… I’ll decide for sure after I see it both ways)

I’m just not seeing how to do the cut in advance if both objects are moving. I’m not the least bit hung up on doing it this way, and I’m not at all thrilled with kludges to fix boole issues… I just didn’t see a cleaner way to subtract one dynamic object from another (aside from volume meshing which I hadn’t worked out how to preserve the UV texture that will be imported with the face.)


#20

If boole always yields unusable edge and potential animation glitches, then what alternative do I have given that the face being input is already animated and has UV texture?

mesh head.c4d (3.8 MB)

I’ve done a mockup using volume mesher, but not clear if it’s possible to differentiate bevel vs iniside, or to project UV’s from pre-mesh head onto post-mesh head. Can this be done using worrkflow similar to high to low poly workflow where end result is subdivided to provide enough geometry for uv projection? Not at all clear if that would work here.

At this point, i’ve watched every tut I could find on booles, and something has to give as no version of combining two dynamic objects yields perfect geo with uv’s intact, so which is the lesser of the two evils? If anyone has a better (or just an alternative) approach for combining two dynamic and independently animated objects where one needs to retain it’s UV’s, i’m all ears.