VRChat
이 문서를 읽으면 VRChat 쪽 제한(파라미터 상한 · 메뉴 8칸 · SDK 버전) 안에서 지금 구성이 업로드 가능한지 판단할 수 있습니다.
필요한 SDK
업로드까지 가려면 다음이 모두 있어야 합니다.
| 항목 | 조건 |
|---|---|
| VRChat Avatars SDK | 3.x |
| NDMF | 1.x |
| 아바타 재질 | MingToon |
| 연결 방식 | Modular Avatar · VRCFury · 비어 있는 VRC 아바타 디스크립터 중 하나 |
VRCFury를 쓴다면 1.1426.0 이상이어야 합니다. Modular Avatar와 VRCFury는 선택 사항이고, MLC가 둘 중 어느 것도 몰래 설치하지 않습니다.
VRCSDK Avatars를 찾지 못하면 창에 VRCSDK Avatars를 찾지 못했습니다. 코어 compile plan은 계속 검증할 수 있습니다. 가 표시됩니다. 구성 검증은 계속할 수 있지만 업로드는 되지 않습니다.
동기화 비트 256
VRChat 아바타 하나가 쓸 수 있는 동기화 비트는 256개이고, 이것은 아바타 전체가 나눠 쓰는 자원입니다. MLC 메뉴도 이 예산 안에서 만들어집니다.
예산·검증 카드의 동기화 비트 줄이 Smooth ... / Compact ... (예산 ...) 형태로 두 프로필의 비용과 현재 예산을 함께 보여 줍니다.
기본 카탈로그를 전부 켠 상태의 비용은 다음과 같습니다.
| 프로필 | 동기화 비트 | 파라미터 항목 |
|---|---|---|
| Smooth | 84 | 22 |
| Compact | 41 | 51 |
Compact는 값을 단계로 나눠 보내고 받는 쪽에서 복원하는 방식이라 비트를 아끼는 대신 항목 수가 늘어납니다. 기능을 끄면 두 숫자 모두 줄어듭니다.
프로필을 자동으로 두면 남은 예산을 보고 Smooth를 먼저 시도한 뒤 Compact로 내려갑니다.
파라미터 항목 수
동기화 비트와 별개로, Expression Parameters의 항목 수 자체에도 상한이 있습니다. MLC가 기대하는 값은 8192개입니다. 업로드 직전 검사에서 설치된 SDK가 보고하는 값과 대조합니다.
메뉴 한 페이지 8칸
VRChat Expressions Menu는 한 페이지에 최대 8개 슬롯만 표시합니다. 메뉴 구성 카드의 루트 줄이 루트 (n / 8) 로 현재 개수를 보여 줍니다. 넘긴 항목은 아바타에서 보이지 않으므로 폴더로 묶으세요. 자세한 것은 메뉴 구성에 있습니다.
이미 아바타에 있는 파라미터
MLC가 쓸 수 있는 몫은 다른 도구가 이미 쓰고 남은 것입니다. 예산·검증 카드의 아바타 합계 줄이 외부 ... bit / ... entries + MLC (목표 ... bit, ... entries) 형태로 이를 보여 줍니다.
고급 옵션의 두 목표값은 이렇게 동작합니다.
| 항목 | 0으로 두면 | 0이 아닌 값을 넣으면 |
|---|---|---|
동기화 비트 목표 | 남은 VRC 예산을 자동으로 씁니다 | 그 값이 아바타 전체 상한이 됩니다 |
파라미터 항목 목표 | VRC 최대값을 씁니다 | 그 값이 아바타 전체 항목 상한이 됩니다 |
기존 VRC 파라미터를 읽을 수 없을 때만 쓰는 알 수 없는 예산에서 강제 설치 옵션이 따로 있습니다. 이것을 켜면 외부 예산을 비어 있는 것으로 가정하므로, 직접 확인한 경우에만 쓰세요.
업로드 직전 최종 검사
업로드 직전에 완성된 Expression Parameters를 한 번 더 검사합니다. 이 검사는 설치된 VRChat SDK가 보고하는 상한값을 직접 읽어 MLC가 기대하는 값과 대조하므로, SDK를 올린 뒤 상한이 달라졌다면 여기서 잡힙니다.
여기서 걸리면 Console에 Ming Light Controller final VRC parameter validation failed: 로 시작하는 오류가 남고 업로드가 중단됩니다.
- 항목 수 초과 · 동기화 비트 초과 · SDK 상한 불일치 → 오류, 업로드 중단
- 기본값이 타입의 허용 범위를 벗어난 파라미터 → 오류, 업로드 중단
- 이름이 비었거나 중복된 파라미터 → 경고, 업로드는 진행
기본값 범위는 타입마다 다릅니다.
| 타입 | 허용되는 기본값 |
|---|---|
| Bool | 정확히 0 또는 1 |
| Int | 0 이상 255 이하의 정수 |
| Float | -1 이상 1 이하 |
NDMF 빌드 클론 단계 자체가 지나가지 않은 경우에도 업로드가 중단됩니다. 이때는 파라미터 검사가 아니라 준비 단계에서 걸린 것이므로, 프로젝트에 NDMF가 있는지 먼저 확인하세요.
MingToon 재질 쪽 준비
메뉴를 만들어도 재질 쪽이 그 값을 런타임에 읽을 수 있어야 합니다. MingToon 재질 인스펙터의 두 스위치가 그 역할입니다.
| 재질 쪽 스위치 | 켜 두면 |
|---|---|
VRC 런타임 제어 사용 | VRC Quality Tier 와 가상 조명 · 마스터 조정 · 포토 룩 프로퍼티가 베이크에서 상수로 접히지 않습니다 |
FX 메뉴로 그림자 투영 전환 | 그림자 투영 이 베이크에서 상수로 접히지 않습니다 |
둘 다 꺼 두면 해당 값들이 상수로 접혀 가장 가벼운 상태가 되지만, 메뉴로 돌릴 수 없게 됩니다.
성능 거리 (m) 과 성능 거리 배율 두 항목은 이 스위치와 무관하게 베이크에서 접히지 않습니다. MLC 없이 재질에 값만 저장해 두어도 업로드 후 거리 판정이 계속 동작합니다. 다만 두 값의 곱이 0이면 거리와 상관없이 항상 가장 가벼운 상태로 그려지고, MingToon 검증기가 MING-MAT-PERF-DISTANCE-ZERO 경고를 냅니다. 인게임 라디얼로 0까지 내리게 두는 것이 의도라면 그대로 두면 됩니다.
알려진 제약
- Direct Descriptor는 이미 FX 컨트롤러 · Expressions 메뉴 · Expression Parameters를 쓰는 아바타에 병합하지 못합니다. 그런 아바타에는 Modular Avatar나 VRCFury를 쓰세요.
- Standalone은 아바타에 아무것도 붙이지 않으므로 그 자체로 완성된 구성이 아닙니다.
- VRCFury provider는 그 선택적 어셈블리가 정상적으로 컴파일되고 등록됐을 때만 쓸 수 있습니다.
- MLC는 MingToon 재질만 대상으로 합니다. 다른 셰이더로의 변환이나 컨트롤 생성은 없습니다.