vrmath42's Collection
by
vrmath42
v
vrmath42's Collection
4 Followers
프리미어강좌 3D슬라이쇼 사진영상제작
사진 자료를 가지고 움직이는 영상자료를 아주 쉽게 만들 수 있는 프리미어로 이번에는 3D효과를 주어보자. 이 자료는 유튜브의 도비마스터의 강좌를 참고함. 준비물 : 사진자료와 프리미어 프로 1. Ctrl-N 새로운 시퀀스를 만든다. 2. 스퀸스와 크기가 같게 가공한 스틸이미지를 import한다. 이때 Edit-preferences-Timeline에서 시간을 5초로 설정한다. 3. 각각의 이미지를 scale를 120%로 조정한다. 하나의 이미지를 선택하여 클릭하고, 좌상단의 Effect Controls에서 스케일값을 120로 변경하고 fx Motion 부분을 클릭하고 Ctrl-C하여 변경된 부분을 복사한다. 그리고 나머지 이미지를 마우스로 드래그 하여 여러장 동시에 선택하고 Ctrl-V로 붙어넣기하면 스케일을 그대로 적용할 수 있다.(일전에 저정하여 적용하는 부분도 있었는데.. 이것이 훨씬 편리하다) 4. 전체 이미지를 선택하여 Alt를 누른상태에서 위로 드래그 하여 그대로 다른 레이어에 복제한다. 그리고 위의 레이어는 눈을 꺼준다.(안보이게) 5. 효과적용 Effects - blur 검색하여 Gaussian Blur를 클릭 드래그 하여 하나의 이미지위에 올린다. 적용된 이미지를 클릭하고 Effect Controls에 들어가서 Blurriness 75로 Repeat Edge Pixels 클릭하고 fx Gaussian Blur 를 클릭하여 Ctrl-C로 복사하여 나머지 이미지를 드래그하여 선택한 후 Ctrl-v로 적용한다. 6. 비디오 v2의 눈을 켜주고 스케일 조정 첫번째 이미지를 선택하여 에니메이션 스탑워치를 켜고 처음에는 70% 끝부분에는 85%로 조금 부드러운 움직임을 연출하기 위해서 처음 부분의 키프레임을 우클릭하여 Ease in 끝 부분의 키프레임에는 Ease out를 선택하여 fx Motion을 복사하여 나머지 이미지에 적용한다.(Ctrl-V) 주의사항) 스페이스바나 플레이버튼을 클릭하여도 스케일의 변화가 없는 경우는 엔터키를 누르면 렌더링이 되면서 변화 확인 가능 7. Effect에서 shad검색하여 Perspective의 Drop Shadow와 Radial Shadow를 적용한다. 먼저 Radial Shadow를 드래그 하여 하나의 이미지에 올려놓고 다음과 같이 욥션을 조정한다. 특히 Light Source의 x,y좌표를 드래그 하여 그림을 정중앙에 맞춘다. 이욥션을 복사하여 다른 그림에도 적용한다.(Ctrl-V) 8. Drop Shadow 같은 방법으로 적용 (거리 20, 부드러움 80 적용) 9. 원하는 video Transitions 적용 slide 검색하여 두 이미지 사이에 드래그 또는 원하는 Transitions를 오른쪽 클릭하여 Dafault로 설정한 후 이미지 전체를 선택한 후 Ctrl-D로 적용할 수도 있음.
많은 사진 한 화면에 보이는 영상 제작방법
코로나19로 모든 행사가 취소되고 비대면 방식인 영상자료로 대신하는 경우가 늘었다. 그래서 많은 사진을 한 화면에 짧은 시간에 보여주는 자료를 만들어 보면 어떨까 하는 생각을 하게 되었다. 실제로 만든 자료는 수백명이 졸업하는 학생 사진을 한 화면에 보여주는 자료를 만들었지만 여기서는 초상권문제도 있고 해서 스틸이미지 하나를 잘라서 보여주는 자료를 소개한다. 1. 활용프로그램 : abode photoshop, abode animate , photoworks, photoscape X - abode photoshop : 주어진 사진을 원하는 크기로 조각내여 파일로 만들기 - abode animate : 조각난 사진을 무순으로 원하는 크기에서 지정된 크기로 원하는 시간에 보여주기 - photoworks : 일괄 사진의 크기를 변형시키고 원하는 포멧으로 만들기 - photoscape X : 일괄 자르기 사진의 사방 가장자리를 원하는 수치만큼 일괄로 잘라서 저장 2. 자료 : 스틸이미지나, 수백장의 행사사진, 학생사진... 뭐든 다 좋다. 만약 하나의 사진을 잘라서 사용하는 것이 아니면 포토샵은 필요없고, 포토워크와 포토스케이프만 있으면 된다. 3. 고화질 동영상 제작을 위한 가로 세로 크기는 1920 * 1080 사이즈 보통 작성한다. 만약 가로 20개 사진과 세로 8개의 사진으로 자를 수 있다면 아래와 같다. 사진 사이즈는 96*135가 된다. 한 화면에 보여줄 사진의 개수에 숫자를 더 보태어서 두 수의 곱으로 나타낼 수 있는 수를 찾는다. 그리고 가로는 1920를 나누어 주고, 세로는 1080를 나누어서 들어갈 사진의 개수를 정한다. 물론 위에 문자가 들어갈 부분도 각각의 사진을 생각하여 숫자에 포함한다. 사진이 부족할 때는 중요한 사진을 여러번 보여줘도 문제가 없다. 이 작업까지 필요한 프로그램은 엑셀과, 포토웍스, 포토스케이프이다. 만약 사진을 잘라서 위 예시처럼 만들어 주고 싶을 때는 포토샵의 자르기 기능을 쓰면 좋다. 1) 원하는 사진을 잘라내기를 이용하여 원하는 크기로 만든후 왼쪽 메뉴 slice tool로 하나의 대표 크기를 정한다. 2) 지정한 사각형의 오른쪽과 아래에 각각 오른쪽 클릭하여 divide sile를 클릭하여 원하는 숫자를 넣는다. 3) Alt-shift-Ctrl-S ( save for web)를 선택하여 jpg로 선택하여 저장하면 잘라진 그림이 일련번호로 저장된다. 4. 저정된 파일을 일련번호를 매긴다 위의 그림은 가로 세로 10개씩의 파일로 100개의 자료를 만든형태이므로 가로 10개씩 선택하여 첫번째 파일이름바꾸기에 1를 입력한다. 그럼 1 (1).jpg 1 (2).jpg..... 1 (10).jpg가 만들어지고 같은 방법으로 한줄씩 지정하여 파일을 이름을 10 (10).jpg까지 바꾸어 pic폴더에 저장한다. 5. adobe animate에서의 가로 세로 크기를 1920*1080으로 만들어서 첫번째 프레임에 F9를 클릭하여 액션으로 들어가서 다음 자료를 입력한다. import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import flash.utils.Timer; import flash.events.TimerEvent; import fl.transitions.Tween; import fl.transitions.easing.*; import fl.transitions.TweenEvent; //사진 폴더 지정 var path:String="pic/"; var sp:Sprite=new Sprite(); addChild(sp); //var temp1 : Array= new Array(); var mcban : Array= new Array(); var mcx : Array= new Array(); var mcy : Array= new Array(); var mcban1 : Array= new Array(); var mcx1 : Array= new Array(); var mcy1 : Array= new Array(); function init():void{ var xnum : int= 192; var ynum : int= 108; /* 1920*1080에 가로 세로에 꽉차게 들어가도록 가로 세로 사진의 배치수를 구하고 좀 넉넉하게 숫자를 더하여 **중학교 제**회 졸업을 축하합니다. 등의 글자를 미리 지정한 그림 사이즈로 정하여 사용한다. (글자수 16자에 사진이 더 필요하면 같은 학생을 더 나오게 하면 됨) 사진은 먼저 PHOTOWORKS로 일괄 변환시키고 미세하게 좌우상하 자를 때는 photoscape x 를 사용하여 일괄 자르면 편리하다. x1 : 1920의 화면에 들어가는 가로 사진의 수, x2 : 1080에 들어가는 세로 사진의 수 */ var x1:int=10; var x2:int=10; var x3:int=1; var ii:int=0; var totalpicnum:int=101; //총사진수+1 var widthx:int=192; //사진 가로사이즈 var heighty:int=108; //사진 세로사이즈 while(mcban.length<totalpicnum){ for(var i :int=1 ; i <x1+1-ii ; i++){ mcban.push(String(x3)+" ("+String(i+ii)+").jpg") mcx.push((i+ii)*xnum-widthx); mcy.push(x3*ynum-heighty); mcban1.push(String(x3)+" ("+String(i+ii)+").jpg") mcx1.push((i+ii)*xnum-widthx); mcy1.push(x3*ynum-heighty); if(mcban.length>totalpicnum){ break; } } // 사진은 나선방향으로 저장되도록 되어 있고 나선의 횟수를 보고 break의 값을 결정한다. for(var j:int=1 ; j<x2-ii ; j++){ mcban.push(String(x3+j)+" ("+String(x1)+").jpg") mcx.push(x1*xnum-widthx); mcy.push((x3+j)*ynum-heighty); mcban1.push(String(x3+j)+" ("+String(x1)+").jpg") mcx1.push(x1*xnum-widthx); mcy1.push((x3+j)*ynum-heighty); if(mcban.length>totalpicnum){ break; } } for(var k:int=x1-1; k>x3-1 ; k--){ mcban.push(String(x2)+" ("+String(k)+").jpg") mcx.push(k*xnum-widthx); mcy.push(x2*ynum-heighty); mcban1.push(String(x2)+" ("+String(k)+").jpg") mcx1.push(k*xnum-widthx); mcy1.push(x2*ynum-heighty); if(mcban.length>totalpicnum){ break; } } //x2--; for(var l:int=1 ; l<x2-1-ii ; l++){ mcban.push(String(x2-l)+" ("+String(x3)+").jpg") mcx.push(x3*xnum-widthx); mcy.push((x2-l)*ynum-heighty); mcban1.push(String(x2-l)+" ("+String(x3)+").jpg") mcx1.push(x3*xnum-widthx); mcy1.push((x2-l)*ynum-heighty); if(mcban.length>totalpicnum){ break; } } x1--; x2--; x3++; ii++; if(x1<1){ break; } } }; init(); trace(mcban); function imgLoad(url:String) { var req:URLRequest = new URLRequest(path+url); var ldr:Loader=new Loader(); ldr.load(req); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler); } var aa:int = 0 function completeHandler(evt:Event):void{ var temp:Loader=Loader(evt.target.loader); sp.addChild(temp) temp.x= mcx[aa]; temp.y= mcy[aa]; // 아래 1.2~1.4가 가장 안정적임- 비율이 120%에서 100%로 탄력적으로 줄어들게 하는 것을 뜻함 // scaleX 대신에 alpah, x, width, height 등을 써러 다양한 움직임을 줄 수 있다. // Bounce.easeOut, Elastic.easeOut, Strong.easeOut,Regular.easeInOut,Back.easeInOut //var myTweenx:Tween = new Tween(temp, "scaleX", Elastic.easeOut, 1.4, 1, 1, true); //var myTweeny:Tween = new Tween(temp, "scaleY", Elastic.easeOut, 1.4, 1, 1, true); var myTweenx:Tween = new Tween(temp, "scaleX", Strong.easeOut, 2, 1, 1, true); var myTweeny:Tween = new Tween(temp, "scaleY", Strong.easeOut, 2, 1, 1, true); //var tweenA : Tween = new Tween (temp, "alpha", Bounce.easeOut, 0, 1, 3, true); temp.alpha=1; // 아래 구문 추가로 스케일를 300% 100%로 해도 중간에 멈춰서 에러가 나는 부분 깔끔하게 해결 myTweenx.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish); myTweeny.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish); //myTweeny.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish); function onMotionFinish(e:TweenEvent):void { if(temp.scaleX>0.6 || temp.scaleY>0.6){ temp.scaleX=1; temp.scaleY=1; } // temp.alpha=0.7; // temp.rotation=aa; } mcx.splice(aa,1); mcy.splice(aa,1); mcban.splice(aa,1); } // 액션 2.0에서 주로 사용했던 onEnterframe을 timer를 이용하여 해결한 구문.. var timer:Timer=new Timer(500); timer.addEventListener(TimerEvent.TIMER,auto); function auto(e:TimerEvent):void{ //난수를 발생하여 사진이 나오도록 하는 구문 aa=Math.floor(Math.random()*mcx.length); //trace(mcban[aa]); imgLoad(mcban[aa]); if (mcx.length==1){ timer.stop(); }; }; timer.start(); // 여기까지 복사하여 붙이기 그리고 곰캠을 전체화면 캡쳐로 한 상태에서 CTRL-ENTER하면 영상이 돌아가고 영상캡쳐가 가능하다. 이 자료를 프리미어로 불러서 배경음악을 넣어서 완성하면 된다.