I am looking into if it there is a way to centre text on the screen (with script) depending on the number of lines used. I.e. it could be anything between for example 1 and 20 lines. The issue is that it needs to work for any font and any size, not just for a static, measured size. I am thinking about writing a script for this, but first I am trying to find out if it's possible to get the text properties for "size" and "number of lines" or at least "size of text region". If I could retrieve the text "box" size (like in Photoshop) I could centre the text area based on this information.
Any help is appreciated! Even if it's just regarding feasibility of this idea.
Centre text vertically depending on nr of lines used
Moderator: byronnash
Freelance CG Artist
Website: http://www.sundstedt.se
AEScript Blog: http://aescripts.blogspot.com/
CG Blog: http://www.sundstedt.blogspot.com
Website: http://www.sundstedt.se
AEScript Blog: http://aescripts.blogspot.com/
CG Blog: http://www.sundstedt.blogspot.com
-
- Posts: 704
- Joined: June 5th, 2004, 7:59 am
- Location: London, UK
There are a couple of ways to find the size of a text layer, depending on which version of AE you're using. In CS3 you can use the new sourceRectAtTime() method. In earlier versions you can temporarily add a mask to the text layer and read the mask bounds to find the size. There's a thread about it here:
viewtopic.php?t=150&postdays=0&postorder=asc&start=45
And here's a chunk of code from my SSA Karaoke Animator script where I'm using both methods so I can estimate the position of each word/syllable:
viewtopic.php?t=150&postdays=0&postorder=asc&start=45
And here's a chunk of code from my SSA Karaoke Animator script where I'm using both methods so I can estimate the position of each word/syllable:
Code: Select all
if (usePointControl == true) {
//add a temporary text layer to test the preset
theTextLayer = activeItem.layers.addText(finalText);
if (parseFloat(app.version) < 8) { // if app is AE7, use nab's mask technique
app.executeCommand(2367); //adds a mask
var theMask = theTextLayer.Masks.property(1);
var theVertices = theMask.maskShape.value.vertices;
// layer bounds = top, left, width, height
layerBounds= [theTextLayer.position.value[1] + theVertices[0][1],
theTextLayer.position.value[0] + (theVertices[0][0] / activeItem.pixelAspect),
(theVertices[2][0]-theVertices[0][0]) / activeItem.pixelAspect,
(theVertices[2][1]-theVertices[0][1])];
//alert("top = " + layerBounds[0] + " left = " + layerBounds[1] + " width = " + layerBounds[2] + " height = " + layerBounds[3]);
} else { // app is AE8 or greater
//var thePosition = theTextLayer.position.value;
var boundsObject = theTextLayer.sourceRectAtTime(roundToFrames(startTime), true);
layerBounds = [theTextLayer.position.value[1] + boundsObject.top,
theTextLayer.position.value[0] + (boundsObject.left / activeItem.pixelAspect),
(boundsObject.width/ activeItem.pixelAspect),
boundsObject.height];
//alert("top = " + layerBounds[0] + " left = " + layerBounds[1] + " width = " + layerBounds[2] + " height = " + layerBounds[3]);
}
theTextLayer.remove();
}
Thanks for the tips, I am almost done writing my own script based on NAB. I will check out your script if I get stuck. Cheers!
Freelance CG Artist
Website: http://www.sundstedt.se
AEScript Blog: http://aescripts.blogspot.com/
CG Blog: http://www.sundstedt.blogspot.com
Website: http://www.sundstedt.se
AEScript Blog: http://aescripts.blogspot.com/
CG Blog: http://www.sundstedt.blogspot.com
I used the tips from nabscripts and wrote my own script, thanks Paul for tips on how to find the size of a text layer! I then did some calculations so I can position my text layer(s) vertically aligned with a graphical background. I didn't test your example code, but thanks anyway.
Where can I find more info about - app.executeCommand(xxxx) ?
sorted!
Where can I find more info about - app.executeCommand(xxxx) ?
sorted!
Freelance CG Artist
Website: http://www.sundstedt.se
AEScript Blog: http://aescripts.blogspot.com/
CG Blog: http://www.sundstedt.blogspot.com
Website: http://www.sundstedt.se
AEScript Blog: http://aescripts.blogspot.com/
CG Blog: http://www.sundstedt.blogspot.com