Thick outline with multiple pencil drawings / composite?


is there a way to add a thick outline to multiple elements / composites
when using pencil lines (centerlines) ?

With brushstrokes it works using the bubble-shadow plugin, but the plugin ignores pencil lines :’(

I tried using an element node and adjusting the line thickness in the advanced tab. This does work, however it is HORRIFIC if you have more than one layer. Way too slow/complicated.
(I have a very high throughput of scenes, so manually adding hundreds of element nodes isn’t practical)

Perhaps there is a way to use the script node? I couldn’t wrap my head around that, not being a “scripting god”… (more like the oposite)

Ideal would be a way to attach a composite to some kind of node which in turn sets the line thickness on ALL drawings attached to that composite. (This is what bubble-shadow does on brush strokes!)

I am pretty sure Animate Pro 3 can do this somehow :slight_smile:

The point of all this is to add a thick outline to all layers (think: Mr. Bean cartoon)

Any hints appreciated :slight_smile:

Many thanks!

hi janusjg,

I have a solution: use script.
This script is in Harmony 11 only, you try use it in Animate Pro 3, I think able to run it.
so I suggest you buy the Harmony 11 standalone version, lol.

this script name is “TB_EditLineThicknessOvertime.js”
post your e-mail, I’ll sent the script file to you.

:frowning: Ooops… script formatting is lost.
post your e-mail.

or, follow this:
create a new notepad file, copy the following words, and paste in it,
and then, rename the notepad file to “TB_EditLineThicknessOvertime.js”
(the file extension is *.js)

(no this line)------------------------------------------------------------(no this line)
function TB_Edit_Line_Thickness_Overtime()

var globalMul ="1";
var globalAdd="0";
var lineThickPro = "lineThickPro";
var lineThickCon = "lineThickCon";

d = new Dialog;
d.title = "Edit Pencil Line Thickness";
var group = new GroupBox;   

var Mul = new NumberEdit;
Mul.label = "Multiplicator:";
Mul.decimals =1;
Mul.minimum = 0;
Mul.maximum = 99;
Mul.value = globalMul;

var Add = new NumberEdit;
Add.label = "Additive:";
Add.decimals =1;
Add.minimum = 0;
Add.maximum = 99;
Add.value = globalAdd;

var PencilLATY = new RadioButton;
var PencilLATA = new RadioButton;
var PencilLATN = new RadioButton;

PencilLATY.checked = true;
PencilLATA.checked = false;
PencilLATN.checked = false;
PencilLATY.text = "Adjust Line Art Thickness";
PencilLATA.text = "Adjust Line Art Thickness Over Time";
PencilLATN.text = "Default Line Art Thickness";

// Call dialog, pressing "Cancel" returns false
var rc = d.exec();
if (!rc)
	// Call dialog, pressing "Cancel" returns false

if (PencilLATY.checked)
	LAT = "Y";
	globalMul = Mul.value;
	globalAdd= Add.value;

if (PencilLATN.checked)
	LAT = "N";
if (PencilLATA.checked)
	LAT = "Y";
	var name_function = Input.getItem( "Function", 


",“lineThick8”,“lineThick9”] );
lineThickPro = name_function + “Pro”;
lineThickCon = name_function + “Con”;

	if (column.type(lineThickPro) == "" && column.type(lineThickCon) == "" ) 
	if (column.type(lineThickPro) == "BEZIER" && column.type(lineThickCon) == "BEZIER") 
		MessageBox.information("Operation Aborted: Cannot create columns");

for (var sel_index = 0 ; sel_index < selection.numberOfNodesSelected(); sel_index++)
	var node_name = selection.selectedNode( sel_index );
	if (node.type( node_name ) == "READ")
		print (sel_index+"."+node_name+ " is a read.");
		print( "Old Adjust:"+ node.getTextAttr( node_name, 1, "adjustPencilThickness" ) );
		node.setTextAttr( node_name,"adjustPencilThickness",0,LAT);
		print( "New Adjust:"+ node.getTextAttr( node_name, 1, "adjustPencilThickness" ) );
		if (LAT == "Y")
			if  (PencilLATA.checked)
				node.linkAttr(node_name,"multLineArtThickness", lineThickPro);
				print( "Old Mul:"+ node.getTextAttr( node_name, 1, "multLineArtThickness" ) 

node.setTextAttr( node_name,“multLineArtThickness”,0,globalMul);
print( “New Mul:”+ node.getTextAttr( node_name, 1, “multLineArtThickness” )


				print( "Old Add:"+ node.getTextAttr( node_name, 1, "addLineArtThickness" ) 

node.setTextAttr( node_name,“addLineArtThickness”,0,globalAdd);
print( “New Add:”+ node.getTextAttr( node_name, 1, “addLineArtThickness” )

print( “Ignored Mul:”+ node.getTextAttr( node_name, 1, “multLineArtThickness” ) );
print( “Ignored Add:”+ node.getTextAttr( node_name, 1, “addLineArtThickness” ) );


(no this line)------------------------------------------------------------(no this line)

and then,
in Animate Pro 3, click on the menu bar “Windows - Script Editor”,
pop-up the script editor window, and click the upper left corner button “File - Import Script”,
browse to the TB_EditLineThicknessOvertime.js file.
and click on the menu bar “Windows - Toolbars - Scripting”,
click first icon “manage scripts”,and add the TB_EditLineThicknessOvertime.js icon to toolbar.

now you can use it.

notice, you need first select the layer, and then use the script.
(hold on the Shift key to select multiple layer).
this script can adjustment pencil lines of multiple frames of multiple layers at the same time.

try it.

p.s. would you post a screenshot about bubble-shadow plugin effect?
I have not used it before.
my e-mail:


hi Loong,

wow, thanks for all your effort with the script!!
Unfortuneately it doesn’t seem to work in Animate Pro 3.

SyntaxError: Parse error
69 [“lineThick”,“lineThick1”,“lineThick2”,“lineThick3”,“lineThick4”,“lineThick5”,“lineThick6”,“lineThick7”,"lineThick7

Here is a screenshot of the bubble-shadow plugin. (the camera on the left is pretty zoomed in)

It’s an old Toonboom plugin which once could be found on the site in a template pack. Not sure if it’s still there. But it does exactly what i need, but only for brush strokes… :o/

An ideal solution would be a (script?)-node which behaves exactly like the bubble-shadow, but for pencil lines - or even better for everything :slight_smile:

Here is a screenshot of the working “per-layer”-setup which is impractical.

(The black colorcard is just to make the outline black. Without it the thick outline would be the same color as the pencil line.)

I have to point one element node to each layer by hand in the scene to include in the outline.
At least i know of no way to point an element node to multiple layers or ideally a composite.

Even if the script worked i’d have to manually start it in each scene by selecting the layers and clicking a button. This has the potential for errors if there are changes and i forget to re-apply it for example. Or i miss one layer in the selection.
A node based setup would be better in this regard as it automatically updates through the network. (as in the bubble-shadow example - it renders the outline onto everything connected to the layers-composite)

Anyways, thank you again for your effort with the script.

Thanks & have a nice weekend :slight_smile:

my email:

I send script to your e-mail. :slight_smile:

and thank you. you too :smiley:

forgot to say, this script only in the render view to see the effect.


hi, janusjg
Have you tried matte-resize module in network?


hi Loong,

yes i tried that, but it’s an really ugly effect. It has not as clean/crisp a line as i need (like bubble shadow generates for example) and it has ugly artefacts (flat segments on the outer-most parts)

You can see is in the screenshot you attached on the character’s nose and on the top of his head.

So, unfortunately it’s not a solution.

Thanks or the fast reply :slight_smile: