| Text |
Function
The Text function calls on software that is basically identical to GL Render
for character generation. You can type in your text, or use variables and
links to insert characters, making it an ideal tool for generating slates.
You can use any TrueType (.ttf ) and Type 1 (PostScript, .pfa for ASCII and .pfb for binary) font. If an Adobe Font Metrics (.afm) file is present for the font (for example, you have MyFont.pfa and MyFont.afm), it is supported and provides kerning for the font. Shake first looks for fonts in its distribution directory, under fonts. You can also place them in a direct path by setting the environment variable NR_FONT_PATH. Finally, Shake also detects fonts placed in the standard directories for your OS:
Macintosh OS X: All “Installed” directories.
Linux: /usr/lib/DPS/AFM
IRIX: /usr/lib/X11/fonts/Type1
Text uses the Shake implementation of the GL Render. It allows you to not only manipulate the characters in 3D space (including X, Y, and Z position, rotation, and scaling), but also a camera field of view. Because of this, it is better to animate text within the Text (or AddText) function to ensure crisp, clean edges. Caveat: There is no motion blur.
To select a font in the interface:
Note: For long font lists, click and drag the scroll tool to select a font from the list. You may also use middle-mouse scroll wheels.
You can also use these shortcuts at any time without any special formating:
| Text Shortcut: | writes: |
| {parameter} |
prints either the local or global parameter value, ie |
| {nodeName.parameter} |
prints the parameter's value from a selected node, ie |
| \n |
New line. Example: Hello\nWorld returns Hello |
| %f | unpadded frame number |
| %F | 4-digit padded frame number |
| %t | short non-dropframe time code: no 00: (if not needed) |
| %T | long non-dropframe time code: hr:mn:sc:fr |
| %tD | short dropframe time code: no 00: (if not needed) |
| %TD | long dropframe time code: hr:mn:sc:fr |
| %H | host name |
| %U | username |
| %c,%C | locale's center |
| %d | locale's day 01-31 |
| %D | locale's abbreviated day name: Wed |
| %E | locale's full day name: Wednesday |
| %m | locale's month: 01-12 |
| %M | locale's abbreviated month name: Nov |
| %N | locale's full month name: November |
| %x,%X | full date representation: mm/dd/yy |
| %y | year without century: 00-99 |
| %Y | year as ccyy |
| Text String | writes: |
| My name is Dufus |
My name is Dufus |
| My name is %U |
If login = Dufus: My name is Dufus |
| My name is %U.\nToday is %M. %d |
My name is Dufus. Today is Nov. 12 |
| Mult red = {Mult1.red} |
Assuming the node Mult1 exists, and the red value is .46: Mult red = .46 |
To get special characters such as umlauts, copyright, etc, use octal and hexadecimal codes preceeded by a \. These codes can be found in unix with the man page for printf in its special characters section. I'm not sure how you find them in Windows. Anyway, for example, this was provided by our fine friend Thomas Kumlehn at Double Negative. Copy and paste it into the text node:
Auml=\xC4, Ouml=\xD6, Uuml=\xDC, \n auml=\xE4, ouml=\xF6, uuml=\xFC \n Szett=\xDF \ntm=\x99, Dot=\x95, (R)=\xAE, (C)=\xA9
To use expressions, preface the text with a : All printed commands are in quotes. For example, if you want to print "Hell" from frames 1 to 10 and "o World" from frames 11 onwards, you could enter:
:time<11?"Hell":"o World"
Finally, you can also use full C formatting for your strings. The use of this is initialized with a : at the start of the text string as well:
: stringf( "Red = %4.2f at Frame %03f", Grad1.red1, time )
To append strings from another parameter, use something like:
in Text1.text: Hello in Text2.text: : Text1.text + " World"
|
Parameters
|
Type
|
Defaults
|
Function
|
| width,height |
int
|
GetDefaultWidth(), GetDefaultHeight() | The width and height of the image |
| bytes |
int
|
1 | The bit-depth of the image. 1 = 8 bits, 2 = 16 bits, 4 = 32 bits, or float. |
| text |
string
|
text | The characters to be printed |
| font |
string
|
The font to be used. | |
| x,yFontScale |
float
|
100, xFontScale | The x and y scaling of the font |
| leading |
float
|
1 | The amount of spacing between each line |
| x, y, zPos |
float
|
width/2, height/2, 0 | The 3D position of the characters. |
| xAlign |
int
|
1 | The horizontal alignment of the fonts. 1 = left, 2 = center, 3 = right alignment |
| yAlign |
int
|
1 | The vertical alignment of the fonts. 1 = up, 2 = center, 3 = down. |
| red, green, blue, alpha |
float
|
1, 1, 1, 1 | The color of the text |
| x, y, zAngle |
float
|
0, 0, 0 |
The 3D rotation angles of the text. |
| fieldOfView |
float
|
45 | The aperture angle in degrees of the virtual camera. |
| kerning | float | 0 | The spacing between each letter. You can also have negative values. |
| fontQuality | float | 1 | The polygonalization factor of the font splines. We have conservatively set this to a high value. For flat artwork, you can probably get away with a value of 0. When you have extreme perspective, you will want to keep it high. |
Synopsis
image Text( image, int width, int height, int bytes, const char * text, const char * font, float xFontScale, float yFontScale, float leading, float xPos, float yPos, float zPos, int xAlign, int yAlign, float red, float green, float blue, float alpha, float xAngle, float yAngle, float zAngle, float fieldOfView, float kerning, float fontQuality );
Script
image Text( image, width, height, bytes, "text", "font", xFontScale, yFontScale, leading, xPos, yPos, zPos, xAlign, yAlign, red, green, blue, alpha, xAngle, yAngle, zAngle, fieldOfView, kerning, fontQuality );
Command Line
-text text font xScale yScale etc...
Example 2
Slate macro - this can be found in the Cookbook.
This macro is to set a FileOut, and inserts a slate at the frame before the first frame, i.e. if your frame range is 1-100, frame 0 gets a printed slate. Load the script up in the interface to see what it does, moving the time slider from frame 1 to 0. There are 3 text generators. One (AText1) provides the headers (ie, "Shot:", "Show:", "Frame Range", etc. The second one (AddText2) gets the information either from the script, or as inputs to the macro that are provided by the user. A last text generator (AddText1) will print the frame number in the corner if markFrame is set to 1. Open up the macro in the interface by putting the cursor over mySlate and hitting enter. Then go ahead an view the parameters for each sub-node. Or, of course, just open the script in a text editor.
See Also
AddText