From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Text tools proposal

  • Possibility to perform boolean operations on the text objects itself. Those operations should be possible by using curves, not meshes (maybe too)

From a users perspective it's not understandable why you should convert your text into a mesh to process it further. Apart from that, you can't edit the text afterwards. So this is really not comfortable and causes massive production time loss!

Ideas

  • Texts should be treated internally like curves
  • No conversion should be needed to make text objects adjust its form
  • There should be control points on the text object that can be altered like on ordinary curves (like you would have converted a text to a curve and you would drag the control points around).
  • They should be animatable through hooks, shape keys and lattices



notes from gexwing

The current Text system is not realy advanced, Text objects can not easily be animated, which is an important factor in Motion Graphics/commercial type work. We hereby propose some changes, which would make the workflow more non-destructive, more advanced in terms of animatability, and should leave us with cleaner output meshes.

Proposed improvements

  • We propose a Type of object, which has the properties of 2d closed curves and text.
  • Text should be treated as curves (same as the current output after converting it to a curve) all the way through the pipeline, whitout losing the ability to change the text.
  • The Object Type should be able to handle 2d boolean operations besides non-even filling, which is the only thing Curves can do now. (like Add/Subtract of new Masking Layers)
  • Handling those modes could benefit if there was a Curve/Lext Layer-List, with modes for each layer, hiding layers could also be usefull for keeping backups of a Text-Layer if one realy needs to convert it to a Curve-Layer for further changes.
  • current features of Curve Geometry which could easily be adapted for this compound type: Offset, Extrude, Bevel Depth and Resolution
  • Beveling of the object after extruding should be handled by bevel code (GSoC Project?). It should not generate overlapping bevels like current implementation, rather clip it.

Generated Geometry

  • Curve intersection points should be calculated and placed exactly, to fix current flickering or sometimes failing non-even fillings of curves.
  • The Geometry generated by this Type should be consisting of n-gons, taking full advantage of the new bmesh sytem.
top: current, bottom: proposed
top: current, bottom: proposed
top: current, bottom: proposed

Animation

Text and 2d Curves should allow for more non-destructive animations. This could be accomplished by having a range of simple "2d modifiers", with options on how they influence individual characters on text-objects, frame-offsets for characters, influence on object offsets, also randomizable.

Some Ideas for 2d modifiers:

  • Translation, Rotation, Scaling
  • Specific Text effects like "typing in", "fly in"
  • Simple Deformations (like the Simpledeform Modifier)
  • Warping (Lattice?)

Problems to overcome

  • n-gons: with bmesh, other parts of blender should be converted to take full advantage of it's features. b-mesh not yet allows for inner edges (i.e. holes), which would be helpfull for text and 2d booleans. This means one additional face per hole.
  • Tesselation: the current Tesselator generates wrong geometry for some non-convex n-gons, the solution to this problem should best be adressed in the tesselator itself. As workaround, all non-convex n-gons could be split into convex ones.


Pro's / Cons'

+ easy non-destructive text animations

+ Customizable by fast 2d booleans/adds

- order of execution of layers is important (current 2d curve non-even filling is not)

- not every effect may be easily achievable, this would probably require a full node-based approach, which is more than this proposal aims for.