Advertisement
Guest User

Untitled

a guest
Jun 6th, 2025
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. {
  2. var comp = app.project.activeItem;
  3. if (!(comp instanceof CompItem)) {
  4. alert("Please select a composition.");
  5. }
  6.  
  7. app.beginUndoGroup("Create Solids for Nulls with Opacity Check");
  8.  
  9. // Collect all null layers
  10. var nullLayers = [];
  11. for (var i = 1; i <= comp.numLayers; i++) {
  12. var layer = comp.layer(i);
  13. if (layer.nullLayer) {
  14. layer.name = "TackedNull_" + i;
  15. nullLayers.push(layer);
  16. }
  17. }
  18.  
  19. var total = nullLayers.length;
  20.  
  21. // Add progress text layer
  22. var progressText = comp.layers.addText("0 / " + total);
  23. progressText.enabled = false;
  24. progressText.moveToBeginning();
  25.  
  26. // Loop through stored nulls and create solids
  27. for (var j = 0; j < nullLayers.length; j++) {
  28. var nullLayer = nullLayers[j];
  29.  
  30. // Update progress display
  31. progressText.name= j + " / " + total;
  32.  
  33. // Create solid
  34. var solid = comp.layers.addSolid([1, 1, 1], "Solid for " + nullLayer.name, 64, 64, comp.pixelAspect);
  35. solid.moveBefore(nullLayer);
  36.  
  37. // Expression to follow the null's position in comp space
  38. var posExpr =
  39. "thisComp.layer('" + nullLayer.name + "').toComp([0,0,0]);";
  40. solid.property("Position").expression = posExpr;
  41.  
  42. // Expression to sample alpha from the first layer at solid’s position
  43. var opacityExpr =
  44. "alpha = thisComp.layer('Roto Matte').sampleImage(transform.position, [width, height]/2, true, time)[3]\n" +
  45. "alpha > 0.2 ? 100 : 0;";
  46. solid.property("Opacity").expression = opacityExpr;
  47.  
  48. solid.scale.setValue([250, 250]);
  49.  
  50. }
  51.  
  52. progressText.remove(); // Remove the progress text layer after completion
  53.  
  54. app.endUndoGroup();
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement