본문 바로가기
RV

Open RV 패키지 만들기 (레퍼런스 매뉴얼 10장 요약)

by 르면가게 2025. 2. 9.

🔹 Open RV 패키지란?

RV에서 키 바인딩, 사용자 정의 메뉴, 자동화 기능 등을 추가하려면 패키지(.rvpkg) 를 만들어야 합니다. 패키지는 Mu 또는 Python 코드를 포함하며, RV에서 쉽게 설치하고 사용할 수 있도록 설계됩니다.

패키지를 사용하면 가능한 작업

  • 단축키 설정: 특정 키를 눌렀을 때 동작 추가
  • 사용자 정의 메뉴 생성: RV UI에 새로운 메뉴 추가
  • 자동화 기능 구현: RV 동작을 커스터마이징

1️⃣ 간단한 패키지 만들기

패키지를 만들기 위해 Mu 또는 Python을 사용하여 RV 모드를 정의해야 합니다.

🔹 Mu를 사용한 패키지 예제 (mystuff.mu)

use rvtypes;
use extra_commands;
use commands;

module: mystuff {
    class: MyStuffMode : MinorMode {
        method: MyStuffMode (MyStuffMode;) {
            init("mystuff-mode", nil, nil, nil);
        }
    }

    \\: createMode (Mode;) {
        return MyStuffMode();
    }
}

위 코드의 역할

  • MyStuffMode 클래스를 정의하여 RV 모드를 생성
  • init()을 호출하여 RV에서 자동으로 로드되도록 설정

🔹 패키지 메타데이터 파일(PACKAGE) 생성

package: My Stuff
author: M. VFX Artiste
version: 1.0
rv: 3.6
requires: ''
modes:
  - file: mystuff
    load: immediate
description: |
  <p>M. VFX Artiste's Personal RV Customizations</p>

패키지 메타데이터 역할

  • package – 패키지 이름
  • author – 작성자 정보
  • version – 패키지 버전
  • modes – 패키지에서 사용할 Mu 파일 지정

🔹 패키지 파일 생성 (.rvpkg 압축)

zip mystuff-1.0.rvpkg PACKAGE mystuff.mu

패키지 파일(mystuff-1.0.rvpkg)이 생성됨


2️⃣ 패키지 설치 및 테스트

🔹 RV에 패키지 추가하기

  1. RV 환경설정(Preferences) → "Packages" 탭으로 이동
  2. "Add Packages..." 버튼 클릭
  3. mystuff-1.0.rvpkg 파일을 선택하여 추가
  4. 패키지를 "설치(install)"하고 "로드(load)" 활성화

RV를 재시작하면 패키지가 정상적으로 로드됨

🔹 패키지 업데이트 방법

  1. mystuff.mu 파일을 수정
  2. 패키지 파일 다시 생성
  3. zip mystuff-1.0.rvpkg PACKAGE mystuff.mu
  4. RV에서 기존 패키지 삭제 후, 새로운 패키지 추가

3️⃣ 키 바인딩 추가 (재생 속도 조절 기능)

RV에서 특정 키(> 및 <)를 눌렀을 때 재생 속도를 조절하는 기능을 추가할 수 있습니다.

🔹 Mu 코드 예제 (mystuff.mu 수정)

use rvtypes;
use extra_commands;
use commands;

module: mystuff {
    class: MyStuffMode : MinorMode {
        method: MyStuffMode (MyStuffMode;) {
            init("mystuff-mode",
                 [("key-down-->", faster, "speed up fps"),
                  ("key-down--<", slower, "slow down fps")],
                 nil, nil);
        }

        method: faster (void; Event event) {
            setFPS(fps() * 1.5);
            displayFeedback("%g fps" % fps());
        }

        method: slower (void; Event event) {
            setFPS(fps() * (1.0 / 1.5));
            displayFeedback("%g fps" % fps());
        }
    }

    \\: createMode (Mode;) {
        return MyStuffMode();
    }
}

위 코드의 기능

  • > 키를 누르면 faster() 함수가 호출되어 FPS 증가
  • < 키를 누르면 slower() 함수가 호출되어 FPS 감소
  • displayFeedback()을 사용하여 현재 FPS를 화면에 표시

4️⃣ 사용자 정의 메뉴 추가

RV의 메뉴바에 "MyStuff" 메뉴를 추가하고, FPS 조절 기능을 메뉴에서 실행할 수 있도록 설정할 수 있습니다.

🔹 Mu 코드 수정 (mystuff.mu)

method: MyStuffMode (MyStuffMode;) {
    init("mystuff-mode",
         [("key-down-->", faster, "speed up fps"),
          ("key-down--<", slower, "slow down fps")],
         nil,
         Menu {
             {"MyStuff", Menu {
                 {"Increase FPS", faster, "="},
                 {"Decrease FPS", slower, "-"}
             }}
         });
}

추가된 메뉴의 기능

  • "MyStuff" 메뉴 생성
  • "Increase FPS" 클릭 시 faster() 실행
  • "Decrease FPS" 클릭 시 slower() 실행
  • = 및 `` 키도 사용할 수 있도록 단축키 지정

🔹 Python을 사용한 메뉴 생성 예제

from rv.rvtypes import *
from rv.commands import *
from rv.extra_commands import *

class PyMyStuffMode(MinorMode):
    def __init__(self):
        MinorMode.__init__(self)
        self.init("py-mystuff-mode",
                  [("key-down-->", self.faster, "speed up fps"),
                   ("key-down--<", self.slower, "slow down fps")],
                  None,
                  [("MyStuff",
                    [("Increase FPS", self.faster, "=", None),
                     ("Decrease FPS", self.slower, "-", None)])])

    def faster(self, event):
        setFPS(fps() * 1.5)
        displayFeedback("%g fps" % fps(), 2.0)

    def slower(self, event):
        setFPS(fps() * (1.0 / 1.5))
        displayFeedback("%g fps" % fps(), 2.0)

def createMode():
    return PyMyStuffMode()

Python을 활용하면 Mu 없이도 RV 패키지를 만들 수 있음


5️⃣ 패키지 최종 빌드 및 배포

🔹 최종 패키지 압축

zip mystuff-1.0.rvpkg PACKAGE mystuff.mu

또는 Python 코드 기반 패키지일 경우:

zip mystuff-1.0.rvpkg PACKAGE mystuff.py

🔹 RV에 패키지 추가 및 테스트

  1. 기존 패키지를 제거하고 새 패키지를 추가
  2. "Packages" 탭에서 패키지를 설치(install)로드(load)
  3. RV에서 "MyStuff" 메뉴가 추가되었는지 확인
  4. > 및 < 키를 눌러 FPS 조절 기능이 동작하는지 테스트

🔹 마무리

✅ Open RV 패키지를 활용하면 다음과 같은 작업이 가능

  1. 키 바인딩 추가 – 특정 키를 눌렀을 때 동작 수행
  2. 사용자 정의 메뉴 생성 – RV UI에 새로운 메뉴 추가
  3. Python 또는 Mu를 활용한 확장 기능 개발
  4. 자동화 기능 추가 및 커스터마이징 가능

🚀 이제 직접 패키지를 만들어 RV를 커스터마이징해 보세요! 🎯

 

https://aswf-openrv.readthedocs.io/en/latest/rv-manuals/rv-reference-manual/rv-reference-manual-chapter-ten.html#chapter-10-a-simple-package