Deformed text and curve based shapes render terribly. Will this be broken forever?

When importing an SVG file or creating text in Blender that is then extruded and given depth under the geometry section of the curve properties, you can achieve great looking 3D text and logos in a very short amount of time. These items can then be textured and materialed in a variety of impressive ways consistent with all other mesh items. However, try to deform these with a simple deform or curve modifier, and you get horrible looking black splotches all over the place. There is absolutely no problem in the view port or during a simple GPU render, but as soon as you do a regular Blender render all is lost. These type of modifiers are crucial in being able to create most modern typographical animations with 3D text. The problem seems to stem from any added ambient occlusion.

Your options? Convert to mesh or completely rebuild the thing line by line. Converting to mesh guarantees a triangulated hell zone with total failure for desert if you’re hoping that converting the tris to quads or using remesh or skinning will save you. In my opinion this is one of the most unfortunate tragedies of Blender. This tiny issue prevents so much commercial potential for many Blender users across the world. Text animation and typography heavily dominate software usage in the commercial 3D world. This makes no sense when it’s clear that the geometry information is there and in tact in the 3D view port. Why hasn’t this received more attention? Will this be broken forever?

you can remesh a curve -even a text- without the need to convert it, and it works… extrude it a bit but don’t use bevels -try duplicated text objects with different offsets and extrusions-

but you are right, I also think text in Blender has a lot of space to improve, something like a ‘text modifier’ or a ‘particle text’ or some kind of parametric animatable thing should be a winner :stuck_out_tongue:

Although the results are quite often less than stellar, I’m not convinced that “broken” is the best word. I would characterize the problem as asking too much from automatically-created geometry. We are starting with stroke information defining the outer edge of the letters. The font designers never do so while contemplating that it will be used in this manner that we do.

So add some text, extrude it, convert to mesh, and take a look at the resulting geometry. It is really ugly, unlike anything you would do on your own if you were creating those objects yourself. In fact there is quite often overlapping geometry and backward normals because of the way the font was constructed. Overlaps are fine when you are rendering 2D text but are not so good in 3D.

But look closely at the geometry and you will also notice that there really isn’t a better way to create this geometry automatically. Sure, you might think of some cool algorithm that does a better job in some way, but think of the second part of your problem: it looks crappy when you deform it. So which direction do you want to deform it? Because if you were creating these objects by hand you would need to build them quite differently depending on the direction of bend you wanted.

It is mostly likely inverted normals that are causing your black splotches, but I vote for you supplying a “blend” file so we can see what you are trying to do…

Harley, actually if you import an SVG, say one you created in Illustrator, and leave the curve settings as “2d” not 3D you are able to create beautiful, clean 3D geometry from 2D curves and paths, so long as you don’t convert them to a mesh. Also, so long as you have cleaned your geometry and text in Illustrator properly before exporting making sure there are no unjoined paths. Blender actually does a wonderful job of creating the geometry out of very little information. Better than any program I’ve ever used. The deform and curve modifiers also work flawlessly on these items in Blender as they would any other regular mesh item. The only issue, if you are a good designer, here period is how Blender handles ambient occlusion for curve based geometry. It’s broken and it stinks because it makes the program a hair away from being one of the most powerful software packages on the planet.

For sure if you create something yourself or otherwise start with well-made curves the result can be wonderful. But quite often start with a regular font file and the results can sometimes suck. But in almost every case I’ve seen the cause was either a problem in the way the font was created or just a product of automatic mesh generation.

But the deform and curve modifiers normally only work flawlessly if you plan for it. I mean imagine 3D text lying flat on the z-plane. You can quite often bend it a bit in the x or y direction but try doing so in the z-direction. If the letters themselves must bend in that direction then it will get ugly pretty fast. Of course we are not talking about aligning the letters in a bendy arrangement but of deforming the individual letters.

I’m still guessing that your ambient occlusion problem isn’t what you think it is. But for that just make a simple test case and post the blend to http://www.pasteall.org/ and then link to it here. It would be nice to see in better detail exactly what you are trying to do and the result you are getting.

I didn’t know you could remesh a curve object without converting it first. I tried that. It took up a lot of resources and ultimately was not as smooth as it needed to be. Also you get an error message saying you can’t apply a constructive modifier to a curve. You can add one just can’t apply it. I’m guessing that you haven’t tried remeshing very complicated curves or fonts of text with the techniques you described. The texturing, the modifiers everything works fine and looks really great on 2D geometry modified curves. Only the ambient occlusion renders terribly and creates awful black splotches on your mesh. If you try it without the AO it’s fine but of course that means you lose the workhorse of the render. Also it renders fine in cycles if you leave it as a 2D curve with extruded geometry. But I would prefer not to have to render through cycles.

I’m not going to post a file because I’m looking for help with this known issue not to educate someone who knows nothing about it. You can indeed make really good looking logos and complicated fonts 3D in Blender relatively simply. Despite a font maker’s intentions. Create a text or import an .SVG then under the object data of that curve on the properties panel, keep shape as 2d. Under Geometry increase extrude as well as depth and resolution until you get a decent result. Add an empty behind your text. Add a simple deform to the text applying its origin to the empty and increase the factor to witness the bend (or whatever other effect you wish to use). Bends great. Geometry looks great. Go to world, render WITH OUT ambient occlusion. Witness a fine looking text. Render WITH A O. Looks like hell.

about remesh: you can get some decent results if you play a bit with settings -just don’t use bevels or small details- and if you can not apply it, simply convert the modified curve to mesh -but I thought you wanted it as text-
and I did make use of this, octree depth=7/8, smooth shade, edgesplit modifier, deformations later… but then other software can do better so it is up to you… have a nice day

I’m looking for help with this known issue not to educate someone who knows nothing about it.

That’s quite an assumption there. Good luck then…

File a bug report.

-LP

Edit: Just noticed you’re new here. Blender help menu > Report a bug …
or http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse

You’ll have to register to report. Be sure the “Monitor” switch is activated on your report so you’ll get replies emailed to you. Standby for a quick response within a day or two if not hours. Those guys are right on it most days.

Maybe an easy fix, maybe they won’t bother with it if a Blender Renderer bug. At least you’ll get real info about this issue from the devs themselves.

Please simply post a file so others can investigate your issue. If you file a bug report, you will be asked to provide a sample .blend anyways. It really helps!

by the way i remreber a little script that was ble to convert a text bad topo to a more cleanre topo
ask in python forum !

and with curve modifier it may also depends on number of points you use for the curve
may need to practice a little to get best results

also you could use the warp tool to curve your text around let say a circle
or use a lattice !

salutations

I had some spare time so I looked at this closely.

Easy to recreate…

Add some text or curve circle whatever, then deform mod or curve mod it. I don’t think AO is the cause. Any lighting will do. Happens in Cycles too. You can see artifacts if you bend it enough and look close. Doesn’t have to be extruded either.

I see the same artifacts if I convert to mesh. Triangle artifacts in the text. Uniform edge artifacts on a bent curve circle. Looks like the deform and curve mods are internally converting curves to mesh to do the deform. I suppose. I don’t know. If I twist or bend enough and move lighting around I can get some really ugly artifacts which look like more than just triangle crap. Edit: Craziness in the viewport too. Not just rendered.

The Devs will know exactly what is happening. Report it or ask about it on that dev chat thingy.

I didn’t try warp tool. Seems like that worked OK long ago when I warped text around a planet in my early days with 2.4x.

Outta time here. Moving on.

-LP

I consider it a bug and no, I doubt it will ever be fixed because it is a Blender Internal bug which is an abandon render engine. Try rendering it in Lux, Cycles, 3Delight and it should turn out fine.

Feel free to check out my video on how to resolve this issue and still leverage the speed of Blender Internal render.

https://vimeo.com/19894131

@SpiralKing: you’re like small kid crying and kicking to a wall…
As was said here several times - the easiest way how to let others to help you is provide the blend file with issue to let as

  • clearly see what are you talking about
  • if artefacts can see users with different OS or build versions
  • If it’s not problem of user setup
    Ect.

People can see that you have only a few posts here, so hard to say if you just don’t have enough experiences or if it’s something that should be improved in code.

There are many aspects that can create an issue. So why to mix discussion by speculations. You could get relevant answer much faster just by posting the file.

And if I undertod you right- you aren’t asking for help- (to solve the issue by workaround). You’re trying to wake up the community from ignoring some dysfunction. do you think its the right way how to rouse our attention.

As GottfriedHofmann said - Developers will ask you for sample file too.
You want to solve something and others should waste their time by replicating it? Do you think it’s ok?

Since I don’t see your blend, I can tell just this:

  • deformed text is something that I was solving several times
  • deformed text on curve or curved text on curve was never nicely deformed by default. So hard to say where from came your fascination for nice deformation in viewport.
  • curved text is deformed only by positioning control points on deformation curve, as visible in letter “T”. http://blenderartists.org/forum/show…-Text-on-Curve
    Few problems can be solved by changing all handle types to “Free”
    (Second very important aspect is text and curve axis of deformation

For nondestructive deformation of text you will need Remesh Modifier (as liero recommended). For final render (when client and you agree with text and placing) you can use curved text. Tommorow I can post a testing blend that I had ready.

Few years ago I solved some shading problem by EdgeSplit modifier.
Maybe it helps you too. Hard to say without your blend

on and typography heavily dominate software usage in the commercial 3D world

I’m not so sure about that, but there are some good suggestions ITT anyway.

Deforming text over some small radius isn’t problem. There can be hidden few inaccuracies, 90° angle this is challenge :slight_smile:

For a Font and a Mesh objects you need translate surface into net.
The Remesh Modifier is the best.
For a Curve you will have to take attention for “Handle Type” and Curve orientation.

Download File >>test-Text-Deform.blend (141 KB)<<


Notes to the blend file:

Object – Font (layer 1)
– Curve modifier translate font into some dynamic mesh so get some reasonable result you need surface into a net
– to let RemeshModifier get result you need extrude it a bit (0,001)
– “Octree Depth” 5 in this case is enough, sometimes you need to play with “Scale”, not always the highest value is the best

Object – Curve (layer 2)
– font converted into a curve (Alt+C) gives the clearest result, but … you need to:
– change all handle type to “Free”
– in Edit mode rotate text along “Y” axis

Object – Mesh (layer 3)
– for mesh it works in the same way as for Font object
(in blend file I used ShrinkWrap Modifier just for different usage gridded mesh)

I can’t see any shading problems. The only one thing that remindes me- if you are not speaking about “shading triangles” when surfaces of two objects are very close to each other.

@vklidu:

I do see some issues with 1 and 3. Make the extrude larger and pull the text along slowly and there are lots of problems at the bend, but…

I’ve got to say that the result on layer 2 is remarkable. I didn’t know that quality of result was possible. Even with a much larger extrude, and even with a bevel it remains as perfect as can be expected when bending text that much. Amazing.

Thank you for supplying this sample blend.

Yeah, curve is a bit tricky, to get it works took me a few hours (days?). These two small things …
I could understand handles issue, but why deformation works correct in “Y” axis when text and screen is by default (in horizontal) “X” axis?

I extruded 1st and 3rd and I can’t see problems, even I moved with text. Can you post a screen?

(Left=Font, Right=Mesh)


There are of course limits (1st, 3rd are based on faces). I see problems with “Depth” (like beveled edge).
I just can’t see any issue with shading in render.

I’m not lobbing for using this kind of grided meshes for deformation along curve. Curve on curve works faster and cleaner. This remeshed (gridded) objects are beter for deformation over more complex surfaces where curve surface is not enough.