Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Maintain stroke width in 3d perspective

  • Graham Quince

    March 9, 2022 at 11:20 am

    I’d use CC Particle World, with the particle velocity and gravity set to 0 and the producer radius probs yo at zero too. Link the producer to a 3D null and copy the path into its position ( https://youtu.be/dYYmeBOWXpw ). The particles will remain in place and act like a 3D stroke

    Some contents or functionalities here are not available due to your cookie preferences!

    This happens because the functionality/content marked as “Google Youtube” uses cookies that you choosed to keep disabled. In order to view this content or use this functionality, please enable cookies: click here to open your cookie preferences.

  • Graham Quince

    March 9, 2022 at 11:22 am

    Ah, just re-read the Reddit post. So you want to zoom past the shape, but without it appear to thicker? Would scaling up the shape solve the problem instead of animating the camera move?

  • Christofer Kellgren

    March 9, 2022 at 1:18 pm

    Yes, you can scale it and add this expression:

    ” value / length(toComp([0,0]), toComp([0.7071,0.7071])) || 0.001; “

    in order to keep it at the same size.

    But i need something so that the appearance of the stroke will be the same, moving it back-forth on the depth axis in a 3d enviroment.

  • Christofer Kellgren

    March 9, 2022 at 1:21 pm

    Like this, but with the stroke to appear similar, regardless of position to the z-axis

  • Matthew Woods

    March 9, 2022 at 4:03 pm

    Have you tried using a Stroke Layer Style instead of the shape’s stroke? That will maintain width regardless of position in 3d, but only works on the alpha outline of shape. If you need to control internal strokes, you will need to separate your shape into multiple layers.

  • Filip Vandueren

    March 10, 2022 at 12:16 pm

    Try this expression on the stroke width:

    c=thisComp.activeCamera;
    p=thisLayer.toWorld(thisLayer.transform.anchorPoint);
    value * length(c.fromWorld(p)[2])/c.zoom;
  • Filip Vandueren

    March 10, 2022 at 12:48 pm

    Or this if you also want to counter any scaling that’s going on:

    c=thisComp.activeCamera;
    p=thisLayer.toWorld(thisLayer.transform.anchorPoint);
    value * length(c.fromWorld(p)[2])/c.zoom * 100/scale[0];

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy