Reference from Day 1
Next up, we’re going to try adding the floating text ability of Jolyne’s thread!
I’ll first write down the specifics here:
Blender has a handy thing called a “String to Curves” node. I plan to use this to give form to the words.
I then aim to figure out how to move the text mesh along the curve, using a bit of procedural noise to make it somewhat jerky, as in the anime.
If if works out, I also plan on experimenting a bit with turning them into metaballs! It won’t be completely accurate to the show, but I imagine it would be interesting to try.
Using the below node group, I was able to get some really good looking text! I was even able to make it look a bit choppy by playing with the text resample rate.
But there’s a small problem with this implementation: If I want the text to follow the curve, having the text mesh as a whole follow at one point won’t look quite right, just like a flag made of cardboard.
Therefore, I should take the individual instances of the text mesh, one for each character, and set their positions according to sampling the curve’s position at different offsets. Plus, this will help with noise, displacement, and metaball stuff down the line.
Going into the text node group that I set up, I remembered that realizing the instances basically joins all the lose instances into one big object, so I removed that. Looking in the spreadsheet, I noticed that we had… 20 instances for 10 characters? Hmn, that doesn’t seem quite right, but let’s try changing the rotations to see what’s going on.
It seems that the faces are separated from the backs. Makes sense. Unfortunately, merge vertices by distance doesn’t work without realizing instances, which defeats having instances in the first place. Luckily, this is easily fixable with a little bit of math!
Taking the length of the string, we can use that as the modulo for rotation.
Perfect!
In order to effectively sample the inputted curve, we need to get all of the characters to be positioned at (0, 0)
. After a fair amount of turmoil in google trying to find the right node to use, I discovered the “Sample Index” node. Using the index, I was able to get the position of each character, and translate them back to the origin.
My new favorite kanji
Adding in the curve sampling, and we’ve got something already quite impressive looking!