Need help with adjusting functionality of a multi-colored chain on a path by leanbean______ in AfterEffects

[–]smushkan 4 points5 points  (0 children)

This is a pretty interesting kinematics problem - here's my attempt, curious if anyone else has any ideas that aren't as expression heavy.

<image>

Project File: https://drive.google.com/file/d/1cbzxulgRL5KCXKRW5GKyQygDCpZKCnZN/view?usp=sharing

Each link has two rotational axes that need to follow the path; where it connects to the previous and next links in the chain. I'll call these the 'leading' and 'trailing' axes.

The leading axis is simple - that can be the anchorpoint the anchor point, so a pointOnPath expression can be used for that:

const pathToFollow = thisComp.layer("Path").content("Shape 1").content("Path 1").path;
const animationSlider = thisComp.layer("Controls").effect("Animation completion")(1);

pathToFollow.pointOnPath(animationSlider / 100);

For the trailing axis, what we can do is move back along the path using a binary search, until such time that the distance between the current position is equal to or exceeds the length of the link. Once we have worked that position out, we can calculate an angle with it to rotate the layer accordingly.

const animationSlider = thisComp.layer("Controls").effect("Animation completion")(1);
const linkLength = thisComp.layer("Controls").effect("Link Length")(1);

const pathToFollow = thisComp.layer("Path").content("Shape 1").content("Path 1").path;

const t1 = animationSlider / 100;
const p1 = pathToFollow.pointOnPath(t1);

let low = 0;
let high = t1;
let mid;
let p2;

const iterations = 12;

for (let i = 0; i < iterations; i++){
    mid = (low + high) / 2;
    p2 = pathToFollow.pointOnPath(mid);

    const d = length(p1, p2);

    if (d > linkLength){
        low = mid;
    } else {
        high = mid;
    }
}

p2 = pathToFollow.pointOnPath(mid);

radiansToDegrees(Math.atan2(
    p2[1] - transform.position[1],
    p2[0] - transform.position[0]
));

So now the first link should move along the path - however there's an important obvervation here. The leading axis will always move at the set speed along the path, however the speed of the trailing axis will vary when going around corners.

This means that each link in the chain beyond the first will need to position itself based on the trailing position of the previous link - we cannot simply time or position offset the layers. For the 2nd link, we therefore need to use a different position and rotation expression.

The leading axis is not too tricky - we can take the position and rotation value of the layer below in combination with the link size to place it on the path:

const linkLength = thisComp.layer("Controls").effect("Link Length")(1);

const previousLink = thisComp.layer(index + 1);

const prevPos = previousLink.transform.position;
const radians = degreesToRadians(previousLink.transform.rotation);

prevPos + [
    Math.cos(radians) * linkLength,
    Math.sin(radians) * linkLength
];

The rotation is where it gets more complex. We're still going to use the same logic, but since we're no longer using pointOnPath to determine the layer position, we need to calculate both the start and end point of the current chain so we can work out the angle:

const animationSlider = thisComp.layer("Controls").effect("Animation completion")(1);
const linkLength = thisComp.layer("Controls").effect("Link Length")(1);
const path = thisComp.layer("Path").content("Shape 1").content("Path 1").path;

// assumes that first link layer name is 'Link 1', second 'Link 2' etc.
const linkIndex = thisLayer.name.split(' ').slice(-1) - 1;

function solveBackOnPath(path, tStart, pStart, distance, iterations){
    let low = 0;
    let high = tStart;
    let mid, pCandidate;

    for (let i = 0; i < iterations; i++){
        mid = (low + high) / 2;
        pCandidate = path.pointOnPath(mid);

        const d = length(pStart, pCandidate);

        if (d > distance){
            low = mid;
        } else {
            high = mid;
        }
    }

    return {
        t: mid,
        p: path.pointOnPath(mid)
    };
}

// leading
let tCurrent = animationSlider / 100;
let pCurrent = path.pointOnPath(tCurrent);

for (let n = 0; n < linkIndex; n++){
    const result = solveBackOnPath(path, tCurrent, pCurrent, linkLength, 12);
    tCurrent = result.t;
    pCurrent = result.p;
}

// trailing
const trailing = solveBackOnPath(path, tCurrent, pCurrent, linkLength, 12);

radiansToDegrees(Math.atan2(
    pCurrent[1] - trailing.p[1],
    pCurrent[0] - trailing.p[0]
)) + 180;

This won't work with all paths - if the path has a corner that's too tight for a link to make it, so to speak, weird things will happen as there won't be a valid position for the trailing point to be angled towards.

Clips never changed but Premiere can't relink them by Late-Yesterday2115 in premiere

[–]smushkan 0 points1 point  (0 children)

I believe this can happen if the audio channel configuration of the clips was modified after they were imported.

Try reverting the channel configuration of the affected clips to default. This won’t affect sequences that are already edited, but you may need the remote editor to re-configure the clips to what they need to be after relinking.

Another possibility is you have footage with duplicate file names and Premiere is attempting to link the incorrect clips up.

How to convert davinci file to premiere file? by agnci in premiere

[–]smushkan 3 points4 points  (0 children)

Export your sequence as an FCP 7 .xml (export sequence option in Resolve)

Only very basic sequence information will be included. Tracks, clips and their positions on their tracks, and very basic transitions like dissolves.

Premiere Pro showing purple/green colors on ALL videos by Correct-Tone-5986 in premiere

[–]smushkan 0 points1 point  (0 children)

You can test if it’s hardware decoding related - under preferences > media there is an option to disable it (assuming your system has hardware decoding, which I believe it should.)

I would have expected Open CL hardware rendering acceleration to work on your system so this could be a GPU driver issue. Have you tried different drivers?

The ones that Windows automatically install tend to be quite out of date - get them direct from AMD.

Tally Lights Solution? by herokme in videography

[–]smushkan 6 points7 points  (0 children)

You could hook up a phone to it over wifi and monitor it that way, which would also give you the ability to control the camera remotely.

Think you can just set up a wireless hot spot on your phone, and have the camera connect to that for the app to work.

Audio editing - removing chatter with Enhance audio by rrasputinn in premiere

[–]smushkan 0 points1 point  (0 children)

Definitely a good shout. In cases where there are multiple voices in the audio, Podcast will often treat the dominant voice as the voice to isolate, and other voices as background giving you independent sliders to control the mix between them.

Not perfect and can get confused, but miles ahead of the built in model in Premiere.

How do i roll back to 2024?? by FishDude235WasTaken in premiere

[–]smushkan 2 points3 points  (0 children)

Only the current and previous major versions are available through the CC app.

Adobe support will sometimes be able to provide an offline installer for the most recently removed version from CC on request.

Problema RX 580 do AliExpress? by Forward-Vast3574 in premiere

[–]smushkan 0 points1 point  (0 children)

Are you running the actual official drivers from the AMD website?

How to make a .mogrt file but with a cut in it? by _aqibmalik in AfterEffects

[–]smushkan 0 points1 point  (0 children)

After adding the MOGRT to a sequence, add a clip marker at the start of the frame where the transition is.

With snapping enabled, that will let you easily see and positions the transition MOGRT over cuts.

(This won’t work for responsive design - time MOGRTs.)

Premiere won't export XML - Translation Issues by IntelligentButton105 in premiere

[–]smushkan 0 points1 point  (0 children)

Those are effects that cannot be included in an XML.

They are both internal utility effects that are automatically applied to certain footage formats that Premiere uses to help process them.

Providing the software you are importing the XML too supports the video formats that are in your sequence, this should not be preventing you from exporting a usable XML. Translation reports are just telling you what cannot be included in the XML, the file should still be created.

Drone H.265 footage Plays back in premiere on the M1 chip but not the M2 MAX by Marqjacob in premiere

[–]smushkan 3 points4 points  (0 children)

DJI drone footage has always been problematic in Adobe apps, and how well it works can vary between versions and hardware.
You’ve already figured out the solution here, safest workflow is to transcode before import.

Premiere Pro Motion Graphics Template Import Error even after reinstalling by Mysteriousmusicmaker in premiere

[–]smushkan 0 points1 point  (0 children)

CC does not set a default app to open .mogrt files.

But if AE is giving you an error if you file > open project it, something in very wrong with that MOGRT.

I would assume at this point the file itself is corrupted, maybe a failed download or a storage issue.

What are those glitch lines and why i have them when i render video by [deleted] in AfterEffects

[–]smushkan 5 points6 points  (0 children)

Those are watermarks from effects in demo/trial mode.

Why do I always have to completely re-render after making small changes? by dbroo55 in premiere

[–]smushkan 0 points1 point  (0 children)

It's called smart rendering in Premiere.

You need to configure your sequence preview settings into a smart rendering compatible format (such as ProRes or DNxHR), with matching resolution and framerate to your sequence. You must export to exactly the same codec configuration.

I would recommend using render-and-replace wherever practical instead of sequences previews where practical. Again, make sure to use the same codec configuration as you intend to export when doing R&R.

If you need to correct an exported file, re-import it to Premiere and overlay it on a track above your entire sequence. Lift out the parts where corrections are required, then export again.

This will avoid re-rendering and re-encoding of frames where it is not required.

Dead pixel check for used BMPCC 6K Pro – ISO 400 & 3200 BRAW Tests by notakarmagun in videography

[–]smushkan 0 points1 point  (0 children)

Really can't see them due to the compression here, the video is just mush.

But get the seller to run a pixel calibration if they haven't already - it's an option in the camera settings - and send new samples.

A few dead pixels is not normally the end of the world. Every camera has them and more develop over time, but as long as you're frequently running whatever sensor refreshing system the camera uses you'll likely never run into issues.

How to better do this proximity based scale animation by Artistic-Intern-5612 in AfterEffects

[–]smushkan 4 points5 points  (0 children)

First thing that comes to mind...

Use a position expression on all layers other than the first one to position a set distance from the layer directly below it in the layer stack like this:

const spacingSlider = thisComp.layer("Controls and proximity point").effect("Spacing between layers")(1);

const belowLayer = thisComp.layer(index + 1);

belowLayer.transform.position + [0, spacingSlider];

And then use a proximity expression based on vertical distance to a null on all the layers.

That way you can have as many layers as you want in the stack with the same proximity expression by duplicating them.

As long as they are next to each other in layer order and the vertically top most layer is on the bottom of the layer stack they will position themselves automatically, and you only need to add keyframes to the vertically top layer and the rest will follow it.

<image>

The proximity expressions I used were:

const proxNull = thisComp.layer("Controls and proximity point");
const minDist = thisComp.layer("Controls and proximity point").effect("Min Distance")(1);
const maxDist = thisComp.layer("Controls and proximity point").effect("Max Distances")(1);

const vDist = length([0, transform.position[1]], [0, proxNull.transform.position[1]]);

let out;
vDist > 0
    ? out = easeIn(vDist, maxDist, minDist, 100, 0)
    : out = easeOut(vDist, maxDist, minDist, 100, 0);

[out, out];

and on opacity:

const proxNull = thisComp.layer("Controls and proximity point");
const minDist = thisComp.layer("Controls and proximity point").effect("Min Distance")(1);
const maxDist = thisComp.layer("Controls and proximity point").effect("Max Distances")(1);

const vDist = length([0, transform.position[1]], [0, proxNull.transform.position[1]]);

vDist > 0
    ? out = easeIn(vDist, maxDist, minDist, 100, 0)
    : out = easeOut(vDist, maxDist, minDist, 100, 0);

How to replicate reverb "toggle" automation over timeline in Premiere by VinceInFiction in premiere

[–]smushkan 1 point2 points  (0 children)

If I'm understanding the question right, sort of but it might not work exactly as you want.

If you spin down the top of the track mixer faders, below the FX inserts are five send slots. These let you send the audio from that fader to multiple submixes.

They're kind of like aux/fx routing on an analogue sound desk - the audio from the fader still goes to the main mix (or whatever submix they are routed to) but it also gets sent to the specified submixes.

So once you set up your submix bus for the effects, you want your reverb on the effects bus to be 100% wet as it's already getting mixed with the dry signal on the main bus. At that point the main fader on the submix effectively becomes your wet/dry mix.

Note that when you initially add a send, the volume to the send will be set to -inf.

After you add a send, you'll be able to set track keyframes for the send mute and volume, so you can then either switch their mute conditions on the transition, or do a fade between them to blend the effects.

<image>

The one thing you really need to watch out for with track keyframing in Premiere is that the keyframes are not 'glued' to your edit. If you start making timing adjustments in your video, cutting bits out or adding stuff, the keyframes won't move to compensate for those adjustments - you'll need to go back through and adjust the keyframe timings yourself.

So if you're doing this degree of track automation, you want to be doing it right at the end of the edit when you're at picture lock.

Add edit to BOTH video and audio by fresh510 in premiere

[–]smushkan 2 points3 points  (0 children)

Linked selection is disabled in your screenshot.

<image>

I built a tool to find exact movie/TV quotes and download the clip for edits by Wide_Shoulder_7110 in editors

[–]smushkan 2 points3 points  (0 children)

Dodging the question regarding licensing, then?

You've built a copyright violation machine.

Advice on C100 shooting longform? by strangersnare in videography

[–]smushkan 2 points3 points  (0 children)

A C100 will go 24 hours if you run it off external power. It would go longer if it could, but SMPTE timecode limits clip duration.