Kevin Camp
Forum Replies Created
-
if you are not using a custom particle, it’s pretty simple, but you’ll want to use a light as an emitter.
first create a light, name it ‘Emitter’ (with a capital E) and make it a spot light (it will work with point, but spot is better suited for this).
create a null, make it 3d and then use the expression pickwhip to link the spot light’s point of interest to the nulls position.
then in particular, set the emiiter type as ‘light’ (it will automatically link to the light named ‘Emitter’), and set the direction to ‘directional’. the particle system will follow the position and direction of the spot light, the cone angle of the light will be the ‘spread’ of the emitter, and particle color will come from the light color (you can override it with the particle>set color property). you can even control the birth rate with the light’s intensity, which is based on a percentage of the set birth rate int particular.
custom particle’s break a lot of that (at least in v1.5), the light still works, but the directional aspect is lost.
if that’s the case, you’ll need two 3d nulls (you could use any 3d layers), one you’ll choose to be the emitter (in the emitter type, choose layer, then select the layer), and make it directional.
on the 3d null that is now the emitter, add an expression like this to its orientation property:
target = thisComp.layer(“Null 1”); // your layer name in the quotes
lookAt(position, target.position)then in particular you need to use the expression pickwhip to link each of the xyz rotation properties to the corresponding xyz orientation property of the emitter null, which would look similar to this for x rotation:
thisComp.layer(“Null 2”).transform.orientation[0]
once that’s done for each, the emiiter should track the other 3d null.
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
this procedure won’t fit the text layer to a solid’s size, but will put a solid panel behind the text, which may be what you are looking for.
to your text layer add the following:
- fast blur, set blur to 5 for starters (you can change later as needed)
- shift channels effect, setting ‘take alpha from’ to ‘full’
- fill effect, set color as needed
- cc composite, default settings
your text should now appear be on a solid rectangle. you can adjust the blur amount to set the amount of padding/border around the text. if you change the text, the solid panel will change accordingly.
if you needed to adjust the opacity of the slid panel, you can decrease the opacity of the fill effect and also uncheck the ‘rgb only’ option in cc composite.
if you use this often, you can select all the effects and then choose animation>save animation preset and you can recall it when ever you needed it.
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
Kevin Camp
January 31, 2014 at 11:39 pm in reply to: how to use the in and out point of a layer to control time remapping?i think i’d try it like this:
t = thisComp.frameDuration*15;
if (time-inPoint <= t) time-inPoint;
else if (time >= outPoint-t) outPoint-time;
else t;Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
there is a script called true comp duplicator that can duplicate the nested comps too:
https://aescripts.com/true-comp-duplicator/
you can also try this:
save your project, then select the comp you want to duplicate in the project window and choose file>reduce project. then save that project as a new name (if you want to be extra cautious, you may want to save as a new name first, to prevent overwriting your original project).
then open the original project and import the ‘reduced’ project. it will import that project into a folder within original project. within that folder you will have the duplicate comp, with all the necessary nested comps and assets to make revisions to without disturbing the original comps.
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
i’d try stoping it with a layer marker:
if (marker.numKeys > 0) if (time > marker.key(1).time) n = marker.key(1).time else n = time else n = time d = 100 Math.round (n*d)/d
the expression will use the time at the point of the layer marker as the final/stop position of the hand.
if you needed to stop and start the hand, to get the most control, instead of linking the expression to time, you could link it to a slider on the same layer…
n = effect("Slider Control")("Slider") d = 100 Math.round (n*d)/dif you add a keyframe to the slider at :00.0 with a value of 0, and then another keyframe at say :10.0 with a value of 10, you’d get the same animation as n = time, but the animation would stop at :10.
then if you wanted it to start again at :15.0, you’d just add a keyframe at that point (value 10) and then another keyframe later with a value relative to the between the stop and re-start keyframes (in this example 5).
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
Kevin Camp
January 20, 2014 at 7:17 pm in reply to: Particular – Emit from a layer & use a different layer to get the RGB colouringif you have the matte layer applied to the footage layer in a precomp, it think you should get what you need…
particles will only emit from the solid/non-alpha portions of the footage, but can be set to use the rgb color from the footage for the particles
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
bad the order of operations… needed to have another set of ().
valueAtTime((key(numKeys).time-key(1).time)*end/100)
however, it still doesn’t work like i though it would have… if the first keyframe is not at :00, it doesn’t work as it should. i would need to noodle on this a little more…
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
i’ll try….
end = effect(“Stroke”)(“End”);
the first line just takes the current value from the stroke effect’s ‘end’ property and assigns it to a variable i called ‘end’.
valueAtTime(key(numKeys).time*end/100)
the valueAtTime() function allows you to take the the value of a property at a specific time, any time, not just the current time. the time that you want the value from is specified in the parentheses ().
so to breakdown the part in the parentheses, key(numKeys).time is the time of the last position keyframe (note: we could have used key(5).time, since there were 5 keyframes, but numKeys returns the total number of keys, just in case we change the animation later). the time of that last keyframe defines the length of the animation.
i did assume the first keyframe started at time 0, but i should have factored that into the expression to be more foolproof. key(numKeys).time-key(1).time would work even if the first keyframe was not at time zero.
once we have the animation duration defined, we need to work in the ‘end’ value to determine what part of the animation we want to see. end/100 will return the percentage of the animation duration, or the point in the animation that we want to see…. ex. 25% will show the dot’s position 25% of the way around it’s animation path.
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
if you’d rather use the stroke effect and have the dot track the stroke endpoint, then you can do the exact same steps above, except instead of the step using write-on, use this step:
add the stroke effect. then add this expression to the circle’s center property (this would be after the center property had the mask path pasted into it):
end = effect(“Stroke”)(“End”);
valueAtTime(key(numKeys).time*end/100)now as you animate the stroke effect’s ‘end’ property the circle will track it. and you can still use the mirror effect if you wanted.
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW -
you can have the dot track the stroke, or the stroke track the dot… it’s a bit easier to have the stroke track the dot.
try this:
create a new solid then create a circular mask on the solid. twirl down the mask properties to reveal the mask path, select it and choose edit>copy.
add the circle effect to the solid and set the radius to something fairly small (this will be your ‘dot’). twirl down the effect properties and then the circle effect properties. select the ‘center’ property and choose edit>paste. your dot should now travel around the circular mask.
now add the ‘write-on’ effect to the same solid. option click the ‘brush position’ property and drag the expression pickwhip to circle effect’s ‘center’ property. this will result in an expressino that looks like this: effect(“Circle”)(“Center”).
now, as the dot moves around the circle, it should leave a line. if it leaves a trail of smaller dots, adjust the brush spacing property to form a line.
if you wanted to ‘mirror’ the animation (as int he sample), delete the last two keyframes from the circle center, and then add the mirror effect to the same solid. adjsut the reflection center to be in the center of the mask and the animation should now be relflected.
Kevin Camp
Senior Designer
KCPQ, KMYQ & KRCW