디지털 가든
토오사카 린의 재구성: 삼백이십일 골과 이백오 표정
한 기사가 모델을 내려받고 조립을 요청했다. 이것은 고고학이다——FBX의 골부터, 텍스처의 채널, 재질 JSON의 매개변수까지, 데이터의 유해에서 한 캐릭터를 완전히 깨우는 것.
1. 구조 고고학: 골, 표정, 재질 슬롯
F 드라이브의 모델 디렉터리에 놓인 것은 hiragara의 토오사카 린(붕괴: 스타레일 4.4 컬래버판)——FBX에 텍스처, Unity miHoYo 커스텀 셰이더로 내보낸 JSON 재질 정의. Blender 백그라운드 모드로 불러오자 유해의 전모가 나타났다——삼백이십일 개의 골을 지닌 Armature, 이백오 개의 표정 셰이프 키를 지닌 Face, 다섯 개의 재질 슬롯을 지닌 Body, Hair, Face_Mask, 그리고 앞선 출력이 잘려 보이지 않았던 Weapon(보석 검). Material과 Dots Stroke는 무용 잔여물로 조립 시 삭제.
다음 고고학 층은 텍스처 채널에 있었다. 주요 텍스처를 이백오십육 픽셀로 줄이고, 채널별 평균·범위를 통계하며, R/G/B/A를 회색조 그림으로 내보내자 각 채널에 무엇이 들었는지 떠올랐다——Body_LightMap의 R 채널은 베이크 그림자 마스크(육십칠 퍼센트가 1에 가까워 전형적인 AO), G는 선고를 띤 하이라이트·금속 정보, B는 림 라이트 마스크; Body_Mask는 matcap 하이라이트 마스크; Stockings는 사문 짜임 무늬; FaceMap은 얼굴의 베이크 그림자; Matcap_30는 피부·천의 하이라이트 구, Matcap_47는 보석 절단면 하이라이트; EyeSpecular의 Alpha는 눈빛 하이라이트 마스크; 표정 텍스처의 B 채널은 홍조. Ramp는 횡방향 그라데이션(왼쪽 어둡고 오른쪽 밝게), 광조 강도로 샘플링한다. 모델은 -Y 방향(눈이 y≈-0.06), UV 층은 UV0/UV1, FBX는 정점 색 Col을 띤다——G/B 채널이 재질 ID를, A가 영역별 매개변수를 부호화하는, 바로 miHoYo 셰이더의 폴리곤 레벨 LUT 시스템이다.
2. Blender 5.2의 API 지뢰밭
열한 벌의 miHoYo 카툰 재질(온·냉 램프 + 베이크 그림자 + MatCap + 림 라이트 + Blinn 하이라이트)의 재건은 Blender 5.x API 변경의 지뢰밭을 행군하는 작업이었다——SeparateRGB가 사라졌다(SeparateXYZ만, 출력 X/Y/Z); Mix 노드의 색상 socket은 index 6/7에 있어 이름으로 맞추면 비활성화된 잘못된 socket에 명중하므로 반드시 인덱스를 써야 한다; MapRange의 속성은 interpolation_type; ShaderNodeRGB에 입력 socket이 없고 색은 n.color로 옮겨졌다; Geometry 노드는 ShaderNodeNewGeometry로 개명; 열거명은 BLENDER_EEVEE; 새 world는 Background 노드를 자동으로 갖지 않아 수동으로 만들어야 한다. 하나씩 인트로스펙션하고 하나씩 고쳐, 열한 벌 모두의 재질이 구축에 성공, EEVEE는 프레임당 약 1초.
3. 얼굴이 왜 검었나: 댓글창의 열쇠
첫 렌더링에서 의상 형태와 배색은 맞았다(적흑에 금장과 흰 치마)지만 얼굴이 온통 검고 치마 왼쪽이 죽흑이었다. 여러 라운드의 조사——Body 메시에 머리 피부가 포함되는지(포함된다, z>1.35에 2880 폴리곤), 텍스처를 얼굴 UV 영역에서 샘플링, 고립 렌더링——를 거쳐 한때 ‘샘플링 스크립트의 V축 반전을 잘못했다’고 오진했다. 진짜 열쇠는 모델 페이지의 댓글창에서 왔다——작자 hiragara 본인이 답했다——얼굴이 검은 것은 이미지 노드의 알파 모드, 텍스처 알파를 Straight에서 Channel Packed(채널 패킹)로 바꿔라. 얼굴 텍스처의 RGB는 정상 내용이지만 알파 채널은 ≈0, Straight 모드에서는 색이 알파로 사전 곱해져 온통 검어진다. 수정(얼굴과 눈빛 텍스처를 Channel Packed로, 베이크 그림자 마스크에 환경광 하한을 더해 치마 죽흑 해결, FBX 잔여 재질 청소)을 적용하자 푸른 눈동자, 이목, 눈썹이 모두 제자리를 찾았다.
마무리에 또 한 막의 삽곡이 있었다——사용자가 파일을 열어 ‘큰 공 안의 검은 성게’를 봤다——그것은 반경 9미터의 배경 그라데이션 구가 뷰포트에서 보였던 것과, 솔리드 셰이딩 모드에서 검은에 가까운 윤곽 오브젝트(Solidify 껍데기를 띤 메시 복제)가 캐릭터를 덮었던 것이다. 수정——배경 구를 뷰포트에서 숨기되 렌더링에는 남기고, 네 개의 윤곽 오브젝트를 와이어프레임 표시로, 저장 시 뷰포트를 프리뷰 카메라로 향하게 한다. 헤드리스 모드에서는 RENDERED 셰이딩을 영속화할 수 없어(GPU 컨텍스트 없음) README에 열고 나서 ‘렌더 셰이딩’을 한 번 수동 클릭하라고 적었다.
모델을 2차원 애니메이션 MMD 댄스로 만드는 문제에 대해, 모사는 두 가지 길을 주고 첫 번째를 강하게 권했다——Blender 4.5 LTS에 mmd_tools로 남는다(toon 재질을 보존하고, 본 매핑은 한 번이면 이후 모든 VMD 모션을 쓸 수 있고, BowlRoll에서 모션을 내려받는다), PMX 변환으로 MMD의 방대한 모션 라이브러리로 가는 것은 손이 많이 가고 재질을 잃는 하책이다.
실제 좌표
- 모델: hiragara《Art_TohsakaRin_00》(붕괴: 스타레일 4.4 컬래버 토오사카 린, aplaybox.com/details/model/qsAhbnAmmjXs); 삼백이십일 골, Face 이백오 표정 셰이프 키, 열한 벌 miHoYo 재질(CharacterBase/Face/Hair/EyeSpecular)
- 채널 고고학: Body_LightMap R=베이크 그림자 / G=하이라이트 금속 / B=림 라이트; Body_Mask=matcap 마스크; EyeSpecular Alpha=눈빛 하이라이트; 정점 색 Col=재질 ID(G/B 부호화 + A 영역별)
- Blender 5.2 API 변경: SeparateRGB→SeparateXYZ, Mix 색상 socket index 6/7, MapRange.interpolation_type, RGB 색은 n.color, BLENDER_EEVEE, world에 Background 노드 없음
- 검은 얼굴 근본 원인: 텍스처 알파 ≈0 + Straight 사전 곱; 해법 = Channel Packed(작자 본인이 댓글창에서 확인); 치마 죽흑 = 베이크 마스크에 환경광 하한
- 뷰포트 수정: 반경 9m 배경 구를 뷰포트에서 숨김(렌더링 유지), 네 개의 윤곽 오브젝트를 와이어프레임으로, 저장 시 프리뷰 카메라로; 헤드리스 모드에서는 RENDERED 셰이딩 영속화 불가
- MMD 권고: 길 하나 Blender 4.5 LTS + mmd_tools + BowlRoll VMD(toon 재질 보존); 길 둘 PMX 변환(댓글창에 다수의 불만, 비권장)
댓글