how can i create text that moves along a path?
I have some things I want to do with text in jitter. Here are the critical tasks that I cannot figure out how to do:
1) a line of text that moves along a circular path
2) a line of text that moves long the surface of a sphere
Once I can do these, I want to have multiple lines, where a line of text will appear letter by letter out of a particular spot. And possibly other similar text animations.
In other software, like Adobe Illustrator, there is a simple "text to path" type command. Obviously it wont be this simple in Max, but surely there are ways to do this. My only thoughts are to create each letter individually, figure out how to create its "anchor point", have this anchor move along a path (how to get a path from a sphere?!?), and rotate the anchor according to the angle of the path. Or something like that - way too complicated for me to figure out :S
Does anyone know of any methods? Or ways to get started?
Any help is greatly appreciated :)
I don't have any great ideas for #1, but for #2 here's one possible solution.
OK so i've been working at this for a while and have come up with 2 solutions for path-following. (I've attached the main patch and a patch used by it's poly~)
First, I needed a system to control individual 3D elements (characters/words). To do this, I used [poly~] + [jit.gl.text3d].
In the main patch, the text input is parsed into a [coll] that the instances reference, and each instance's 3D object position is derived from a single source. 3D coordinates came from either pictslider, drunk generated values, Kinect, or Mira's multitouch. I devised 2 methods for using this data:
1) Originally, I simply took the incoming coordinate data and sent it to each instance, delayed by an amount that is multiplied by the instance number. This gave a fun illusion of a trail, but had major limitations.
2) I sent the coord data to [jit.anim.path] (a master one, and one for each poly~ instance). The patch would control the master path, whose evalnotify's 2nd value (time) would be send to each instance (and again, shifted proportional to instance value) to get a position.
This allows much more control over the elements since positional data along time is saved (as a path), so i can pause the text and move them along the path as desired.
Now, this works fairly well, but there's a few things I still need to do:
• make the text follow a live generated path more "tightly" - it still feels quite laggy.
• create paths based on the surface of 3D objects (like a sphere), which also include appropriate rotational data (i.e. text face is always perpendicular to object surface).
• performance enhancements - damn this runs slow, i'm sure there's some redundancies i could eliminate
I'd love to get any feedback on this system, even if it's just mentioning other/better ways to use the 3D/path stuff (i'm totally new to GL/OB3D and am not getting much out of the docs).