목차

1. 개요
2. 한국어 번역본

1. 개요

lua.txt는 Aviutl2 내에서 루아스크립트에 사용할 수 있는 내장 함수 및 변수를 설명하는 문서입니다. 아래 내용은 DeepL을 이용해 전문을 번역한 내용입니다. 추후 위키 문법으로 정리 및 재작성 될 예정입니다.

2. 한국어 번역본

- Lua 스크립트에 대해 - 스크립트 제어,스크립트 파일(*.anm2,*.obj2,*.cam2,*.scn2,*.tra2), 텍스트의 스크립트 제어 문자로 사용 가능한 스크립트에는 Lua 언어가 사용 가능합니다. 또한 일부 변수와 함수가 확장되었습니다. ※ 기존 스크립트 파일(*.anm,*.obj,*.cam,*.scn,*.tra)도 사용할 수 있지만, 일부 기능은 지원되지 않습니다. - 주의 사항 - ○ 스크립트의 문자 코드는 UTF-8입니다. ※ 기존 스크립트 파일은 SJIS입니다. ○ 스크립트의 저장 위치는 ProgramData\aviutl2\Script\ 폴더(및 그 아래 폴더)입니다. ○ 스크립트에서 다른 스크립트를 호출할 경우 정상적으로 작동하지 않을 수 있습니다. ○ “캐시 삭제” 작업을 수행하면 스크립트(셰이더 포함)가 재로드되지만,설정 항목의 변경 사항은 반영되지 않습니다. ○ 구 스크립트 파일 형식의 픽셀 출력 관련 함수는 지원되지 않습니다. ※ 대신 셰이더를 사용할 수 있습니다. - 설정 항목 - 스크립트 파일의 맨 위에 다음과 같이 지정하면 설정 항목을 추가할 수 있습니다. ○ 트랙바 항목 정의 스크립트 파일의 맨 위에 ‘--track@변수명:항목명,최소값,최대값,기본값,이동 단위’ 처럼 지정하면 트랙바가 활성화됩니다. 이동 단위는 ‘1’,‘0.1’,‘0.01’,‘0.001’ 또는 생략이 가능합니다. ※ 구 스크립트 파일 형식의 '--track0:항목명,최소값,최대값,기본값,이동 단위'도 사용할 수 있습니다. --track@vx:X 속도,-10,10,0 obj.ox = obj.ox + vx * obj.time ○ 체크박스 항목을 정의 스크립트 파일의 맨 위에 '--check@변수명:항목명,기본값(0 또는 1)'과 같이 지정하면 체크박스가 활성화됩니다. ※ 구 스크립트 파일 형식의 '--check0:항목명,기본값(0 또는 1)'도 사용할 수 있습니다. --check@grav:중력,0 if( grav ) then ○색상 설정 항목 정의 스크립트 파일의 맨 위에 ‘--color@변수명:항목명,기본값’ 형식으로 지정하면 색상 설정 항목이 활성화됩니다. 기본값에 nil을 지정하면 투명색을 선택할 수 있게 됩니다. ※ 기존 스크립트 파일 형식의 '--color:기본값'도 사용할 수 있습니다. --color@col:도형 색상,0xffffff obj.load(“figure”,“四角形”,col,100) -- 번역 노트: 四角形은 사각형입니다. ○파일 선택 항목을 정의 스크립트 파일의 맨 위에 ‘--file@변수명:항목명’ 형식으로 지정하면 파일 선택 항목이 활성화됩니다. ※ 구 스크립트 파일 형식의 '--file:'도 사용할 수 있습니다. --file@path:이미지 파일 obj.load(“image”,path) ○ 폰트 설정 항목을 정의 스크립트 파일의 맨 위에 '--font@변수명:항목명,기본값'과 같이 지정하면 폰트 설정 항목이 활성화됩니다. --font@font:폰트 이름,MS UI Gothic obj.setfont(font,50,deco,col1,col2) ○ 도형 설정 항목을 정의 스크립트 파일의 맨 위에 '--figure@변수명:항목명,기본값'과 같이 지정하면 도형 설정 항목이 활성화됩니다. --figure@fig:끝부분 모양,三角形 -- 번역 노트: 三角形은 삼각형입니다. obj.load(“figure”,fig,col,100) ○ 목록 선택 항목을 정의 스크립트 파일의 맨 위에 '--select@변수명:항목명=기본값,선택지=값,선택지=값,선택지=값'과 같이 지정하면 목록 선택 항목이 활성화됩니다. 기본값은 생략 가능합니다. --select@deco:장식 유형,標準文字=0,影付き文字=1,影付き文字(薄)=2,縁取り文字=3,縁取り文字(細)=4,縁取り文字(太)=5,縁取り文字(角)=6 -- 번역 노트: 미번역된 글자는 다음과 같습니다. 표준 문자=0,그림자 문자=1,그림자 문자(얇음)=2,테두리 문자=3,테두리 문자(얇음)=4,테두리 문자(굵음)=5,테두리 문자(각진)=6 obj.setfont(font,obj.track2,deco,col1,col2) ○변수 항목 정의 스크립트 파일의 맨 위에 ‘--value@변수명:항목명,기본값’ 형식으로 지정하면 변수 항목이 활성화됩니다. 변수 항목은 텍스트 입력 항목으로,숫자,문자열,배열을 정의할 수 있습니다. ※기본값의 내용에 따라 유형이 변경됩니다. --value@num:숫자,0 --value@text:문자열,“0” --value@table:배열,{0,0,0} ○ 객체 추가 메뉴의 레이블 정의 스크립트 파일의 맨 위에 '--label:레이블 이름'과 같이 지정하면 객체 추가 메뉴의 계층 레이블의 초기값을 설정할 수 있습니다. --label:가공 ○스크립트 유형 지정 스크립트 파일의 맨 위에 '--script:유형'과 같이 지정하면 스크립트 유형(luaJIT,lua)을 지정할 수 있습니다. 지정하지 않은 경우 luaJIT가 됩니다. ※구 스크립트 파일에서는 lua가 됩니다 --script:lua ○ 스크립트 정보를 지정 스크립트 파일의 맨 위에 '--information:라벨명'과 같이 지정하면 스크립트 정보를 설정할 수 있습니다. --information:테스트 스크립트 ver2.00 by Kenkun ○픽셀 셰이더 정의 스크립트 파일의 맨 위에 '--[[pixelshader@등록명:'과 같은 다중 행 주석에 픽셀 셰이더를 HLSL로 작성할 수 있습니다. ※등록명이 엔트리 포인트가 됩니다. --[[pixelshader@psmain: float4 psmain(float4 pos :SV_Position) :SV_Target { ... } ]] ○ 컴퓨트 셰이더 정의 스크립트 파일의 맨 위에 '--[[computeshader@등록명:'과 같은 다중 행 주석에 HLSL로 컴퓨트 셰이더를 작성할 수 있습니다. ※ 등록명이 엔트리 포인트가 됩니다. --[[computeshader@csmain: [numthreads(1,1,1)] void csmain(uint2 id :SV_DispatchThreadID) { ... } ]] ※구 스크립트 파일 형식의 --dialog,--param도 사용할 수 있습니다. 각 설정 항목이 생성됩니다. - 변수 - 대상 객체의 정보가 다음 변수에 저장됩니다. obj.ox : 기준 좌표로부터의 상대 좌표 X obj.oy : 기준 좌표로부터의 상대 좌표 Y obj.oz : 기준 좌표로부터의 상대 좌표 Z obj.rx : X축 회전 각도(360.0으로 한 바퀴 회전) obj.ry : Y축 회전 각도(360.0으로 한 바퀴) obj.rz : Z축 회전 각도(360.0으로 한 바퀴) obj.cx : 중심의 상대 좌표 X obj.cy : 중심의 상대 좌표 Y obj.cz : 중심의 상대 좌표 Z obj.zoom : 확대율(1.0=원본 크기) obj.alpha : 투명도(0.0~1.0/0.0=투명/1.0=불투명) obj.aspect : 종횡비(-1.0~1.0/플러스=가로 축소/마이너스 세로 축소) obj.x : 표시 기준 좌표 X (읽기 전용) obj.y : 표시 기준 좌표 Y (읽기 전용) obj.z : 표시 기준 좌표 Z (읽기 전용) obj.w : 이미지 크기 W (읽기 전용) obj.h : 이미지 크기 H (읽기 전용) obj.screen_w : 화면 크기 W (읽기 전용) obj.screen_h : 화면 크기 H (읽기 전용) obj.framerate : 프레임 속도 (읽기 전용) obj.frame : 객체 기준 현재 프레임 번호 (읽기 전용) obj.time : 객체 기준 현재 시간(초) (읽기 전용) obj.totalframe : 객체의 총 프레임 수 (읽기 전용) obj.totaltime : 객체의 총 시간(초) (읽기 전용) obj.layer : 객체가 배치된 레이어 (읽기 전용) obj.index : 다중 객체 시의 번호 (읽기 전용) ※ 개별 객체용 obj.num : 다중 객체 시의 수(1=단일 객체/0=미정) (읽기 전용) ※개별 객체용 - 함수 - 스크립트에는 다음과 같은 함수가 추가되었습니다. ○obj.mes(text) 텍스트 객체 내에 지정된 텍스트를 추가합니다. 텍스트 객체의 텍스트 내에만 사용할 수 있습니다. ※obj.를 생략하고 mes()만으로도 사용할 수 있습니다. text :표시할 텍스트를 지정합니다. 예:obj.mes(“이 텍스트가 삽입되어 표시됩니다”) ○obj.effect([name,param1,value1,param2,value2,...]) 지정된 필터 효과를 실행합니다. 미디어 객체에서만 사용할 수 있습니다. 인수를 지정하지 않고 호출하면 스크립트 이후의 필터 효과를 실행합니다. name : 효과의 이름을 지정합니다. param1 : 효과의 파라미터 이름을 지정합니다. value1 : 효과의 파라미터 값을 지정합니다. param?,value?의 조합은 필요한 만큼 지정할 수 있습니다. ※ 트랙바,체크박스 이외의 설정의 param,value는 에일리언스 파일 등에서 출력될 때의 이름이나 값이 됩니다. ※ 구 스크립트 파일의 파라미터는 “effect.conf”의 정의를 참조하여 대체합니다. 부족한 정의는 적절히 추가합니다. 예:obj.effect(“색조 보정”,‘밝기’,150,“색상”,180) ○obj.draw([ox,oy,oz,zoom,alpha,rx,ry,rz]) 현재의 오브젝트를 렌더링합니다. 일반적으로 아무것도 하지 않아도 마지막에 렌더링되지만,obj.draw()를 사용하면 오브젝트를 여러 번 렌더링할 수 있습니다. ※obj.draw()를 사용할 경우 스크립트 이후의 필터 효과는 실행되지 않습니다. ※obj.effect()를 인수로 지정하지 않고 호출하면 스크립트 이후의 필터 효과를 미리 실행할 수 있습니다. ox : 상대 좌표 X oy : 상대 좌표 Y oz : 상대 좌표 Z zoom : 확대율(1.0=원본 크기) alpha : 투명도(0.0=투명/1.0=불투명) rx : X축 회전 각도(360.0으로 한 바퀴) ry : Y축 회전 각도(360.0으로 한 바퀴) rz : Z축 회전 각도(360.0으로 한 바퀴) 예:obj.draw(2,10,0) ○obj.drawpoly(x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3[,u0,v0,u1,v1,u2,v2,u3,v3,alpha]) 현재 오브젝트의 임의 부분을 임의의 사각형으로 그립니다. ※내각이 모두 180도 이하인 평면이 아닌 경우 정확히 그려지지 않습니다. ※정점 0부터 3이 시계 방향으로 되는 면이 표면이 됩니다. ※obj.drawpoly()를 사용할 경우 스크립트 이후의 필터 효과는 실행되지 않습니다. x0,y0,z0 : 사각형의 정점 0의 좌표 x1,y1,z1 : 사각형의 정점 1의 좌표 x2,y2,z2 : 사각형의 정점 2의 좌표 x3,y3,z3 : 사각형의 정점 3의 좌표 u0,v0 : 정점 0에 해당하는 객체의 이미지 좌표 u1,v1 : 정점 1에 해당하는 객체의 이미지 좌표 u2,v2 : 정점 2에 해당하는 객체의 이미지 좌표 u3,v3 : 정점 3에 해당하는 객체의 이미지 좌표 예:obj.drawpoly(-50,-50,0,50,-50,0,50,50,0,-50,50,0,0,0,obj.w,0,obj.w,obj.h,0,obj.h) ○obj.drawpoly({table}[,alpha]) obj.drawpoly()의 인수를 테이블로 지정할 수 있습니다. obj.drawpoly()를 여러 번 호출하는 것보다 렌더링 속도가 더 빠릅니다. 테이블 형식은 다음과 같습니다. {x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,u0,v0,u1,v1,u2,v2,u3,v3} {x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,u0,v0,u1,v1,u2,v2,u3,v3,vx0,vy0,vz0,vx1,vy1,vz1,vx2,vy2,vz2,vx3,vy3,vz3} {x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,r0,g0,b0,a0,r1,g1,b1,a1,r2,g2,b2,a2,r3,g3,b3,a3} {x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,r0,g0,b0,a0,r1,g1,b1,a1,r2,g2,b2,a2,r3,g3,b3,a3,vx0,vy0,vz0,vx1,vy1,vz1,vx2,vy2,vz2,vx3,vy3,vz3} ※vx,vy,vz는 법선 벡터 ※r,g,b,a는 렌더링 색상(0.0~1.0의 곱셈된 알파) ※오브젝트의 이미지는 사용되지 않습니다 예:table.insert(vertex,{x0,y0,0,x1,y1,0,x2,y2,0,x3,y3,0,u0,v0,u1,v1,u2,v2,u3,v3}) table.insert(vertex,{x0,y0,100,x1,y1,100,x2,y2,100,x3,y3,100,u0,v0,u1,v1,u2,v2,u3,v3}) obj.drawpoly(vertex) ○obj.load([type],...) 현재 객체의 이미지를 로드합니다. type을 생략하면 자동으로 판단합니다. ※ 로드된 이미지는 삭제됩니다. ◇ 동영상 파일 obj.load(“movie”,file[,time]) 동영상 파일에서 지정된 시간의 이미지를 로드합니다. file : 동영상 파일 이름 time : 표시할 이미지 시간(초)(생략 시 객체의 현재 시간) 반환 값 : 동영상 총 시간(초) 예:obj.load(“movie”,“c:\\test.avi”) ◇이미지 파일 obj.load(“image”,file) 이미지 파일을 로드합니다. file : 이미지 파일 이름 예:obj.load(“image”,“c:\\test.bmp”) ◇텍스트 obj.load(“text”,text[,speed,time]) 텍스트를 로드합니다. 색상과 크기,폰트 제어 문자를 사용할 수 있습니다. speed,time을 설정하면 표시할 문자 수를 변경할 수 있습니다. ※텍스트 객체에는 사용할 수 없습니다. text : 로드할 텍스트 speed : time 매개변수의 1초당 표시할 문자 수 time : speed 매개변수에 대한 경과 시간 예:obj.load(“text”,“이 텍스트가 이미지 파일로 로드됩니다”) ◇도형 도형을 로드합니다. obj.load(“figure”,name[,color,size,line,round]) name : 도형 이름,SVG 파일 이름 color : 색상(0x000000~0xffffff) size : 도형의 크기 line : 도형의 선 너비 round : 모서리를 둥글게 할까요?( true=예 / false<기본값>=아니오 ) 예:obj.load(“figure”,“円”,0xffffff,100,true) -- 번역 노트: 円은 원입니다. ◇프레임 버퍼 프레임 버퍼에서 로드합니다. load(“framebuffer”[,x,y,w,h][,alpha]) x,y,w,h :프레임 버퍼에서 가져올 범위(생략 시 전체) alpha :알파 채널 유지( true=유지 / false<기본값>=유지하지 않음 ) ◇가상 버퍼 가상 버퍼에서 읽어들입니다. ※가상 버퍼는 obj.copybuffer(),obj.setoption()으로 생성할 수 있습니다. load(“tempbuffer”[,x,y,w,h]) x,y,w,h :가상 버퍼에서 가져올 범위(생략 시 전체) ◇레이어상의 객체 지정된 레이어상의 객체를 읽습니다. obj.load(“layer”,no[,effect]) no :레이어 번호(1부터) effect :추가 효과 실행(true=실행 / false<기본값>=실행하지 않음) ◇ 직전 객체 직전 객체를 읽어들입니다. obj.load(“before”); 커스텀 객체에서 다른 객체를 읽어들일 때만 사용할 수 있습니다. ○obj.setfont(name,size[,type,col1,col2]) obj.load()의 텍스트에 사용할 폰트를 지정합니다. ※스크립트 호출 시마다 지정해야 합니다. name : 폰트 이름 size : 폰트 크기 type : 문자 장식(0~6) 0=표준 문자 / 1=그림자 문자 / 2=그림자 문자(얇음) 3=테두리 문자 / 4=테두리 문자(얇음) / 5=테두리 문자(굵음) / 6=테두리 문자(각진) col1 : 문자 색상(0x000000~0xffffff) col2 : 그림자/테두리 색상 (0x000000~0xffffff) ○obj.rand(st_num,ed_num[,seed,frame]) 랜덤 숫자를 생성합니다. 일반적인 랜덤 숫자와 달리 동일한 시간의 프레임에서 항상 동일한 값이 나오도록 랜덤 숫자를 생성합니다. ※obj.를 생략하고 rand()만으로도 사용할 수 있습니다. st_num : 랜덤 숫자의 최소값 ed_num : 난수의 최대값 seed : 난수의 시드(생략 시 객체마다 다른 난수가 생성됩니다 양수 값을 지정하면 시드가 같아도 객체마다 다른 난수가 생성되며 음수 값을 지정하면 시드가 같다면 모든 객체에서 동일한 난수가 생성됩니다) frame : 프레임 번호(생략 시 현재 프레임이 사용됩니다) 예:obj.rand(10,20) ○obj.setoption(name,value) 현재 객체의 다양한 옵션을 설정합니다. ※스크립트 호출 시마다 지정해야 합니다. name : 옵션 이름 value : 옵션 값 ◇뒷면을 표시하지 않음 obj.setoption(“culling”,value) value :0=표시 / 1=비표시 ◇카메라 방향을 향함 obj.setoption(“billboard”,value) value : 0=향하지 않음 / 1=수평 방향만 / 2=수직 방향만 / 3=향함 ◇합성 모드 obj.setoption(“blend”,value[,option]) value : “none”=일반 “add”=덧셈 “sub”=뺄셈 “mul”=곱셈 “screen”=스크린 “overlay”=오버레이 “light”=비교(밝기) “dark”=비교(어두움) “brightness”=휘도 “chroma”=색차 “shadow”=음영 “light_dark”=명암 “diff”=색차 이하의 합성 모드는 가상 버퍼 전용입니다. “alpha_add”=색 정보는 가중 평균을 적용하고 알파 값은 합산합니다 “alpha_max”=색 정보는 가중 평균을 적용하고 알파 값은 큰 쪽을 채택합니다 “alpha_sub”=색 정보는 변경 없이 알파 값을 감산합니다 “alpha_add2”=색 정보는 중첩하고 알파 값은 합산합니다 ※구 스크립트 파일 형식의 수치 지정도 사용할 수 있습니다. ※합성 모드를 사용하면 렌더링 처리가 느려집니다. ◇렌더링 대상을 가상 버퍼로 변경하기 obj.setoption(“drawtarget”,“tempbuffer”[,w,h]) w,h :가상 버퍼의 크기(생략 시 초기화하지 않습니다) 그리기 대상을 가상 버퍼로 설정하면 obj.draw(),obj.drawpoly()에서의 그리기가 가상 버퍼에 대해 수행됩니다. 이 경우 객체가 가진 좌표 등의 설정은 반영되지 않고 인수의 좌표 그대로 그리게 됩니다. 크기를 지정하면 가상 버퍼를 투명색으로 초기화합니다. 가상 버퍼는 모든 객체에서 공용으로 사용됩니다. ◇ 그리기 대상을 프레임 버퍼로 변경하기 obj.setoption(“drawtarget”,“framebuffer”) obj.draw(),obj.drawpoly()의 그리기 대상을 프레임 버퍼로 설정합니다. 프레임 버퍼에 대해 draw() 등으로 그리기를 수행하지 않은 경우 setoption()으로 변경하지 않아도 스크립트 종료 후에는 자동으로 프레임 버퍼에 대한 그리기가 이루어집니다. ◇스크립트 내에서 프레임 버퍼에 렌더링되었는지 여부를 변경합니다 obj.setoption(“draw_state”,flag) flag : true=렌더링 완료 / false=미렌더링 ◇오브젝트의 포커스 프레임 모드 obj.setoption(“focus_mode”,value) value : “fixed_size”=크기 고정 프레임으로 설정 ◇카메라의 파라미터 설정 카메라의 다양한 파라미터를 설정합니다. 카메라가 편집 모드일 때는 적용되지 않습니다. ※카메라 효과만 사용 가능 obj.setoption(“camera_param”,cam) cam : 카메라 파라미터(테이블) .x : 카메라의 X 좌표 .y : 카메라의 Y 좌표 .z : 카메라의 Z 좌표 .tx : 카메라의 목표 X 좌표 .ty : 카메라의 목표 Y 좌표 .tz : 카메라의 목표 Z 좌표 .rz : 카메라의 기울기 .ux : 카메라의 상향 단위 벡터 X .uy : 카메라의 상향 단위 벡터 Y .uz : 카메라의 상향 단위 벡터 Z .d : 카메라에서 스크린까지의 거리(초점 거리) 예:cam = obj.getoption(“camera_param”); ◇샘플러 모드 obj.draw(),obj.drawpoly() 그리기 시 샘플러를 변경합니다 obj.setoption(“sampler”,value) value : “clip” = 영역 외부는 투명색 “clamp” = 영역 외부는 가장 바깥쪽 색상 “loop” = 영역 외부는 루프 ○obj.getoption(name,...) 현재 객체의 다양한 옵션을 가져옵니다. name : 옵션 이름 ◇트랙 바 이동 모드 obj.getoption(“track_mode”,value) value : 트랙 바 번호 또는 변수 이름 반환 값 : 이동 없음=0 이동 없음 이외의 경우 이동 모드 이름을 반환 ◇객체의 구간 수 obj.getoption(“section_num”) 반환 값 : 구간 수(중간점 수 + 1) ◇스크립트 이름 가져오기 obj.getoption(“script_name”[,value][,skip]) value : 필터 효과의 상하 상대 위치(0은 자신/마이너스는 위/플러스는 아래) skip : 비활성화된 필터 효과를 건너뛸지 여부(true=건너뛴다 / false<기본값>=건너뛰지 않는다) 반환 값 : 스크립트 이름(대상물이 스크립트가 아니면 빈 텍스트) 예:if obj.getoption(“script_name”) == obj.getoption(“script_name”,-1) then ◇GUI 표시 상태 확인 obj.getoption(“gui”) 반환 값 : true=표시 / false=비표시 ※동영상 출력 중에는 비표시 상태가 됩니다. ◇카메라 제어 상태 획득 obj.getoption(“camera_mode”) 반환 값 : 0=카메라 제어 대상 외 / 0 이외=카메라 제어 대상 ◇카메라의 파라미터를 가져옵니다 obj.getoption(“camera_param”) 반환 값 : 카메라의 파라미터(테이블) ※테이블의 내용은 obj.setoption(“camera_param”)과 동일합니다. 예:cam = obj.getoption(“camera_param”); ◇개별 오브젝트가 활성화되었는지 확인합니다 obj.getoption(“multi_object”) 반환 값 : true=유효 / false=무효 ○obj.getvalue(target[,time,section]) 현재 오브젝트의 설정 값을 가져옵니다. target : 설정 유형 0=트랙바 0의 값 1=트랙바 1의 값 2=트랙바 2의 값 3=트랙바 3의 값 “x”=기준 좌표 X “y”=기준 좌표 Y “z”=기준 좌표 Z “rx”=기준 X축 회전 각도 “ry”=기준 Y축 회전 각도 “rz”=기준 Z축 회전 각도 “zoom”=기준 확대율 (100=원본 크기) ※obj.zoom(1.0=원본 크기)와 다르므로 주의 “alpha”=기준 투명도(0.0~1.0/0.0=투명/1.0=불투명) “aspect”=기준 종횡비(-1.0~1.0/플러스=가로 축소/마이너스 세로 축소) “time”=객체 기준 시간 “layer7.x”=레이어 7의 객체 기준 좌표 X ※layer[레이어 번호].[설정 유형]로 다른 레이어의 객체 값을 얻을 수 있습니다 “scenechange”=씬 변경 시 표시 비율(0.0~1.0) 씬 변경 시에만 사용 가능 ※사용 방법은 장면 변경 스크립트 예시를 참조하세요 time : 어떤 시점의 값을 가져올지 시간(초)(생략 시 현재 시간) section : 시간의 기준이 되는 구간 번호(생략 시 시작점) 0=시작점 / 1=첫 번째 중간점 / 2=두 번째 중간점 / -1=종료점 ○obj.setanchor(name,num[,option,..]) 앵커 포인트를 표시합니다. 이 함수를 호출할 때 앵커 포인트의 표시 설정과 앵커가 이동한 경우 변수에 반영합니다. 호출 순서나 횟수를 변경하면 정상적으로 반영되지 않을 수 있습니다. name :--value,--dialog 배열에서 정의된 좌표를 저장하는 변수 이름을 지정합니다. ※변수 이름을 문자열로 지정 “track”을 지정하면 --track0부터 지정된 트랙 바의 시작점,종료점,중간점의 값을 참조합니다. ※직접 테이블 변수 이름을 지정하면 앵커 표시나 이동 없이 선만 표시합니다. num :앵커 포인트의 수를 지정합니다. name=“track”인 경우 0을 지정하십시오. 앵커 포인트 수는 시작,종료,중간점의 수입니다. option :다양한 옵션을 열거할 수 있습니다. “line”=앵커 포인트를 선으로 연결합니다. “loop”=앵커 포인트를 선으로 연결하여 한 바퀴 돌립니다. “star”=앵커 포인트를 객체의 중심과 각각 선으로 연결합니다. “arm”=앵커 포인트와 객체의 중심을 선으로 연결합니다. “color”=위 옵션의 선 색상을 변경합니다. 후속 인수로 색상(0x000000~0xffffff)을 지정합니다. “inout”=위 옵션의 선 표시를 IN,OUT 측의 2개로 표시합니다. (앵커 수는 반반이 됩니다) “xyz”=앵커 포인트를 3D 좌표로 제어합니다. ※기본값은 2D 좌표 ※카메라 제어 + 그림자 사용 시 미리보기에서 그림자 부분이 약간 어긋날 수 있습니다. 반환 값 :획득한 앵커 포인트의 수 예:obj.setanchor(“pos”,3) n = obj.setanchor(“track”,0,“line”) ○obj.getpixel(x,y[,type]) 현재 객체의 픽셀 정보를 가져옵니다. 인수를 지정하지 않고 호출하면 객체의 픽셀 수를 가져올 수 있습니다. x,y :가져올 픽셀의 좌표 type :픽셀 정보의 유형(“col”,“rgb”) ※ 생략 시 obj.pixeloption(“type”)에서 지정한 유형(일반적으로 “col”) 반환 값 :유형이 “col”인 경우 색상 정보(0x000000~0xffffff)와 불투명도(0.0=투명/1.0=불투명) col,a = obj.getpixel(0,0,“col”) 유형이 “rgb”인 경우 각 8비트(0~255)의 RGBA 정보 r,g,b,a = obj.getpixel(0,0,“rgb”) 유형이 “yc”인 경우 YCbCr 옛 내부 형식 y,cb,cr,a = obj.getpixel(0,0,“yc”) 인수 없음 가로,세로 픽셀 수 w,h = obj.getpixel() ○obj.pixeloption(name,value) obj.getpixel()의 처리 옵션을 설정합니다. ※스크립트 호출 시마다 지정해야 합니다. name :옵션 이름 value :옵션 값 ◇픽셀 정보 유형 지정 obj.pixeloption(“type”,value) value :“col” / ‘rgb’ / “yc” ◇픽셀 정보 읽기 위치 지정 obj.pixeloption(“get”,value) value :“object”=오브젝트 / “framebuffer”=프레임 버퍼 ○obj.getaudio(buf,file,type,size) 음성 파일에서 오디오 데이터를 가져옵니다. 객체의 시간을 기준으로 한 위치의 데이터를 가져옵니다. buf :데이터를 받을 테이블을 지정합니다. ※nil을 지정하면 제3 반환 값으로 테이블을 반환합니다. file :음성 파일 이름(“audiobuffer”를 지정하면 편집 중인 음성 데이터를 얻을 수 있습니다) type :획득할 데이터의 유형 “pcm”=PCM 샘플링 데이터(16비트 모노럴 스케일 기준) “spectrum”=주파수별 음량 데이터 “fourier”=음성을 이산 푸리에 변환한 데이터(size 지정은 필요 없음) ※원 주파수의 1/2048~1/2까지 1/2048 간격의 1024개 데이터가 됩니다 size :획득할 데이터 수(지정된 값보다 적을 수 있습니다) 반환 값 :획득한 데이터 수,샘플링 레이트 예:n = obj.getaudio(buf,“audiobuffer”,“spectrum”,32) n,rate = obj.getaudio(buf,“c:\\test.wav”,“pcm”,1000) n,rate,buf = obj.getaudio(nil,“c:\\test.wav”,“pcm”,1000) ○obj.copybuffer(dst,src) 이미지 버퍼를 복사합니다. ※복사 대상 이미지 버퍼의 크기는 복사 원본의 크기로 변경됩니다. dst :복사 대상 버퍼 “tempbuffer”=가상 버퍼 “object”=객체 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) “framebuffer”=프레임 버퍼(복사 원본이 동일한 크기의 객체,가상 버퍼,캐시 버퍼만 지원) src :복사 원본 버퍼 “framebuffer”=프레임 버퍼 “object”=객체 “tempbuffer”=가상 버퍼 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) “image:xxxx”=이미지 파일(xxxx는 스크립트 폴더로부터의 상대 경로 이미지 파일 이름) 반환 값 :true=성공 / false=실패 캐시 버퍼의 이름은 모든 객체에서 공통으로 사용됩니다. 캐시 버퍼는 1프레임의 렌더링마다 삭제됩니다. ○obj.clearbuffer(target[,color]) 이미지 버퍼를 지웁니다. target :지울 버퍼 이름 “object”=오브젝트 “tempbuffer”=가상 버퍼 “framebuffer”=프레임 버퍼 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) color :색상(0x000000~0xffffff) ※지정하지 않으면 투명색 ○pixelshader(name,target,{resource,...}[,{constant,...},blend]) 픽셀 셰이더를 실행합니다. name :셰이더의 등록명 ※등록한 셰이더 이름을 문자열로 지정합니다. target :출력 대상 버퍼 이름 Direct3D의 렌더 타겟에 설정됩니다. “object”=오브젝트 “tempbuffer”=가상 버퍼 “framebuffer”=프레임 버퍼 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) resource :참조할 버퍼 이름의 배열(1개인 경우 직접 버퍼 이름으로 지정 가능합니다) Direct3D의 셰이더 리소스(t0~)에 설정됩니다. ※ 렌더 타겟과 동일한 경우 복사하여 설정됩니다 “object”=객체 “tempbuffer”=가상 버퍼 “framebuffer”=프레임 버퍼 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) constant :참조할 상수 배열 Direct3D의 상수 버퍼(b0)에 float 배열로 설정됩니다. blend :출력 대상에 대한 블렌드 방법 Direct3D의 BlendState를 변경합니다. ※기본값은 “copy” “copy”=출력을 그대로 복사합니다 “mask”=알파 값만 곱합니다 ※RGB 값은 사용되지 않습니다 “draw”=출력을 알파 블렌드합니다 “add”=출력을 가산 합성합니다 ○computeshader(name,{target},{resource,...}[,{constant,...},countX,countY,countZ]) 컴퓨트 셰이더를 실행합니다. name :셰이더의 등록명 ※등록한 셰이더 이름을 문자열로 지정합니다. target :읽기/쓰기 대상 버퍼 이름의 배열 (1개인 경우 직접 버퍼 이름으로 지정 가능합니다) Direct3D의 UnorderedAccess 리소스(u0~)에 설정됩니다. “object”=오브젝트 “tempbuffer”=가상 버퍼 “framebuffer”=프레임 버퍼 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) resource :참조할 버퍼 이름의 배열(1개인 경우 직접 버퍼 이름으로 지정 가능합니다) Direct3D의 셰이더 리소스(t0~)에 설정됩니다. ※UnorderedAccess와 동일한 경우 복사하여 설정됩니다 “object”=오브젝트 “tempbuffer”=가상 버퍼 “framebuffer”=프레임 버퍼 “cache:xxxx”=캐시 버퍼(xxxx는 임의의 이름) constant :참조할 상수 배열 Direct3D의 상수 버퍼(b0)에 float 배열로 설정됩니다. countX :X축 스레드 그룹 수 ※지정하지 않은 경우 1 countY :Y축 스레드 그룹 수 ※지정하지 않은 경우 1 countZ :Z축 스레드 그룹 수 ※지정하지 않은 경우 1 ○obj.getpoint(target[,option]) 트랙바의 값을 가져옵니다. 트랙바 이동 스크립트에서만 사용할 수 있습니다. target :정수=각 구간에서의 트랙바 값 0=시작점 / 1=첫 번째 중간점 / 2=두 번째 중간점 / ... option을 사용하여 가져올 관련 트랙의 상대 위치를 지정할 수 있습니다. “index”=현재 구간에서의 위치를 가져옵니다. 시작점과 첫 번째 중간점 사이인 경우 0.5 등과 같은 소수로 표시됩니다. “num”=시작,종료,중간점의 총 수를 가져옵니다. “time”=현재 시간을 가져옵니다. option으로 시간을 가져올 구간을 지정할 수 있습니다. “accelerate”=가속도가 설정되어 있는지 확인합니다. 반환 값:true=활성화 / false=비활성화 “decelerate”=감속도가 설정되어 있는지 확인합니다. 반환 값:true=활성화 / false=비활성화 “param”=트랙 바의 설정 값을 가져옵니다. “link”=관련 트랙의 인덱스와 총 수를 가져옵니다. index,num = obj.getpoint(“link”) 관련 트랙은 좌표 등을 통해 다른 트랙의 값을 가져오기 위해 사용됩니다. X 좌표의 반환 값:0,3 / Y 좌표의 반환 값:1,3 / Z 좌표의 반환 값:2,3 “timecontrol” :시간 제어를 반영한 현재 값을 가져옵니다. option :획득할 값의 종류 “index” = 시간 제어를 반영한 구간에서의 위치를 획득 “time” = 시간 제어를 반영한 시간을 획득 “framerate” :프레임 레이트를 획득합니다. ○obj.getinfo(name,...) 다양한 환경 정보를 획득합니다. name :가져올 정보의 이름 ◇스크립트 폴더의 경로를 가져옵니다 obj.getinfo(“script_path”) 반환 값 :스크립트 폴더의 경로 ◇동영상 출력 중인지 확인합니다 obj.getinfo(“saving”) 반환 값 :true=출력 중 / false=출력 중이 아님 ◇최대 이미지 크기 가져오기 max_x,max_y = obj.getinfo(“image_max”) 반환 값 :최대 이미지 크기(너비,높이) ○obj.interpolation(time,x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3) 연속된 점 p0(x0,y0,z0),p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3)에서 시간 time(0~1)에 따른 p1과 p2 사이의 좌표를 계산합니다. ※ y,z 좌표는 생략할 수 있습니다. 예:x,y,z = obj.interpolation(time,x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3) x,y = obj.interpolation(time,x0,y0,x1,y1,x2,y2,x3,y3) ○RGB(r,g,b) 색상 정보(0x000000~0xffffff)와 빨강(0~255),녹색(0~255),파랑(0~255) 각 요소의 상호 변환을 수행합니다. r,g,b를 2개 지정하면 객체의 시간 경과에 따라 색상을 변경합니다. 예:col = RGB(r,g,b) r,g,b = RGB(col) col = RGB(r1,g1,b1,r2,g2,b2) ○HSV(h,s,v) 색상 정보(0x000000~0xffffff)와 색상(0~360),채도(0~100),명도(0~100) 각 요소의 상호 변환을 수행합니다. h,s,v를 2개 지정하면 객체의 시간 경과에 따라 색상을 변경합니다. 예:col = HSV(h,s,v) h,s,v = HSV(col) col = HSV(h1,s1,v1,h2,s2,v2) ○OR(a,b) / AND(a,b) / XOR(a,b) OR,AND,XOR의 비트 연산을 수행합니다. 예:c = OR(a,b) ○SHIFT(a,shift) 산술 시프트를 수행합니다. shift가 양수이면 왼쪽 시프트,음수이면 오른쪽 시프트가 됩니다. 예:b = SHIFT(a,1) ○rotation(x0,y0,x1,y1,x2,y2,x3,y3,zoom,r) 원점(0,0)을 중심으로 지정된 좌표를 확대/축소/회전합니다. x0,y0 :정점 0의 좌표 x1,y1 :정점 1의 좌표 x2,y2 :정점 2의 좌표 x3,y3 :정점 3의 좌표 zoom :확대율(1.0=원본 크기) r :회전 각도(360.0으로 한 바퀴) 예:x0,y0,x1,y1,x2,y2,x3,y3 = rotation(x0,y0,x1,y1,x2,y2,x3,y3,zoom,r); ○debug_print(text) 지정된 텍스트를 로그에 출력합니다. 디버깅용입니다. ※스크립트 실행 오류 메시지도 로그에 출력됩니다. ※로그 설정에서 OutputDebugString 등에 출력되도록 설정 변경이 가능합니다. text :디버깅 표시 문자 예 :debug_print(“디버깅 표시”) - 사용 예 - ○텍스트 내에서 스크립트를 사용하는 예 다음 텍스트에서 객체 시간의 타임 카운터가 표시됩니다. 현재 오브젝트의 시간=<?mes(string.format(“%02d:%02d.%02d”,obj.time/60,obj.time%60,(obj.time*100)%100))?> ○ 오브젝트의 좌표나 각도를 시간 경과에 따라 변경하는 예시 다음 스크립트에서 시간에 따라 오른쪽 방향으로 이동하며 오른쪽으로 회전합니다. obj.ox = obj.ox + obj.time*10 obj.rz = obj.rz + obj.time*360 ○ 객체에 필터 효과를 적용하는 예시 다음 스크립트에서 시간에 따라 밝아지거나 어두워집니다. i = math.cos(obj.time*math.pi*2)*50 obj.effect(“색조 보정”,“밝기”,100+i) -- 번역 노트: 色調補正은 색조 보정, 明るさ은 밝기입니다. ○ 객체를 여러 개 그리는 예시 다음 스크립트에서 객체를 원형으로 10개 그립니다. n = 10 l = obj.w*2 for i=0,n do r = 360*i/n x = math.sin(r*math.pi/180)*l y = -math.cos(r*math.pi/180)*l obj.draw(x,y,0,1,1,0,0,r) end ○애니메이션 효과,커스텀 오브젝트 등을 1개의 파일로 여러 개 등록하는 예시 스크립트 파일(*.anm2,*.obj2,*.scn2,*.cam2,*.tra2)의 파일 이름 앞부분을 '@'로 설정하고 각 스크립트의 앞부분에 ‘@이름’ 형식으로 정의하면 여러 개의 스크립트를 한 번에 정의할 수 있습니다. ※script.anm2,script.obj2 스크립트도 이 형식으로 되어 있습니다. ◇다중 등록 시 파일 내용 [@다중 등록 예시.anm] @sample1 --track0:속도,-10,10,10 obj.ox = obj.ox + obj.track0*obj.time @sample2 --track0:속도,-10,10,10 obj.oy = obj.oy + obj.track0*obj.time ◇단독 등록 시 파일 내용 [단독 등록 예시.anm] --track0:속도,-10,10,10 obj.ox = obj.ox + obj.track0*obj.time ○ 장면 변경 스크립트 예시 다음 스크립트로 시간에 따라 크로스 페이드됩니다. 장면 변경 스크립트에서는 프레임 버퍼에 장면 변경 후의 이미지 오브젝트에 장면 변경 전의 이미지가 저장되어 있으며,어느 쪽을 표시할지 비율을 obj.getvalue(“scenechange”)로 가져와 처리합니다. ※0이면 오브젝트,1이면 프레임 버퍼 측이 됩니다. a = 1-obj.getvalue(“scenechange”) obj.draw(0,0,0,1,a) ○앵커 포인트 표시와 좌표 획득 예시 다음 스크립트로 앵커 포인트 표시와 좌표 획득을 수행합니다. ◇변수 항목의 배열을 사용하는 경우 --value@pos:좌표,{} num = 3 obj.setanchor(“pos”,num,“loop”); for i=0,num-1 do x = pos[i*2+1] y = pos[i*2+2] end ※3D 좌표의 경우 XYZ 각 3개 좌표가 배열에 들어갑니다. ※pos={}는 초기값을 설정할 수도 있습니다. ◇트랙 바를 사용하는 경우 --track0:X,-1000,1000,0 --track1:Y,-1000,1000,0 --track2:Z,-1000,1000,0 num = obj.setanchor(“track”,0,‘xyz’,“line”); for i=0,num-1 do x = obj.getvalue(0,0,i) y = obj.getvalue(1,0,i) z = obj.getvalue(2,0,i) end ◇ obj.setanchor()를 여러 번 사용하는 경우 --value@pos1:좌표1,{} --value@pos2:좌표2,{} obj.setanchor(“pos1”,4,‘loop’,“color”,RGB(0,255,255)); obj.setanchor(“pos2”,2,‘line’,“color”,RGB(0,255,0)); ○트랙바 이동 스크립트 예시 다음 스크립트로 트랙바의 값을 시작점부터 종료점까지 일정한 속도로 이동시킵니다. 트랙바 이동 스크립트에서는 일반적인 객체 관련 변수나 함수를 사용할 수 없습니다. 스크립트 파일(*.tra2)의 시작 부분에 '--twopoint'와 같이 지정하면 중간점을 무시하는 설정으로 변경됩니다. '--speed:가속 초기값(0/1),감속 초기값(0/1)'처럼 지정하면 가감속 설정이 가능해집니다. '--param:초기값'처럼 지정하면 트랙바의 설정 값을 지정할 수 있게 됩니다. '--timecontrol'처럼 지정하면 트랙바의 시간 제어 편집이 가능해집니다. index,ratio = math.modf(obj.getpoint(“index”)) st = obj.getpoint(index); ed = obj.getpoint(index+1); return st + (ed-st)*ratio; ○픽셀 셰이더를 사용하는 예시 다음 스크립트로 오브젝트의 밝기를 조정할 수 있습니다. --track@bright:明るさ,-100,100,0,0.01 --[[pixelshader@psmain: cbuffer constant0 :register(b0) { float bright; }; float4 psmain(float4 pos :SV_Position) :SV_Target { return float4(bright,bright,bright,1); } ]] obj.pixelshader(“psmain”,‘object’,nil,{bright/100},“add”)