조합 효과 for YMM4 — 취급 설명서
버전: 2.2.0 / 지원 OS: Windows 10 / 11 (64bit) / 런타임: .NET 10.0
1. 개요
「조합 효과」는 YukkuriMovieMaker4(YMM4)에서 동작하는 영상 효과 플러그인입니다. 여러 개의 영상 효과를 하나의 「조합 효과」 아이템에 저장하고, 그룹화 · 프리셋 저장 · 불러오기를 통해 관리할 수 있습니다.
주요 특징은 다음과 같습니다.
- 여러 효과를 하나의 아이템에 모아 순서대로 적용
- 이름 있는 프리셋으로 저장 · 불러오기 · 공유
- 탭 단위로 여러 효과 구성을 관리하고 즉시 전환(추가 · 삭제 · 이름 변경 지원)
- 그룹 · 즐겨찾기 · 최근 사용 3종 가상 그룹으로 정리
- Git 유사 스냅샷 기록 및 분기 관리
- CRC32 검증 포함 원자적 쓰기와 SHA-256 해시 다중 이중화 영속화
- 프리셋 패키지 파일(.ceprstpkg)로 내보내기 · 가져오기
- 클립보드를 통한 복사 · 잘라내기 · 붙여넣기
- 정규 표현식 지원 다축 검색
- 8개 언어 UI (일본어 · 영어 · 중국어 간체 · 중국어 번체 · 한국어 · 스페인어 · 아라비아어 · 인도네시아어)
- 폭 400px 미만에서 모바일 레이아웃으로 자동 전환하는 반응형 UI
타임라인 레이블에는 「조합 효과 적용 중: 3개 [프리셋 이름]」처럼 현재 효과 수와 적용된 프리셋 이름이 표시되어 내용을 한눈에 파악할 수 있습니다.
AviUtl 출력(.exo)은 지원하지 않습니다.
2. 동작 요건
| 항목 | 요건 |
|---|---|
| OS | Windows 10 / 11 (64bit) |
| YukkuriMovieMaker4 | 최신 버전 권장 |
| 런타임 | .NET 10.0 |
| GPU | Direct2D 대응 GPU |
3. 설치 방법
- GitHub의 Releases 페이지에서 최신
.ymme파일을 다운로드합니다. - YMM4가 실행 중이 아닌지 확인합니다.
- 다운로드한
.ymme파일을 더블 클릭하여 설치합니다. - YMM4를 실행하고 타임라인의 아이템을 선택합니다.
- 영상 효과 추가에서 「조합 효과」를 선택합니다.
설치 후 속성 패널에 프리셋 관리 패널과 효과 목록이 표시됩니다.
4. 처음 사용 방법
- 타임라인에서 동영상 · 이미지 등의 영상 아이템을 선택합니다.
- 영상 효과 추가에서 「조합 효과」를 추가합니다.
- 속성 패널 하단의 「활성 효과」 섹션에 원하는 효과를 추가하고 설정합니다.
- 프리셋 관리 패널에서 「+ (추가)」 버튼을 클릭하고 이름을 입력하여 프리셋을 저장합니다.
- 다른 아이템에도 같은 구성을 적용하려면 프리셋을 선택하고 「✓ (적용)」 버튼을 클릭합니다.
5. 화면 구성
속성 패널에는 위에서 순서대로 다음 섹션이 표시됩니다.
5-1. 프리셋 관리 패널 (PresetManagerControl)
프리셋 관리의 주요 조작 영역입니다. 좌우 2열로 나뉩니다.
| 영역 | 설명 |
|---|---|
| 왼쪽 열 (그룹 목록) | 사용자 정의 그룹과 가상 그룹(전체 · 최근 사용 · 즐겨찾기)을 목록으로 표시합니다. 클릭으로 선택, 더블 클릭으로 이름 변경, 드래그 & 드롭으로 순서 변경(가상 그룹은 이동 불가)이 가능합니다. 하단의 + 버튼으로 그룹 추가, - 버튼으로 삭제할 수 있습니다. |
| 오른쪽 열 상단 (검색 바) | 키워드로 프리셋을 필터링합니다. 오른쪽 아이콘을 클릭하여 검색 대상을 변경할 수 있습니다. |
| 오른쪽 열 중앙 (프리셋 목록) | 선택된 그룹의 프리셋을 목록으로 표시합니다. 각 행에는 ★(즐겨찾기 토글) · 이름 · 효과 수 · 정보 아이콘(툴팁으로 효과 목록 표시)이 있습니다. 다중 선택(Ctrl 클릭 · Shift 클릭)이 가능합니다. |
| 오른쪽 열 하단 (조작 버튼) | 왼쪽부터 「추가(+)」「삭제(-)」「업데이트(↺)」「적용(✓)」 버튼이 나열됩니다. 마우스 오버 시 레이블이 확장되는 애니메이션이 있습니다. |
| 하단 크기 조절 핸들 | 드래그하여 패널 전체 높이를 변경할 수 있습니다. |
5-2. 그리드 분할선
두 열의 경계선을 드래그하여 그룹 열 너비를 조정할 수 있습니다. 조정 값은 다음 시작 시 복원됩니다.
5-3. 모바일 레이아웃 (폭 400px 미만)
컨트롤 폭이 400px 미만이 되면 그룹 목록이 숨겨지고 햄버거 메뉴 버튼(≡)이 표시됩니다. 이 버튼을 클릭하면 팝업으로 그룹 목록이 열립니다.
5-4. 효과 탭 관리 (EffectTabManagerControl)
「활성 효과」 위에 탭 바가 표시됩니다. 각 탭은 독립적인 효과 구성을 저장하며, 탭을 전환하면 선택된 탭의 내용이 즉시 반영됩니다.
- 오른쪽 + 버튼: 「탭 추가」
- 각 탭의 × 버튼: 「탭 삭제」(첫 탭 「새 탭」은 삭제 불가)
- 탭 이름 더블 클릭: 이름 변경(Enter 또는 포커스 이동으로 확정, Esc로 취소)
- 기본 탭 이름: 첫 번째는 「새 탭」, 이후는 「탭 2」「탭 3」...
5-5. 활성 효과 (VideoEffectSelector)
YMM4 표준 영상 효과 선택기에는 현재 선택된 탭의 효과가 표시됩니다. 여기서의 추가 · 삭제 · 순서 변경 · 활성화/비활성화 작업은 해당 탭에 저장됩니다.
6. 그룹 관리
프리셋은 그룹으로 분류하여 정리할 수 있습니다. 그룹에는 「실제 그룹」과 「가상 그룹」이 있습니다.
6-1. 그룹 추가
- 그룹 목록 하단의 「+」 버튼을 클릭합니다.
- 대화 상자에 그룹 이름을 입력하고 「OK」를 클릭합니다.
- 새 그룹이 목록에 추가되고 자동으로 선택됩니다.
6-2. 그룹 삭제
- 삭제할 그룹을 그룹 목록에서 선택합니다.
- 그룹 목록 하단의 「-」 버튼을 클릭합니다.
- 확인 대화 상자에서 「OK」를 클릭하면 그룹과 그 안의 모든 프리셋이 삭제됩니다.
주의: 「기본」 그룹과 가상 그룹(전체 · 최근 사용 · 즐겨찾기)은 삭제할 수 없습니다.
6-3. 그룹 이름 변경
다음 중 하나의 방법으로 이름을 변경할 수 있습니다.
- 그룹을 더블 클릭하여 대화 상자를 열고 새 이름을 입력합니다.
- 그룹을 오른쪽 클릭하여 컨텍스트 메뉴에서 「이름 바꾸기」를 선택합니다.
주의: 가상 그룹은 이름을 변경할 수 없습니다.
6-4. 그룹 순서 변경
실제 그룹을 드래그 & 드롭하여 순서를 변경할 수 있습니다. 가상 그룹은 항상 목록 상단에 고정되어 이동할 수 없습니다.
7. 프리셋 관리
7-1. 프리셋 추가 (저장)
- 「활성 효과」에 저장할 효과를 설정합니다.
- 저장 대상 그룹을 그룹 목록에서 선택합니다(가상 그룹 선택 시 첫 번째 실제 그룹에 저장됩니다).
- 오른쪽 열 하단의 「+ (추가)」 버튼을 클릭합니다.
- 대화 상자에 프리셋 이름을 입력하고 「OK」를 클릭합니다.
- 현재 효과 구성이 프리셋으로 저장되어 목록에 추가됩니다.
7-2. 프리셋 삭제
- 삭제할 프리셋을 목록에서 선택합니다(Ctrl 클릭 · Shift 클릭으로 다중 선택 가능).
- 「- (삭제)」 버튼을 클릭하거나 오른쪽 클릭하여 「삭제」를 선택합니다.
- 확인 대화 상자에서 「OK」를 클릭하면 삭제됩니다.
여러 프리셋을 선택한 상태에서 삭제하면 선택된 모든 프리셋이 일괄 삭제됩니다.
7-3. 프리셋 이름 변경
- 프리셋을 더블 클릭하여 대화 상자를 열고 새 이름을 입력합니다.
- 오른쪽 클릭하여 「이름 바꾸기」를 선택합니다.
7-4. 프리셋 비우기 (내용을 빈 상태로)
프리셋에 저장된 모든 효과를 삭제하여 빈 상태로 만듭니다. 프리셋 자체는 남습니다.
- 대상 프리셋을 오른쪽 클릭합니다.
- 컨텍스트 메뉴에서 「프리셋 비우기」를 선택합니다.
- 확인 대화 상자에서 「OK」를 클릭합니다.
7-5. 프리셋 순서 변경
프리셋 목록 내에서 드래그 & 드롭하여 순서를 변경할 수 있습니다. 가상 그룹(전체 · 즐겨찾기 · 최근 사용)을 표시 중일 때는 순서 변경이 불가합니다.
8. 가상 그룹
가상 그룹은 항상 그룹 목록 상단에 표시되는 특수 그룹입니다. 삭제 · 이름 변경 · 순서 변경은 불가합니다.
| 그룹 이름 | 내용 | 정렬 |
|---|---|---|
| 전체 | 모든 실제 그룹의 프리셋을 한데 모아 표시합니다. | 이름순 (오름차순) |
| 최근 사용 | 최근에 적용한 프리셋을 최대 10개 표시합니다. | 최근 적용 순 |
| 즐겨찾기 | ★ 등록된 프리셋을 표시합니다. | 이름순 (오름차순) |
가상 그룹을 선택한 상태에서 프리셋을 추가 · 붙여넣기하면 첫 번째 실제 그룹에 저장됩니다.
9. 프리셋 적용
9-1. 단일 프리셋 적용
- 적용할 프리셋을 목록에서 선택합니다.
- 「✓ (적용)」 버튼을 클릭하거나 오른쪽 클릭하여 「적용」을 선택합니다.
- 프리셋의 효과 구성이 타임라인의 아이템에 로드됩니다.
같은 프리셋을 중복 적용하는 경우: 현재 효과와 완전히 동일한 내용의 프리셋을 적용하려고 하면 확인 대화 상자가 표시됩니다. 「OK」를 클릭하면 현재 효과에 덧씌워(중첩) 적용됩니다. 「취소」로 중단합니다.
9-2. 여러 프리셋 동시 적용
- Ctrl 클릭 또는 Shift 클릭으로 여러 프리셋을 선택합니다.
- 「✓ (적용)」 버튼을 클릭합니다.
- 선택한 여러 프리셋의 효과가 순서대로 결합되어 적용됩니다.
다중 선택 시에는 중복 확인 대화 상자가 표시되지 않습니다. 또한 선택한 프리셋이 2개 이상인 경우 「최근 사용」 추가 및 프리셋 JSON 기록은 수행되지 않습니다.
9-3. 프리셋 적용 후 레이블 반영
단일 프리셋을 적용하면 타임라인 레이블이 「조합 효과 적용 중: 3개 [프리셋 이름]」처럼 업데이트됩니다. 효과를 수동으로 변경해도 적용된 프리셋 이름 표시는 유지됩니다.
10. 프리셋 업데이트
현재 효과 구성으로 선택 중인 프리셋을 덮어씁니다.
- 업데이트할 프리셋을 목록에서 선택합니다.
- 「활성 효과」의 효과를 변경합니다.
- 「↺ (업데이트)」 버튼이 활성화되어 있는지 확인합니다(효과에 변경이 있는 경우에만 활성화).
- 「↺ (업데이트)」 버튼을 클릭하거나 오른쪽 클릭하여 「업데이트」를 선택합니다.
업데이트 버튼이 활성화되는 조건: 선택 중인 프리셋이 가장 최근에 적용된 프리셋과 동일하고, 현재 효과 구성이 프리셋에 저장된 내용과 다른 경우에만 활성화됩니다. 효과 파라미터를 변경하면 50ms 디바운스 후 자동으로 판정됩니다.
11. 프리셋 검색
검색 상자에 키워드를 입력하면 실시간으로 프리셋이 필터링됩니다.
11-1. 검색 모드 전환
검색 상자 오른쪽 끝의 필터 아이콘을 클릭하면 메뉴가 열리고 검색 대상을 변경할 수 있습니다.
| 검색 모드 | 검색 대상 |
|---|---|
| 프리셋 이름 (기본값) | 프리셋의 이름 |
| 효과 이름 | 프리셋에 포함된 모든 효과의 레이블(줄 바꿈으로 구분된 목록) |
| 효과 수 | 프리셋에 포함된 효과의 개수. 숫자를 입력하면 완전 일치를 우선하고 일치하지 않으면 부분 일치로 폴백 |
| 내부 데이터 (JSON) | 직렬화된 효과 구성의 원시 JSON 데이터. 효과 타입 이름이나 파라미터 값으로 검색 가능 |
| 모두 | 이름 · 효과 이름 · 원시 JSON 중 하나라도 일치하는 것을 표시 |
11-2. 정규 표현식 검색
모든 검색 모드에서 정규 표현식(대소문자 구분 없음)을 사용할 수 있습니다.
- 예:
^blur→ 이름이 「blur」로 시작하는 프리셋 검색 - 예:
color|shadow→ 이름에 「color」 또는 「shadow」를 포함하는 프리셋 검색 - 예:
[0-9]+→ 이름에 숫자가 포함된 프리셋 검색
유효하지 않은 정규 표현식 패턴을 입력하면 대소문자 구분 없는 부분 일치 검색으로 폴백합니다.
12. 즐겨찾기
자주 사용하는 프리셋을 즐겨찾기로 등록하면 「즐겨찾기」 가상 그룹에서 빠르게 접근할 수 있습니다.
12-1. 즐겨찾기 등록 · 해제
프리셋 목록의 각 행 왼쪽 끝에 있는 ★ 버튼을 클릭합니다.
- ★가 노란색(금색)으로 바뀌면 즐겨찾기로 등록된 것입니다.
- ★가 회색이면 미등록(해제) 상태입니다.
변경 내용은 프리셋 파일에 즉시 저장됩니다.
12-2. 즐겨찾기 그룹 표시
그룹 목록에서 「즐겨찾기」를 선택하면 ★ 등록된 프리셋이 이름순으로 표시됩니다. 「즐겨찾기」 그룹을 표시 중에 프리셋의 즐겨찾기를 해제하면 해당 프리셋이 즉시 목록에서 사라집니다.
13. 복사 · 잘라내기 · 붙여넣기
클립보드를 사용하여 프리셋을 복사 · 잘라내기 · 붙여넣기할 수 있습니다. 데이터는 프리셋 패키지와 동일한 JSON 형식으로 클립보드에 기록되므로 텍스트 에디터에서 내용을 확인하거나 편집할 수도 있습니다.
13-1. 복사
- 복사할 프리셋을 선택합니다(다중 선택 가능).
- 오른쪽 클릭하여 「복사」를 선택합니다.
원본 프리셋은 그대로 남습니다.
13-2. 잘라내기
- 이동할 프리셋을 선택합니다(다중 선택 가능).
- 오른쪽 클릭하여 「잘라내기」를 선택합니다.
클립보드에 복사되는 동시에 원본 프리셋이 삭제됩니다. 삭제 확인 대화 상자는 표시되지 않습니다.
13-3. 붙여넣기
- 붙여넣을 대상 그룹을 그룹 목록에서 선택합니다.
- 프리셋 목록의 빈 공간 또는 임의의 프리셋을 오른쪽 클릭하여 「붙여넣기」를 선택합니다.
클립보드에 유효한 프리셋 패키지 JSON이 포함된 경우에만 실행할 수 있습니다. 붙여넣은 프리셋에는 새로운 GUID가 할당됩니다(원래 ID와 다른 ID가 됩니다). 가상 그룹을 선택 중인 경우 첫 번째 실제 그룹에 추가됩니다.
13-4. 클립보드 데이터 형식
클립보드에 기록되는 데이터는 다음 JSON 형식입니다.
{
"FormatId": "CombinedEffect.PresetExchange",
"Version": 1,
"ExportedAtUtc": "2025-01-01T00:00:00+00:00",
"Presets": [
{
"Id": "...",
"Name": "프리셋 이름",
"IsFavorite": false,
"SerializedTabs": "...",
"SerializedEffects": "..."
}
]
}
14. 프리셋 내보내기 · 가져오기
프리셋을 패키지 파일(확장자 .ceprstpkg)로 내보내기 · 가져오기하여 환경 간이나 사용자 간에 프리셋을 공유할 수 있습니다.
14-1. 내보내기 (Export)
- 내보낼 프리셋을 목록에서 선택합니다(Ctrl 클릭 · Shift 클릭으로 다중 선택 가능).
- 오른쪽 클릭하여 「내보내기」를 선택합니다.
- 파일 저장 대화 상자가 열립니다. 저장 위치와 파일 이름을 지정하여 저장합니다.
- 단일 프리셋 선택 시: 프리셋 이름을 기반으로 한 파일 이름이 기본값으로 사용됩니다(파일 이름에 사용할 수 없는 문자는 _로 대체됩니다).
- 여러 프리셋 선택 시: 기본 번들 이름 「조합효과_프리셋」이 기본값으로 사용됩니다.
14-2. 가져오기 (Import)
- 가져온 프리셋을 추가할 그룹을 그룹 목록에서 선택합니다.
- 프리셋 목록의 빈 공간을 오른쪽 클릭하여 「가져오기」를 선택합니다.
- 파일 선택 대화 상자가 열립니다.
.ceprstpkg파일을 선택합니다(여러 파일을 동시에 선택 가능). - 가져온 프리셋이 현재 그룹에 추가됩니다.
가져온 프리셋에는 새로운 GUID가 할당되므로 기존 프리셋과 충돌하지 않습니다.
14-3. 버전 호환성
패키지 파일에는 형식 버전 번호가 기록되어 있습니다. 현재 버전은 1입니다. 지원되는 버전을 초과하는 패키지를 가져오려고 하면 오류 메시지가 표시됩니다.
15. 스냅샷 기록 · 분기 관리
프리셋별로 Git 유사 기록 관리 창을 제공합니다. 효과 구성의 변경 기록을 스냅샷으로 저장하고 분기를 사용하여 관리할 수 있습니다.
15-1. 기록 관리 창 열기
- 기록을 관리할 프리셋을 오른쪽 클릭합니다.
- 컨텍스트 메뉴에서 「기록 관리」를 선택합니다.
- 기록 관리 창이 열립니다(프리셋마다 1개의 창이 열립니다).
15-2. 기록 관리 창 구성
| 패널 | 설명 |
|---|---|
| 왼쪽 (분기 목록) | 이 프리셋에 존재하는 분기를 목록으로 표시합니다. 클릭으로 선택하면 선택된 분기의 스냅샷 기록이 중앙에 표시됩니다. 하단 텍스트 상자에 분기 이름을 입력하고 「새 분기 생성」 버튼으로 새 분기를 추가할 수 있습니다. |
| 중앙 (스냅샷 목록) | 선택된 분기의 HEAD에서 역방향으로 스냅샷을 목록으로 표시합니다. 각 행에는 커밋 아이콘(현재 HEAD는 채워진 상태) · 태그 · 메시지 · 날짜/시간 · 차이 요약 · ID가 표시됩니다. 오른쪽 클릭으로 컨텍스트 메뉴가 열립니다. 하단에서 메시지를 입력하고 「새 스냅샷 저장」 버튼을 누르면 현재 구성이 저장됩니다. 하단의 「이 상태로 되돌리기」 버튼으로 선택된 스냅샷으로 되돌릴 수 있습니다. |
| 오른쪽 (차이 표시) | 선택된 스냅샷과 현재 효과 구성의 차이를 표시합니다. 추가는 초록색 · 삭제는 빨간색 · 변경은 노란색으로 색상 코드 표시됩니다. 효과 수의 증감과 각 속성의 변경 전 · 후 값이 Consolas 폰트로 표시됩니다. |
15-3. 스냅샷 생성
- 기록 관리 창을 엽니다.
- 중앙 패널 하단의 텍스트 상자에 변경 내용의 메시지를 입력합니다.
- 「새 스냅샷 저장」 버튼을 클릭합니다.
- 현재 프리셋의 효과 구성이 스냅샷으로 저장되고 선택된 분기의 HEAD가 업데이트됩니다.
15-4. 스냅샷으로 되돌리기 (Revert)
- 되돌릴 스냅샷을 목록에서 선택합니다.
- 「이 상태로 되돌리기」 버튼을 클릭합니다.
- 프리셋과 타임라인의 아이템(조합 효과)의 효과 구성이 선택된 스냅샷 시점으로 복원됩니다.
15-5. 분기 생성
- 왼쪽 패널 하단의 텍스트 상자에 새 분기 이름을 입력합니다.
- 「새 분기 생성」 버튼을 클릭합니다.
- 현재 선택된 스냅샷(또는 현재 분기 HEAD)을 기점으로 새 분기가 생성됩니다.
15-6. 컨텍스트 메뉴 조작
스냅샷을 오른쪽 클릭하면 컨텍스트 메뉴가 표시됩니다.
| 조작 | 설명 |
|---|---|
| 현재 기록에 병합 | 선택된 스냅샷의 효과를 현재 효과의 끝에 추가합니다. |
| 변경 유지 (Soft) | 선택된 분기의 HEAD를 선택한 스냅샷으로 이동합니다. 타임라인의 효과는 변경되지 않습니다. |
| 변경 버림 (Hard) | 변경 유지 (Soft)와 스냅샷으로의 되돌리기를 동시에 실행합니다. |
| 태그 관리 | 스냅샷의 태그 관리 창을 엽니다. |
15-7. 차이 요약 보는 방법
스냅샷 목록의 「변경 내용」 열에 차이 요약이 표시됩니다.
- 「추가됨 (+N)」: 현재보다 효과가 N개 더 많음
- 「삭제됨 (N)」: 현재보다 효과가 N개 더 적음
- 「수정됨」: 효과 수는 같지만 파라미터가 변경됨
- (빈 칸): 현재 효과 구성과 동일한 내용
15-8. 기록 데이터 저장 위치
기록 데이터는 플러그인 디렉터리 하위의 History/ 폴더에 저장됩니다. 프리셋별로 하위 폴더가 만들어지고 분기 정보는 branches.json, 각 스냅샷은 {ID}.json으로 저장됩니다.
16. 태그 관리
스냅샷에 여러 개의 태그를 부여하여 정리할 수 있습니다. 태그는 스냅샷 목록에서 초록색으로 표시됩니다.
16-1. 태그 추가
- 태그를 추가할 스냅샷을 오른쪽 클릭합니다.
- 컨텍스트 메뉴에서 「태그 관리」를 선택합니다.
- 태그 관리 창이 열립니다.
- 상단의 텍스트 상자에 태그 이름을 입력하고 「추가」 버튼을 클릭합니다.
동일한 태그 이름은 중복 추가되지 않습니다.
16-2. 태그 삭제
- 태그 관리 창을 엽니다.
- 삭제할 태그 행의 「제거」 버튼을 클릭합니다.
17. 효과 일괄 삭제
「조합 효과」 내에서 비활성화(체크 해제)된 효과를 한꺼번에 삭제할 수 있습니다.
- 프리셋 목록의 빈 공간을 오른쪽 클릭합니다.
- 컨텍스트 메뉴의 「지우기」 → 「선택되지 않은 효과 제거」를 선택합니다.
- 확인 대화 상자에서 「OK」를 클릭합니다.
- 현재 비활성화된 모든 효과가 삭제됩니다.
활성화된 효과는 삭제되지 않습니다. 비활성화된 효과가 없는 경우 아무것도 일어나지 않습니다.
18. 반응형 UI 및 레이아웃 조정
18-1. 패널 높이 조정
프리셋 관리 패널 하단의 크기 조절 핸들(이중 선)을 위아래로 드래그하여 패널 높이를 변경할 수 있습니다. 최소 높이는 200px입니다. 드래그를 놓을 때 설정이 저장되어 다음 시작 시 복원됩니다.
18-2. 그룹 열 너비 조정
그룹 목록과 프리셋 목록의 경계선(그리드 분할선)을 좌우로 드래그하여 그룹 열 너비를 변경할 수 있습니다. 최소 너비는 120px, 최대 너비는 400px입니다. 드래그 완료 시 설정이 저장됩니다.
18-3. 모바일 레이아웃
컨트롤 폭이 400px 미만이 되면 다음과 같이 변경됩니다.
- 그룹 목록 패널이 숨겨집니다.
- 그리드 분할선이 숨겨집니다.
- 검색 바 왼쪽에 햄버거 메뉴 버튼(≡)이 표시됩니다.
- 버튼을 클릭하면 팝업으로 그룹 목록이 열립니다. 그룹을 선택하면 팝업이 닫힙니다.
컨트롤 폭이 400px 이상으로 돌아오면 자동으로 데스크톱 레이아웃으로 전환됩니다.
19. 데이터 저장 및 안전한 영속화
모든 프리셋 데이터 · 그룹 구성 · 기록 데이터는 JSON 파일로 저장됩니다. 다음의 다중 이중화 · 무결성 검증 메커니즘으로 단일 장애로 인한 데이터 손실을 방지합니다.
19-1. 원자적 쓰기
파일 쓰기는 다음 절차로 수행됩니다.
- 임시 파일(
.tmp)에 씁니다. File.Replace로 본체 파일과 교체하고 이전 파일을 백업(.bak)으로 이동합니다.- 쓰기 중 충돌이 발생해도 본체 파일 또는 백업 파일 중 하나는 항상 유효한 상태를 유지합니다.
19-2. CRC32 검증
쓰기 시 파일 내용의 CRC32 체크섬을 계산하여 파일 끝에 부가합니다. 읽기 시 체크섬을 대조하고 불일치 시 백업 파일로부터 복원을 시도합니다.
19-3. SHA-256 해시에 의한 다중 이중화
프리셋 데이터와 그룹 레지스트리는 다음 2곳에 저장됩니다.
- 메인 스토리지: 플러그인 디렉터리 하위의
presets/폴더 - 백업 스토리지:
user/backup/CombinedEffect/폴더
시작 시 양쪽의 내용과 CombinedEffectSettings에 기록된 SHA-256 해시 · 타임스탬프를 대조하여 불일치가 감지된 경우 올바른 데이터로 자동 복구(힐링)합니다.
19-4. 디바운스 쓰기
연속된 변경 작업은 300ms(삭제 작업은 100ms) 디바운스되어 함께 기록됩니다. 이를 통해 I/O 부하를 억제합니다.
19-5. 로그 기록
조작 로그 · 오류 로그는 user/log/CombinedEffect/ 하위에 저장됩니다.
- 로그 파일이 512 KB를 초과하면 새 파일이 생성됩니다.
- 31일 이상 경과한 로그 파일은 자동 삭제됩니다(1시간마다 확인).
20. 이전 버전에서의 마이그레이션
다음 경로에 이전 버전 데이터 파일이 존재하는 경우 초회 시작 시 자동으로 마이그레이션이 실행됩니다.
%AppData%\YukkuriMovieMaker4\user\plugins\CombinedEffect\presets.json
마이그레이션 완료 후 이전 파일은 presets.json.migrated로 이름이 변경됩니다. 마이그레이션에 실패해도 이전 파일은 삭제되지 않습니다.
마이그레이션 대상:
- 이전 형식의 그룹 목록(가상 그룹 「전체」「즐겨찾기」에 해당하는 그룹은 제외됩니다)
- 각 그룹에 속하는 프리셋(이름 · 즐겨찾기 상태 · 효과 구성)
21. 파일 · 폴더 구성
| 경로 (플러그인 디렉터리 기준) | 내용 |
|---|---|
presets/ | 메인 프리셋 데이터 저장 폴더 |
presets/groups.json | 그룹 구성(그룹 이름 · 소속 프리셋 ID 목록) |
presets/{GUID}.json | 각 프리셋의 데이터(이름 · 즐겨찾기 · 효과 구성 JSON) |
presets/recent_ids.json | 최근 사용 프리셋 ID 목록(최대 10개) |
presets/UISettings.json | UI 설정(패널 높이 · 그룹 열 너비) |
History/ | 스냅샷 기록 데이터 저장 폴더 |
History/{프리셋 GUID}/branches.json | 해당 프리셋의 분기 목록 |
History/{프리셋 GUID}/{스냅샷 GUID}.json | 각 스냅샷의 데이터 |
user/backup/CombinedEffect/ | 백업 스토리지(YMM4 설치 디렉터리 기준) |
user/log/CombinedEffect/ | 로그 파일 저장 폴더(YMM4 설치 디렉터리 기준) |
프리셋 데이터는 메인 스토리지와 백업 스토리지 양쪽에 저장됩니다. 한쪽 폴더가 손실되어도 다른 쪽에서 복원할 수 있지만, 양쪽 모두 삭제되면 데이터를 복원할 수 없습니다.
22. 다국어 지원
YMM4의 언어 설정에 맞춰 UI 전체가 자동으로 전환됩니다. 추가 설정은 필요하지 않습니다.
| 언어 코드 | 언어 |
|---|---|
| ja-jp | 일본어 |
| en-us | 영어 |
| zh-cn | 중국어(간체) |
| zh-tw | 중국어(번체) |
| ko-kr | 한국어 |
| es-es | 스페인어 |
| ar-sa | 아라비아어 |
| id-id | 인도네시아어 |
23. 파라미터 목록
| 파라미터 이름 | 형식 | 기본값 | 애니메이션 | 설명 |
|---|---|---|---|---|
| 활성 효과 (Effects) | ImmutableList<IVideoEffect> | (비어 있음) | 없음 | 저장할 영상 효과의 목록. YMM4 표준 효과 선택기로 추가 · 삭제 · 순서 변경 · 활성화/비활성화할 수 있습니다. 위에서 순서대로 파이프라인 처리됩니다. 비활성화된 효과는 건너뜁니다. |
| EffectTabsJson | String(JSON 형식) | (빈 문자열) | 없음 | 효과 탭 상태(선택된 탭 ID, 탭 이름, 탭별 효과 JSON)를 저장하는 내부용 속성입니다. 탭 추가/삭제/이름 변경/전환 시 자동으로 갱신됩니다. |
| SelectedPresetJson | String(JSON 형식) | (빈 문자열) | 없음 | 현재 적용된 프리셋의 정보를 보유하는 내부용 속성. 프리셋 적용 시 자동으로 설정됩니다. 직접 편집은 권장하지 않습니다. 타임라인 레이블 표시에 사용됩니다. |
| PresetManagerVisible | bool | true | 없음 | 프리셋 관리 패널의 표시를 제어하는 내부용 플래그. JSON 직렬화 대상 외([JsonIgnore])입니다. |
레이블 표시 형식
| 상태 | 표시 형식 | 예시 |
|---|---|---|
| 프리셋 미적용 | {효과 이름} 적용 중: {N}개 | 조합 효과 적용 중: 3개 |
| 프리셋 적용됨 | {효과 이름} 적용 중: {N}개 [{프리셋 이름}] | 조합 효과 적용 중: 3개 [효과 A 세트] |
24. 조작 목록 (빠른 참조)
탭 조작
| 조작 | 방법 | 제한 · 보충 |
|---|---|---|
| 탭 추가 | 탭 바 오른쪽 「+」 버튼 | 새 탭은 빈 효과 구성으로 생성 |
| 탭 삭제 | 탭의 「×」 버튼 | 첫 탭 「새 탭」은 삭제 불가 |
| 탭 이름 변경 | 탭 더블 클릭 후 편집 | Enter/포커스 이동으로 확정, Esc로 취소 |
| 탭 전환 | 탭 클릭 | 선택 탭의 효과가 「활성 효과」에 반영 |
그룹 조작
| 조작 | 방법 | 제한 |
|---|---|---|
| 그룹 추가 | 그룹 목록 하단 「+」 버튼 | 없음 |
| 그룹 삭제 | 그룹 목록 하단 「-」 버튼 | 기본 · 가상 그룹은 불가 |
| 그룹 이름 변경 | 더블 클릭, 또는 오른쪽 클릭 → 「이름 바꾸기」 | 가상 그룹은 불가 |
| 그룹 순서 변경 | 드래그 & 드롭 | 가상 그룹은 불가 |
프리셋 조작
| 조작 | 방법 | 제한 · 보충 |
|---|---|---|
| 프리셋 추가 | 「+ (추가)」 버튼 | 가상 그룹 선택 시 첫 번째 실제 그룹에 저장 |
| 프리셋 삭제 | 「- (삭제)」 버튼, 또는 오른쪽 클릭 → 「삭제」 | 확인 대화 상자 있음. 다중 선택 가능 |
| 프리셋 이름 변경 | 더블 클릭, 또는 오른쪽 클릭 → 「이름 바꾸기」 | 없음 |
| 프리셋 순서 변경 | 드래그 & 드롭 | 가상 그룹 표시 중 불가 |
| 프리셋 적용 | 「✓ (적용)」 버튼, 또는 오른쪽 클릭 → 「적용」 | 동일 내용인 경우 확인 대화 상자 있음 |
| 프리셋 업데이트 | 「↺ (업데이트)」 버튼, 또는 오른쪽 클릭 → 「업데이트」 | 효과에 변경이 있는 경우에만 활성화 |
| 프리셋 비우기 | 오른쪽 클릭 → 「프리셋 비우기」 | 확인 대화 상자 있음. 효과가 1개 이상인 경우에만 활성화 |
| 즐겨찾기 전환 | ★ 버튼 클릭 | 없음 |
| 복사 | 오른쪽 클릭 → 「복사」 | 다중 선택 가능 |
| 잘라내기 | 오른쪽 클릭 → 「잘라내기」 | 확인 대화 상자 없음. 다중 선택 가능 |
| 붙여넣기 | 오른쪽 클릭 → 「붙여넣기」 | 클립보드에 유효한 JSON 필요 |
| 내보내기 | 오른쪽 클릭 → 「내보내기」 | 다중 선택 가능. .ceprstpkg 형식 |
| 가져오기 | 빈 공간 오른쪽 클릭 → 「가져오기」 | 여러 파일 동시 선택 가능 |
| 선택되지 않은 효과 제거 | 빈 공간 오른쪽 클릭 → 「지우기」 → 「선택되지 않은 효과 제거」 | 확인 대화 상자 있음 |
| 기록 관리 열기 | 오른쪽 클릭 → 「기록 관리」 | 프리셋마다 1개의 창 |
기록 관리 조작
| 조작 | 방법 | 설명 |
|---|---|---|
| 스냅샷 저장 | 메시지 입력 → 「새 스냅샷 저장」 버튼 | 메시지가 비어 있으면 비활성화 |
| 스냅샷으로 되돌리기 | 스냅샷 선택 → 「이 상태로 되돌리기」 버튼 | 프리셋과 타임라인 양쪽에 반영 |
| 분기 생성 | 분기 이름 입력 → 「새 분기 생성」 버튼 | 분기 이름이 비어 있으면 비활성화 |
| 병합 | 스냅샷 오른쪽 클릭 → 「현재 기록에 병합」 | 효과를 현재 끝에 추가 |
| 변경 유지 (Soft Reset) | 스냅샷 오른쪽 클릭 → 「변경 유지 (Soft)」 | HEAD만 이동, 효과 변경 없음 |
| 변경 버림 (Hard Reset) | 스냅샷 오른쪽 클릭 → 「변경 버림 (Hard)」 | Soft Reset + 되돌리기 동시 실행 |
| 태그 관리 | 스냅샷 오른쪽 클릭 → 「태그 관리」 | 태그 관리 창 열기 |
25. 주의 사항
- AviUtl 형식(.exo) 출력은 지원하지 않습니다.
- 「조합 효과」 내에 같은 「조합 효과」를 중첩하는 것은 권장하지 않습니다.
- 「전체」「즐겨찾기」「최근 사용」 가상 그룹은 삭제 · 이름 변경 · 순서 변경이 불가합니다.
- 「기본」 그룹은 삭제할 수 없습니다.
- 가상 그룹을 선택한 상태에서 프리셋을 추가 · 붙여넣기하면 첫 번째 실제 그룹에 저장됩니다.
- 패키지 파일을 가져오면 원래 GUID와 다른 새 ID가 할당됩니다. 따라서 가져온 프리셋은 스냅샷 기록을 이어받지 않습니다.
- 잘라내기 작업은 확인 대화 상자 없이 프리셋을 삭제합니다. 작업 직후 실행 취소가 불가하므로 주의하십시오.
- 단일 프리셋 적용 시 저장된 탭 구조(선택된 탭 포함)가 복원됩니다. 여러 프리셋을 동시에 적용하거나 동일 프리셋을 덧붙여 적용하면, 선택 탭의 효과만 병합되고 탭 구조는 단일 「새 탭」으로 재구성됩니다.
- 프리셋 데이터는 메인 스토리지와 백업 스토리지 2곳에 저장됩니다. 한쪽 폴더를 삭제해도 복원할 수 있는 경우가 있지만, 양쪽을 모두 삭제하면 프리셋이 손실됩니다.
- 기록 데이터는
History/폴더에 저장됩니다. 이 폴더를 삭제하면 모든 기록이 사라집니다. - 스냅샷 기록은 무제한으로 증가합니다. 불필요한 기록이 많은 경우
History/{프리셋 GUID}/폴더 내의 불필요한.json파일을 수동으로 삭제할 수 있습니다(branches.json은 삭제하지 마십시오). - 프리셋의 효과 구성으로 저장되는 것은 YMM4 플러그인 시스템이 지원하는 효과뿐입니다. 미지원 효과는 로드 시 건너뛸 수 있습니다.
- 디바운스 쓰기로 인해 변경 작업에서 실제로 파일에 저장될 때까지 최대 300ms의 지연이 있습니다. YMM4를 즉시 강제 종료한 경우 마지막 작업이 저장되지 않을 수 있습니다.
26. 면책 조항 · 라이선스
본 플러그인은 MIT 라이선스 하에 공개되어 있습니다.
본 소프트웨어는 「현 상태 그대로」 제공되며, 명시적이든 묵시적이든 상품성, 특정 목적에의 적합성, 및 권리 비침해에 관한 보증을 포함한 어떠한 종류의 보증도 하지 않습니다.
작성자는 본 플러그인의 사용 또는 사용 불능으로 인한 어떠한 손해에 대해서도 일절 책임을 지지 않습니다. 이용은 자기 책임으로 부탁드립니다.
작성자: routersys / 라이선스: MIT License / 리포지토리: https://github.com/routersys/YMM4-CombinedEffect
이상