기술 사양 및 알려진 제한사항
이 페이지는 Real Sweat System v2.0.0의 현재 동작을 정리합니다. 설치 창이 만드는 메뉴·파라미터·오브젝트는 설치한 모듈, 아바타 Rig, 선택한 Element/대상, 켠 옵션에 따라 달라집니다.
모듈별 기술 범위
| 항목 | Sweat Base Module | Sweat Effects Module | Full Pack |
|---|---|---|---|
| 피부 땀(애니 / 실사)과 흘러내리는 표면 물방울 | ✓ | — | ✓ |
| Body 땀 마테리얼과 Rest 데이터 | ✓ | — | ✓ |
| 물방울 입체감(Tess / No Tess)과 상대 저부하 | ✓ | — | ✓ |
| 스폰 마스크, 최종 표시 마스크, 피부 땀 숨기기, 표면의 거울 품질 | ✓ | — | ✓ |
| 여러 Body Element와 별도 Skinned Mesh 추가 대상(실험적) | ✓ | — | ✓ |
| 낙하 물방울, 튀김, 바닥 물자국 | — | ✓ | ✓ |
| 2D 또는 선택형 3D 입김·낙하 물방울·몸 김 | — | ✓ | ✓ |
| Custom Steam과 선택형 공용 진하기 래디얼 | — | ✓ | ✓ |
| 수동 모드 | ✓ | ✓ | ✓ |
| 호환되는 Rig에서의 자동 모드 | ✓ | ✓ | ✓ |
| Body 마테리얼·Body 메쉬·Rest 대응 변경 | ✓ | 하지 않음 | Base를 통해서만 |
Effects만 설치해도 파티클 방출원으로 Body Mesh가 필요합니다. Body 마테리얼, Body 메쉬, Rest Vertex Data, 물방울 입체감 구성은 바꾸지 않습니다.
지원 환경
- Unity 에디터용 Windows (구매 인증이 Windows에서만 동작합니다)
- Unity 2022.3
- VRChat Avatars SDK 3.10.3 이상 (3.10.6까지 확인)
- Modular Avatar (NDMF 1.14.0 / Modular Avatar 1.17.1, NDMF 1.14.8 / Modular Avatar 1.18.7에서 시험)
- PC VRChat (Direct3D 11)
이 제품은 PC VRChat용입니다. Quest에서는 땀이 표시되지 않습니다(안전한 Hidden 폴백).
Humanoid 아바타가 주 지원 대상입니다. 움직임추를 만들 수 있는 Humanoid Rig에서는 수동 모드와 자동 모드를 모두 사용할 수 있습니다. Non-Humanoid 아바타이거나 필요한 뼈 정보를 찾을 수 없는 구성은 수동 모드로 전환됩니다. Rig에 따른 기능 차이는 호환성을 확인해 주십시오.
현재 공식 지원 범위
- 메인 Body
SkinnedMeshRenderer하나가 크기와 기본 이펙트 방출의 기준이 됩니다. - 그 Body의 여러 Material Element를 설정할 수 있습니다.
- 얼굴 같은 별도
SkinnedMeshRenderer대상은 자기 Rest 데이터·마스크·마테리얼·드로우 부하를 가진 실험적 기능으로 지원합니다. - 전환되는 모든 Body 배치를 자동으로 처리하는 것은 보장하지 않습니다. 대상은 직접 설정해야 합니다.
- 모든 외부 최적화·메쉬 병합·마테리얼 병합·빌드 중 변환 도구 조합과의 호환은 보장하지 않습니다.
실험적 Face 대상은 아바타의 BlendShape, 표정, Face Tracking 구성과 함께 확인해야 합니다. 눈·입술 주변 Tess는 권장하지 않습니다.
동기화 파라미터
아래 값은 휴머노이드 자동 모드와 나에게만 보이기를 포함한 표준 선택 토글을 설치했을 때의 최대치입니다. 설치 창은 없는 모듈, 끈 이펙트, 사용할 수 없는 기능의 파라미터를 만들지 않으므로 실제 비용은 더 낮을 수 있습니다.
| 구성 | 표준 동기화 비용(최대) | 몸 김·입김 진하기 포함 |
|---|---|---|
| Base / No Tess | 21bit | 해당 없음 |
| Base / 물방울 입체감(Tess) 포함 | 22bit | 해당 없음 |
| Effects | 23bit | 31bit |
| Full Pack / No Tess | 26bit | 34bit |
| Full Pack / 물방울 입체감(Tess) 포함 | 27bit | 35bit |
v2.0.0은 'VRC 라이트 볼륨' 메뉴 토글과 그 동기화 파라미터(1bit)를 없앴습니다. 선택형 저장·동기화 몸 김·입김 진하기 Float는 Effects와 Full 설치에 8bit를 더하며, Base만 설치한 구성은 바뀌지 않습니다. Base와 Full Pack 값에는 젖은 피부 막 토글 1bit가 들어 있습니다. 이 토글은 Setup의 젖을수록 피부 광택이 켜져 있을 때만 설치됩니다.
입김은 기존 Cooki/SweatAmount Float를 함께 사용하므로 동기화 Float 파라미터를 추가하지 않습니다. 운동 강도·체열·낙하 활동·피부 젖음 같은 내부 신호는 NotSynced라 파라미터 비용이 없습니다. 메뉴 땀양은 1% 단위로 갱신되며, 원격 Float 동기화 정밀도는 약 1/127(0.8%)입니다.
땀 마테리얼과 동시 드로우
아래 마테리얼 수는 Base가 관리하는 Body 땀 표면 마테리얼만 셉니다. Effects의 파티클 마테리얼은 포함하지 않습니다.
| Base 설치 설정 | 설정한 대상당 마테리얼 | 설정한 대상당 드로우 |
|---|---|---|
| 물방울 입체감 미설치 | No Tess 마테리얼 하나(RealSweatSystem No Tessellation) | 1 |
| 물방울 입체감 설치 | Tess + No Tess, 마테리얼 두 개 | 1 |
| Effects만 설치 | Body 땀 마테리얼 추가 없음 | 0 |
물방울 입체감을 설치해도 Tess와 No Tess를 함께 그리지 않습니다. 설정한 슬롯마다 둘 사이를 전환합니다. 따라서 여러 Body Element와 추가 Renderer를 고르면 여러 땀 마테리얼이 동시에 그려질 수 있습니다.
- 셰이더 이름은
RealSweatSystem No Tessellation과RealSweatSystem입니다. 렌더 큐가 2350이 아닌 땀은 이름 뒤에(Late Queue)가 붙은 셰이더를 사용합니다. - 아바타는 고른 땀 스타일의 셰이더만 씁니다.
- 튀김은 파티클 시스템 2개와 마테리얼 칸 2개를 추가합니다.
PhysBone과 Collider
| 항목 | 설치 창이 만드는 수 |
|---|---|
자동 모드 VRCPhysBone | 호환 Rig에서 1개, 수동 모드만 설치하면 0개 |
VRCPhysBoneCollider | 0개 |
자동 모드 PhysBone은 RealSweat 아래의 전용 움직임추에 만들어집니다. Real Sweat System은 가슴·머리카락·의상 등에 쓰이는 기존 PhysBone이나 Collider를 의도적으로 편집하지 않습니다.
Real Sweat System의 표준 설치는 기존 PhysBone을 편집하지 않습니다. Play Mode의 최종 구성에서 뼈나 컴포넌트를 병합하는 다른 도구, 아바타 Constraint, 다른 빌드 중 변경이 있는지 확인해 주십시오.
Rest Vertex Data
Base Module은 설정한 표시 메쉬마다 버텍스별 Rest 데이터 텍스처 세 개를 만듭니다.
- Rest Position
- Rest Normal
- Rest Tangent
새 모양은 Rest 데이터가 맞는 곳에만 땀을 그립니다. 1.1.x처럼 UV 무늬로 대신 그리지 않습니다. 설치 창이 Rest 데이터를 자동으로 굽기 때문에 보통은 신경 쓸 필요가 없습니다.
- 아직 설치하지 않은 마테리얼이나 굽기 뒤에 바뀐 메쉬는 Scene 뷰에 땀이 보이지 않을 수 있습니다. 마테리얼 인스펙터 맨 위의 Rest 데이터 칸과 Tuning의 메쉬 및 Rest 데이터 진단이 이 경우를 알려 줍니다. 메쉬가 바뀌었으면 다음 빌드(업로드) 때 최종 메쉬로 다시 굽습니다.
- 위 방향은 휴머노이드 뼈(Hips→Head)로 정하며, 메쉬 안에서 몸이 축의 음수 방향으로 서 있어도 맞게 저장합니다. 휴머노이드가 아닌 아바타는 메쉬 모양(가장 긴 축)으로 정합니다.
- Rest 데이터는 Material Element가 아니라 메쉬마다 만듭니다. 한 Renderer의 여러 Element는 같은 메쉬 대응을 함께 쓰고, 별도 Renderer/메쉬는 자기 Rest 데이터를 받습니다.
- Rest Vertex Data Baker는 메쉬를 읽고 생성한 텍스처를 대상 땀 마테리얼에 연결합니다. 원본 FBX,
sharedMesh, UV, BlendShape, 다른 마테리얼은 직접 수정하지 않습니다. Rest 데이터는 특정 메쉬 구성에 맞춰져 있으므로, 생성 땀 마테리얼과 Rest 데이터를 다른 대상과 공유하면 안 됩니다.
설치 뒤에 Body 메쉬를 교체하거나, 버텍스 구성을 바꾸거나, Submesh를 병합하면 Rest 데이터와 최종 표시 메쉬의 대응이 깨질 수 있습니다.
물방울 크기와 무늬
- 물방울 크기는 아바타의 몸 크기에 맞춰 자동으로 정합니다. 몸통과 다리의 휴머노이드 뼈 길이로 재므로 머리카락, 모자, 자세, 메쉬 단위(cm/m)의 영향을 받지 않고, 어느 아바타에서도 물방울이 몸에 비해 같은 크기입니다. 바운딩 박스는 쓰지 않습니다.
- 얼굴 같은 다른 메쉬도 바디와 같은 크기가 되고, 아바타 배율을 바꾸면 물방울도 같은 비율로 바뀝니다. 휴머노이드가 아닌 아바타는 시점 위치(눈높이)로 잽니다. 크기를 더 바꾸려면 물방울 크기를 사용해 주십시오.
- 설치 창이 아바타마다 무늬 번호를 한 번 정해 Tuning에 저장하고, 그 아바타의 모든 땀 마테리얼(다른 메쉬 포함)에 씁니다. 그래서 같은 아바타 두 명이 같은 자리에 땀을 흘리지 않습니다. 다시 설치해도 번호는 그대로입니다.
- 제거한 뒤 새로 설치하면 새 번호를 받습니다. 복제한 아바타도 설치 창이 새 생성 폴더를 만들 때 새 번호를 받습니다.
- 물방울은 10
25초 동안 남고, 흐른 자국은 물방울이 멈춘 뒤 25초 안에 마릅니다.
렌더 큐와 그림자
- 렌더 순서 자동 (권장)은 기본 Body의 땀을 렌더 큐 2350에 그립니다.
- 2350 이상인 바디 마테리얼(불투명·Cutout)은 [설치 / 업데이트]가 2349로 낮출지 한 번 묻고, 제거할 때 되돌립니다. 그대로 두기를 고르면 땀을 그 마테리얼 중 가장 높은 큐 + 1에 그리며, 2459를 넘지 않습니다.
- 추가 대상은
max(바디 땀 렌더 큐(보통 2350), 선택 마테리얼 렌더 큐 + 1)을 사용합니다. - 자동 순서를 쓸 수 없을 때는 수동 큐를 쓸 수 있지만, 2501 이상의 값은 투명 정렬의 영향을 받습니다.
- 렌더 큐가 2350이 아닌 땀은 RealSweatSystem (Late Queue) 셰이더를 사용하며, 그릴 때 화면을 따로 복사합니다.
- 바디 Shadow Strength 따라가기를 켜면 [설치 / 업데이트] 또는 FX에 적용이 대상 Body 마테리얼의
_ShadowStrength를 땀 마테리얼로 복사합니다.
자세한 내용과 예외는 호환성을 확인해 주십시오.
물방울 입체감·상대 저부하·이펙트의 기술 동작
물방울 입체감 (테셀레이션)
물방울 입체감은 Base Module의 선택 기능입니다. 켜 두면 가까이에서 물방울과 흘러내리는 물방울이 피부 위로 실제로 솟아, 두 땀 스타일 모두에서 옆에서 봐도 둥글게 보입니다. 가까이에서는 GPU 부하가 늘어나며, 기본 정밀도(간소화)에서는 약 0.7 m보다 멀면 입체감이 없을 때와 똑같이 그립니다. 설치하지 않으면 No Tess 마테리얼 하나만 올라갑니다.
상대 저부하
상대 저부하는 Base를 설치하면 사용할 수 있습니다.
- 피부 땀: 상대 화면은 No Tess로, 땀구멍의 작은 물방울 없이 그리고, 저부하와 경량에서는 잔류 방울과 애니의 얇은 막 선도 빼며 면의 방향이 바뀌는 곳의 처리를 줄입니다(상대의 GPU 시간이 저부하에서 약 4
8%, 표준에서 2329% 줄어듦). - 상대 저부하에서는 물방울 입체감이 솟지 않습니다.
- 내 화면: 내가 고른 품질과 물방울 입체감 상태를 유지합니다.
- 몸 김: 상대 몸 김/Custom Steam은 개수는 그대로 진하기를 0.6배로 낮춥니다(3D 몸 김은 개수 25%).
- 3D 파티클: 상대 낙하 물방울을 50%로 줄이고 강한 움직임 추가 방울을 끕니다.
- 동시 드로우: 설정한 대상마다 땀 마테리얼 하나입니다.
거울과 조명
- 거울에서도 땀 고품질은 선택 기능이며 기본값이 꺼짐입니다. 꺼져 있으면 거울에서는 땀구멍의 작은 물방울을 빼고 그리고, 물방울 입체감도 솟지 않습니다. 켜면 거울에서도 원래 화면과 같게 그립니다.
- 거울 속 몸 김은 Full, Low, Hidden입니다. 2D
Low는 파티클 수를 줄이지 않은 채 거울 속 몸 김을Full의 0.8배 진하기로 그립니다. 3DLow는 현재Full과 같은 표현과 부하를 사용합니다. - 피부 땀의 주변광은 Unity 라이트 프로브(SH)만 씁니다. VRC Light Volumes 지원은 v2.0.0에서 없어졌습니다.
- Light Limit Changer로 아바타의 밝기를 바꾸면 피부 땀도 같은 비율로 따라갑니다(바디 피부가 lilToon이나 Poiyomi일 때).
이펙트
Effects Module은 낙하 물방울, 튀김, 바닥 물자국, 입김, 몸 김에 파티클을 사용합니다. 기본은 가벼운 2D 방식이며, 선택형 고부하 3D 파티클은 입김·낙하 물방울·몸 김을 메시 파티클로 그립니다. 설치 때 고른 이펙트만 토글과 파라미터를 추가하며, 각각 인게임에서 끌 수 있습니다.
- 낙하 물방울과 튀김은 땀 스타일을 따르며, Effects Module만 있으면 실사 모양을 씁니다(2.0.0으로 이미 설치한 아바타는 그때의 모양을 그대로 씁니다). 낙하 방울 최대 개수 (시스템별) 기본값은 12이고, 강한 움직임 방울은 그 2/3인 8개까지 씁니다.
- 바닥 물자국은 낙하 물방울의 충돌 하위 이펙트라 낙하 물방울이 켜져 있을 때만 사용할 수 있습니다. 충돌은 월드의 Default·Environment 레이어를 쓰고 아바타·Player 계열 레이어는 제외하므로, 월드 바닥의 Collider나 레이어가 맞지 않으면 물자국이 생기지 않을 수 있습니다.
- 입김과 몸 김은 필요한 Head와 Chest 앵커를 찾을 수 있을 때만 생성됩니다.
- 몸 김: 기본값에서 최대 파티클 수는 몸 김 12곳 131, 기본 설치 7곳 95입니다.
- 3D 몸 김·입김: 기본 설치의 Mesh Particle Active Polys는 92입니다.
- 활성 Custom Steam 슬롯은 최대 4개이며 좌우 미러 페어는 2개를 사용합니다. 내장/Custom을 합쳐 10개를 넘으면 거울 부하 경고가 표시되고 총 12개가 상한입니다. 발생량 가중치 합계가
4.0을 넘으면 같은 비율로 줄입니다.
생성 대상 무결성과 빌드 중단
설치 창은 실험적 추가 대상마다 예상되는 생성 마테리얼과 Renderer 슬롯을 기록합니다. 생성 슬롯이 없거나, 비었거나, 이동·교체·병합되면 설치 손상으로 처리합니다.
- Tuning에 복구 필요가 표시됩니다.
- 아바타 빌드는 다른 마테리얼 슬롯으로 대체하거나 대상을 조용히 생략하지 않고 중단됩니다.
- 추가 대상 관리... 또는 설치 창에서 복구...를 누른 뒤 [설치 / 업데이트]로 복구하거나 제거해 주십시오.
빌드 중 메쉬를 바꾸는 도구
Unity 에디터에서는 땀이 정상인데 VRChat에서만 위치·모양·표시가 깨진다면, 다른 빌드 중 도구가 다음 중 하나를 바꾸고 있을 수 있습니다.
- 대상 Body Renderer 또는 메쉬
- 버텍스 또는 Submesh 구성
- 마테리얼 슬롯 순서
- Rest 데이터가 참조하는 최종 표시 메쉬
그 도구에 제외 목록이 있다면 Real Sweat가 사용하는 Body Renderer를 최적화·병합 대상에서 제외해 주십시오. Body Renderer를 제외하는 기능이 없다면 그 도구와의 호환성은 보장할 수 없습니다.
메쉬 변경을 먼저 끝낼 수 있는 작업 흐름이라면, 최종 메쉬를 만든 뒤 Real Sweat System 설치를 실행해 주십시오. 메쉬가 빌드 중에만 바뀐다면 그 구성의 최종 결과와의 호환성을 직접 확인해야 합니다.
알려진 제한
- Rest 데이터가 맞지 않으면 땀을 그리지 않습니다. 설치 전의 마테리얼이나 굽기 뒤에 바뀐 메쉬가 그렇습니다(다음 빌드에서 다시 구울 때까지).
- 물방울 입체감은 가까이에서 GPU 부하가 늘어나는 고부하 옵션입니다.
- 땀 0%와 땀 표시 끄기는 완전히 공짜가 아닙니다. 굴절을 위한 화면 복사(GrabPass, 약 +0.05 ms)가 남습니다. 부하가 없어지는 것은 피부 땀 숨기기뿐입니다.
- 상대 저부하: 면의 방향이 바뀌는 곳(몸통 옆, 팔 등)에서 다른 사람 화면의 물방울 아래쪽 끝이 곧게 잘려 보일 수 있습니다. 드물고 작은 차이입니다.
- 실사: 접힌 곳(배꼽 위 등)에서는 작은 물방울이 두 쪽으로 갈라져 보일 수 있고, 물방울끼리 실제로 합쳐지지는 않습니다. 실사의 경량은 실사의 저부하·표준과 물방울 배치가 조금 다릅니다.
- 옷에 맺히는 RealRain 자체의 실사 빗방울은 RealRain 업데이트로 제공됩니다. RealRain이 피부에 묻히는 빗물은 이미 땀 스타일을 따릅니다.
- 2.0.0에는 이전 모양이 들어 있지 않습니다. 이전 모양을 유지하려면 v1.1.3을 계속 사용해 주십시오.