Home 9 Cinema4D Dailies 9 Daily C4D – Day 4

Daily C4D – Day 4

by | Jul 4, 2025 | Cinema4D Dailies

Daily Cinema4D – Procedural Nametag

I was gifted a name tag with my Ham Radio call sign! It is SO cool.

Full radio with the 3D printed name tag!

Close up on the name tag.

I started this project with two goals: first, to make the name tag creation process easier. The Morse code on the original tag had been placed by hand, so I wanted to create a Morse code font that could be used to generate the tags completely parametrically. It was a small way to give back.

Second, I wanted to make my own parametric name tag! I saw this as a great opportunity to explore XPresso and dive a bit deeper into parametric modeling.

First, I made the Morse Code font. There are a couple available for free online, but none of them have the correct spacing.

Morse Code Element Duration (in dit units)
Dit (dot) 1
Dah (dash) 3
Space between dits/dahs (in letter) 1
Space between letters 3
Space between words 7

It also includes the characters “?” (question), “,” (pause), “.” (full stop), “=” (break), and “/” (seperation).

The font preview

Object viewer! 

Time to make the name tag itself! This would be very straightforward in a CAD program, like where it was originally made, but who cares! We’re learning, not being efficient. Plus, it’s already in a CAD file back with its original creator. 

The object view is a bit messy, but this was mainly an exercise in parameterization. Basically, everything relies on the length of the text string. The base/background size is driven by that plus user-data entered padding parameters, and the border is driven by the size of the base. 

User data controlling the name tag. 

XPresso node network.

In order to size the rectangle in the back dynamically, I used python to cache the current size of the input object, then used that to drive the size of the base rectangles. 

import c4d

def main():
global Cache
Cache = Object.GetCache()

I also set the XPresso tag’s priority to last (Generators + 10) so it would check the cache after the object was cached. 

Silly vertex map/fields. 

I already knew going in that the vertex maps don’t work on parametric objects, but I wanted to match the way the name tag was printed – paused on a layer, and the filament changed – while still keeping the object parametric. Cameron Slayden responded to my question about vertex maps in the funniest way:

“Sometimes you can steal a vertex map tag from a geometry object and put it on a parametric object and as long as you don’t tell anyone, it works” 

And – yup! This allowed me to set a linear field to control where the red was on the parametric border of the name tag. 

Video of the parametric text working as planned!