Advertisement
FlexLetsPlay

Main Setup

Oct 31st, 2017
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #target aftereffects
  2. var mainComp = app.project.activeItem;
  3. premComp = null;
  4.  
  5. function MainSetup() {
  6.     if (mainComp == null || !(mainComp instanceof CompItem)) {
  7.         alert("No Composition selected");
  8.         return;
  9.     }
  10.    
  11.     var premCompName = mainComp.layers[1].name;
  12.     premComp = GetFootageByName(premCompName);
  13.     premComp.name = "premComp"; //das ist die Komposition die ich aus Premiere importiere
  14.    
  15.     app.beginUndoGroup("Youtube - Main Setup"); //dient dazu um das Script mit einem STRG+Z wieder rückgängig machen zu können
  16.    
  17.     StretchMainComp(); //vergrößerte die dauer der Hauptkomposition auf (Längste video datei + 5 minuten)
  18.    
  19.     RenameFootage(); //umnennen der Kamera und Gameplay dateien um sie später einfacher wieder zu finden in anderen Skripten
  20.  
  21. }
  22.  
  23. // Main Setup ist in 2 teile aufgeteilt, weil ich ein Paar sachen mache bevor ich das Fenster mit der auswahl von Gameplay/Kamera öffne
  24. function MainSetup2() {
  25.     CreateFolders(); // erstellt ordner im Project
  26.    
  27.     ImportNeccesaryFiles(); //importiert dateien wie Intro, outro etc..
  28.  
  29.     MinecraftResize(); //Passt die größe für mein Minecraft Video an, da ich dieses nicht genau in 1920x1080 aufnehme
  30.    
  31.     SelectMainComp();  //Skripte verändern manchmal die ausgewählte Komposition, deswegen setzte auch die Auswahl immer wieder auf die Hauptkomposition zurück
  32.    
  33.     InsertMiniintro(); // Einfügen meines "miniintros", ein kleines aufploppen meines Logos am anfang eines videos
  34.    
  35.     SelectMainComp();    //wieder die Hauptkomposition auswählen
  36.    
  37.     app.endUndoGroup(); //ende der "Rückgängig"-Funktion
  38. }
  39.  
  40. function CreateFolders() {
  41.     app.project.items.addFolder("memeFiles");
  42.     app.project.items.addFolder("editFiles");
  43. }
  44.  
  45. function InsertMiniintro() {
  46.     var layer = mainComp.layers.add(GetFootageByName("miniintro.avi"));
  47.     layer.startTime = 2.5;
  48.  
  49.     ShowBigCam(0, true);
  50.     ShowBigCam(2.5, false);
  51.  
  52.     ShowBlurredGame(0, false);
  53.     ShowBlurredGame(2.5, true);
  54.     ShowBlurredGame(5.5, false);
  55. }
  56.  
  57. // Dieses Fenster ist die Auswahl des Gameplays / Kamera zur späteren umbenennung
  58. function CreateWindow(thisObj) {
  59.     function CreateWindowUI(thisObj) {
  60.         var myPanel = (thisObj instanceof Panel) ? thisObj : new Window("palette", "Panel Name", [0, 0, 300, 100]);
  61.         var dropdownList = "";
  62.         for (var i = 1; i <= app.project.items.length; i++) {
  63.             dropdownList += "'" + app.project.items[i].name + "'";
  64.             if (i < app.project.items.length) dropdownList += ",";
  65.         }
  66.  
  67.         res = "group{orientation:'column', alignment:['fill', 'fill'], alignChildren:['fill', 'fill'],\
  68.                    myGroup: Group{orientation:'column', alignment:['fill', 'fill'], alignChildren:['fill', 'fill'],\
  69.                         myStaticText: StaticText{text:'Camera'},\
  70.                         dropdownComp: DropDownList{properties:{items:[" + dropdownList + "]}},\
  71.                           myStaticText2: StaticText{text:'Gameplay'},\
  72.                         dropdownComp2: DropDownList{properties:{items:[" + dropdownList + "]}},\
  73.                          btnMain: Button{text:'OK'},\
  74.                    },\
  75.            }"
  76.  
  77.         // Adds resource string to panel
  78.         myPanel.grp = myPanel.add(res);
  79.  
  80.         // DropDownList default selection
  81.         myPanel.grp.myGroup.dropdownComp.selection = 0; // Dropdown index starts at 0
  82.         myPanel.grp.myGroup.dropdownComp2.selection = 0; // Dropdown index starts at 0
  83.  
  84.         // Assign function to UI elements
  85.         myPanel.grp.myGroup.btnMain.onClick = function() {
  86.                
  87.             var cameraFootage = GetFootageByName(myPanel.grp.myGroup.dropdownComp.selection.text);
  88.             var gameplayFootage = GetFootageByName(myPanel.grp.myGroup.dropdownComp2.selection.text);
  89.            
  90.             myPanel.close();
  91.             app.beginUndoGroup("Youtube - Main Setup 2");
  92.    
  93.             cameraFootage.name = "Camera";
  94.             gameplayFootage.name = "Gameplay";
  95.             MainSetup2();
  96.             app.endUndoGroup();
  97.         };
  98.  
  99.         // Setup panel sizing and make panel resizable
  100.         myPanel.layout.layout(true);
  101.         myPanel.grp.minimumSize = myPanel.grp.size;
  102.         myPanel.layout.resize();
  103.         myPanel.onResizing = myPanel.onResize = function() {
  104.             this.layout.resize();
  105.         }
  106.  
  107.         return myPanel;
  108.     }
  109.  
  110.     // Build script panel
  111.     var myScriptPal = CreateWindowUI(thisObj);
  112.  
  113.     if ((myScriptPal != null) && (myScriptPal instanceof Window)) {
  114.         myScriptPal.center();
  115.         myScriptPal.show();
  116.     }
  117. }
  118.  
  119. function ImportNeccesaryFiles() {
  120.     var editFolder = GetFootageByName ("editFiles");
  121.    
  122.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\bell.wav"))).parentFolder = editFolder;
  123.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\intro.avi"))).parentFolder = editFolder;
  124.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\outro.avi"))).parentFolder = editFolder;
  125.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\like.avi"))).parentFolder = editFolder;
  126.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\ScreenWipe.avi"))).parentFolder = editFolder;
  127.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\waterdrop.mp3"))).parentFolder = editFolder;
  128.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\Like.avi"))).parentFolder = editFolder;
  129.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\subscribe.avi"))).parentFolder = editFolder;
  130.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\##SubCommiDesTages.png"))).parentFolder = editFolder;
  131.     app.project.importFile(new ImportOptions(File("D:\\Videos\\Recordings\\EDIT\\miniintro.avi"))).parentFolder = editFolder;
  132. }
  133.  
  134. function RenameFootage() {
  135.      CreateWindow(this);
  136. }
  137.  
  138. function StretchMainComp() {
  139.     var maxFound = 0;
  140.     for(var i = 1; i < app.project.items.length; i++){
  141.         if(app.project.items[i] != null && app.project.items[i].duration != null && app.project.items[i] != mainComp) {
  142.             maxFound = Math.max(maxFound, app.project.items[i].duration);
  143.         }
  144.     }
  145.    
  146.     mainComp.duration = maxFound + (5 * 60); //longest of all recordings + 5 minuten
  147. }
  148.  
  149. function MinecraftResize() {
  150.     // Minecraft resizing if needed
  151.     if (confirm("Is this a Minecraft video?", true, "Minecraft resizing")) {
  152.         GetTopMostActiveLayerInComp(premComp, "Gameplay").scale.setValue([94.1, 100, 100]);
  153.     }
  154. }
  155.  
  156. // Diese Funktion Holt mit den Obersten Aktiven Layer in einer Komposition, so kann ich egal wo ich gerade bin, immer den AKTIVEN layer bearbeiten
  157. function GetTopMostActiveLayerInComp(comp, startOfName) {
  158.     for (var i = 1; i <= comp.layers.length; i++) {
  159.         if (comp.layers[i].active && comp.layers[i].name.substring(0, startOfName.length) == startOfName) {
  160.             return comp.layers[i];
  161.         }
  162.     }
  163.     return null;
  164. }
  165.  
  166. // Erstellt einen Keyframe
  167. function CreateKeyframe(property, value, time) {
  168.     property.setValueAtTime(time, value);
  169.     property.setInterpolationTypeAtKey(property.nearestKeyIndex(time), KeyframeInterpolationType.HOLD, KeyframeInterpolationType.HOLD);
  170. }
  171.  
  172. function ShowBigCam(time, big) {
  173.     var camLayer = GetTopMostActiveLayerInComp(premComp, "Camera");
  174.     var posProp = camLayer.position;
  175.     var rotProp = camLayer.rotation;
  176.     var scaProp = camLayer.scale;
  177.  
  178.     if (big == true) {
  179.         CreateKeyframe(posProp, [400, 380, 0], time);
  180.         CreateKeyframe(rotProp, -10, time);
  181.         CreateKeyframe(scaProp, [60,60,100], time);
  182.     } else {
  183.         CreateKeyframe(posProp, [190, 170, 0], time);
  184.         CreateKeyframe(rotProp, 0, time);
  185.         CreateKeyframe(scaProp, [31,31,100], time);
  186.     }
  187. }
  188.  
  189. function ShowBlurredGame(time, blurred) {
  190.     var gameLayer = GetTopMostActiveLayerInComp(premComp, "Gameplay");
  191.     gameLayer.Effects.addProperty("ADBE Gaussian Blur 2");
  192.    
  193.     var prop = gameLayer.Effects.property("ADBE Gaussian Blur 2").property("ADBE Gaussian Blur 2-0001");
  194.  
  195.     if (blurred == true)
  196.         CreateKeyframe(prop, 100, time);
  197.     else
  198.         CreateKeyframe(prop, 0, time);
  199. }
  200.  
  201. function GetFootageByName(name) {
  202.     for (var i = 1; i <= app.project.items.length; i++) {
  203.         if (app.project.items[i].name == name) {
  204.             return app.project.items[i];
  205.         }
  206.     }
  207.     return null;
  208. }
  209.  
  210. function SelectMainComp() {
  211.     for (var i = 1; i <= app.project.items.length; i++) {
  212.         if(app.project.items[i] !== mainComp)
  213.             app.project.items[i].selected = false;
  214.         else
  215.             mainComp.selected = true;
  216.     }
  217. }
  218.  
  219. MainSetup();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement