[Add-On] Randomiser - Add On for Animating Text Data

This is an add on that I’ve been working on occasionally for a while now. It started with my first attempts at learning python by creating a simple script to help me do cascading text, Matrix style. From there I used a modified version of the script on a job doing some animated numbers and text. I’ve dug it out for another job recently and thought it worthwhile tidying it up and making it into an add-on rather than a stand alone script.

You can download it here:


More information (Blog Post):


  • Simply download the script and install it to your add-ons folder in the usual way (either manually or via the user preferences menu in Blender).

Mesh Objects:

  • Select object and enable randomise from the Object tab of the properties editor.
  • Specify a Group to sample object data from.
  • Update Method can either be set to Frequency, which updates the object data every set number of frames, or manual, which updates every time the “Time” property changes. The manual method is probably the more natural way for blender users, where you simply add keys to drive the change. The Frequency option is just there due to my hatred of adding keyframes where I could specify a couple of offset/speed parameters instead.

Text Objects:

  • Select Text Object and enable randomise from the Object Data tab of the properties editor (text properties).
  • The Update Method options work the same as before.
  • Specify a Generate Method.
  • Based on this you will have different options for the source, choose either one of the procedural options, or for the text block options, specify the name of the text block you want to use in the Text Datablock property.

Adding Noise to Text:

  • Specify a Noise Method, Mask or Random.

  • For Mask, provide a comma delimited list of indices (positions) in the string to replace with noise.

  • For Random, specify a threshold for the proportion of indices to be replaced with noise.

  • Specify a source for the noise. This can be either a text block or one of the procedural options as before.

  • Other options such as Update Noise Independently let you specify how the noise positions are selected and how they are updated. The Ignore Whitespace option prevents indices being replaced if the character is a space or new line.

  • Tip: When using noise consider using a monospace font – this keeps the characters the same width when replaced and stops the text “jiggling” too much.

Great Add-on! Thanks a lot


I was trying out the AddOn and I do get an error when I enable it. It is the line about locale.

locale.setlocale(locale.LC_ALL, 'en_GB')

So I commented that line and the AddOn enabled.

Then I added a cube and enabled randomize and nothing really happened. So I added a Text field and enabled Randomize in both the object and data panels (can this be combined to one enable check box?). Still no action out of the AddOn. When I check the console I do see error messages rolling by.

Index Error can not choose from an empty sequence

I guess because I don’t know how to use it I broke it just messing around?

Thanks for the bug report, I think a lot of people were having this problem. It’s to do with the locale python module I’m using to format numbers correctly (with grouped digits i.e. “1,000,000” not “1000000”). I think it’s fixed now but as not everyone will have locale settings that I can predict I’m not 100% sure.


[07-04-14] Some minor UI Tweaks, bug fixes for enabling/disabling add-on.
[07-04-14] Fixed Attribute Error when working with linked/appended objects that don’t have Randomiser settings yet.
[07-04-14] Added some better error messages and feedback for when the script needs more user input/can’t find the data it wants.
[07-04-14] Fixed the Locale Error issue (“locale.Error: unsupported locale settings”) when enabling add-on. Was an issue with the “Locale” python module the script uses for formatting numbers correctly as strings. Replaced the locale module with something that turned out to be simpler anyway.

Updated Download:


I also put together a tutorial video on how to use the script:

Thank you for the tutorial video!

this is awsome!! thanks you very much! very useful for me

This is so cool Ben. I am going to use it for a TV news story soon. All about money laundering and digital fingerprints. A little Matrixey action will be nice.

@Toudou @Humanizer: Thanks!
@3PointEdit: Glad to hear you like it. Send me a link to the results if you can!

Great addon - unfortunately, the long text causes crash while trying render animation.
This is probably a bug in a blender, because the same thing happens when I use text scrambler addon.

file in attachment
Code.blend (976 KB)

Sorry for the delay… here’s a link to the story that I used the addon in: (see green numbers @ 2:00mins aprox)

*bonus blender effect is the surveillance tracking at the start :wink:

@3pointEdit: that’s a delay :slight_smile:

Does the addon works (2.77.1)for you guys?
Thanks for your response.

EDIT: Almost one year later I can answer to my self :slight_smile: You are an idiot … “Text Datablock” doesn’t mean you should type a text to the field, but go to blender’s “Text Editor” window and create new text. Type/paste text you want to randomise and name it. Name of this text data block use in add-on’s field “Text Datablock:”.


This is SO need to have add-on! But it doesn’t works for now - there is no option to insert “Text Datablock”…
It’s a three years old add-on, but I hope that there’s still anyone to answer… this kind of things MUST be in the official builds…

Did you download this from the file in first post? The text datablock shows for me. I’m not getting a “seed” option and the panel layout little different. Must be different versions?

OK, I see you downloaded the multi file version. It’s missing part of the panel code that shows that. Delete everything from line 123 to (elif randomise.generate_method == ‘numeric’ ) line and replace with this.

                elif randomise.generate_method == 'ticker':
                    row = col.row()
                    row.label(text = "Source:")
                    row = col.row()                
                    row.prop(randomise, "textdata")
                    row = col.row()                    
                    row.prop(randomise, "ticklength")

Any news about a Blender 2.8 update of this add-on? I’d love that, thanks.


I also would like to know if there is going to be a 2.8 update.


Can this addon be updated to Blender 2.8 ?:smiley::smiley: