Text 3D
Takes a string as contours, straight from the vector outlines of the typeface, extrudes it along Z, and outputs it as a Mesh. It is a sibling of Image Extrude, but because it does not pass through an image there is no resolution setting; the fineness of the curves is decided by Detail. Connect the Mesh to Mesh Renderer or CopyToPoints to draw it. The origin of the mesh is the center of the bounding box of the whole string, and the front face (the side facing the default camera) is on the negative z side.
The computation runs in the background without stalling the frame, and it rebakes only when the body text, the font or a parameter changes (there is no Live/Bake switch). Besides the Text port, the body text can be typed directly into the text field on the node. Pressing Enter inside the field makes a line break, and the lines are laid out one by one. Overlapping glyphs (with italics, or when the letter spacing is tightened) are merged into a single filled region.
Settings on the node
- Text field — the body text. When the Text port is connected, its value becomes the body text
- Font — the typeface dropdown. Auto (default) picks a typeface that can display Japanese automatically from the OS. Refresh Fonts picks up typefaces installed after startup. You can also select one by feeding a string with the typeface name into the Font port
- Left / Center (default) / Right — the alignment of the lines. The mesh as a whole is always centered, so what this affects is the position of each line when there are several
Notes on the ports
- FontSize — the size of one character (1 em) in world units (default 5, lower limit 0.01)
- Depth — the thickness of the extrusion (default 1)
- Bevel — the width of the bevel on the front and back edges (in world units, default 0 = no bevel). Characters where the bevel breaks down in thin areas have their width reduced automatically, and the status shows “面取りを縮めた輪郭N本” (bevel narrowed on N contours)
- Bevel Segments (labeled Segments on the node) — the number of subdivisions of the bevel. Clamped to 1-8 (default 1). 1 is a flat 45° bevel, 2 or more gives a rounded bevel
- LineSpacing — the line-spacing multiplier (default 1 = the line spacing of the typeface as is)
- LetterSpacing — the letter spacing. A multiplier relative to 1 em, so 0.1 opens a gap of 10% of one character width between characters (default 0; negative values tighten it)
- Detail — clamped to 0-1 (default 0.5). The number of subdivisions per curve (2 at 0, 16 at 1)
- FrontFace / BackFace (labeled Front Face / Back Face) — whether to cap the front and back faces (default: both ON). With both OFF you get a tube of just the character outlines
The contour points total at most 16384; anything beyond that is thinned out evenly.
The status line shows
Baking…andN polys / M verts, plus “Text が空” (text is empty) when the body text is empty and “フォント無し” (no font) when the typeface cannot be resolved. A character a typeface does not have comes out as tofu (a box). Vertical writing and ligatures are not supported.
Input ports
| Port ID | Type |
|---|---|
Text | string |
Font | string |
FontSize | float |
Depth | float |
Bevel | float |
Bevel Segments | int |
LineSpacing | float |
LetterSpacing | float |
Detail | float |
FrontFace | bool |
BackFace | bool |
Output ports
| Port ID | Type |
|---|---|
Mesh | MeshOutput |
Scriptable members
| Path | Type |
|---|---|
textInput | string |
fontInput | string |
fontSizeInput | float |
depthInput | float |
bevelInput | float |
bevelSegmentsInput | int |
lineSpacingInput | float |
letterSpacingInput | float |
detailInput | float |
frontFaceInput | bool |
backFaceInput | bool |
text | string |
fontName | string |
Synapse Apps (scripting)
await synapse.modules.create({ type: "Text3D" }) 









