[개발 일지] 8일차: 툰 쉐이더 적용 & FBX 임포트 자동화 (feat. Antigravity)
*본 개발 일지는 Google의 차세대 AI 에이전트 **'Antigravity'*와 함께 작성되었습니다.
🏗️ 8일차 개발 목표: "캐릭터의 숨결과 공정의 효율화"
오늘은 시스템적인 완성도를 넘어, 게임의 시각적 정체성을 확립하는 날입니다. 기본 URP Lit 쉐이더의 사실적인 느낌 대신, SRPG 특유의 아기자기함을 살릴 **카툰 렌더링(Toon Shading)**을 구축했습니다.
또한, 수많은 캐릭터 에셋을 일일이 설정하는 번거로움을 해결하기 위해 FBX 자동 임포트 자동화 툴을 완성하여 개발 생산성을 극대화했습니다.
1. 커스텀 URP 툰 쉐이더 구현 (SimpleToonWithOutline)
Shader Graph 대신 제어력이 높은 HLSL 코딩을 통해 쉐이더를 작성했습니다.
🎨 주요 구현 기능
- Cel Shading (Ramp Lighting): 빛의 각도($N \cdot L$)에 smoothstep을 적용하여 명암 경계를 뚜렷하게 처리했습니다. Ramp Smoothness 파라미터로 경계의 부드러움을 실시간 조절할 수 있습니다.
- Backface Extrusion Outline: 모델의 뒷면(Backface)을 노멀 방향으로 미세하게 확장한 후 검은색으로 렌더링하여, 모델링 데이터에 상관없이 일정한 외곽선을 생성합니다.
- Rim Light: 캐릭터 외곽에 역광 효과(Fresnel)를 부여하여 3D 공간 내에서의 입체감을 확보했습니다.
High-level shader language
// Toon Ramp 계산 핵심 로직
float halfLambert = NdotL * 0.5 + 0.5;
float ramp = smoothstep(_RampThreshold - _RampSmoothness, _RampThreshold + _RampSmoothness, halfLambert);
float3 finalColor = lerp(shadeColor, litColor, ramp);
2. FBX 자동화 툴 개선 (FBXAutoSetupTools.cs)
캐릭터 에셋이 추가될 때마다 반복되는 단순 작업을 **"우클릭 한 번"**으로 끝내도록 툴을 고도화했습니다.
🛠️ 트러블 슈팅 & 해결 (The Senior's Perspective)
| 문제 상황 | 원인 분석 | 해결책 |
| 머티리얼 추출 실패 | LoadAllAssetsAtPath가 FBX 내부 데이터를 잡지 못함 | GameObject로 임시 로드 후 GetComponentsInChildren<Renderer>()를 통해 실제 연결된 머티리얼을 추적하는 로직으로 변경 |
| 변경 사항 휘발 | 쉐이더 변경 후 유니티 재시작 시 원복됨 | EditorUtility.SetDirty(mat) 마킹 후 AssetDatabase.SaveAssets() 호출로 디스크 저장 강제화 |
3. 최종 결과물: "0.1초 만에 완성되는 에셋 셋업"
이제 새로운 캐릭터 FBX를 프로젝트에 넣고 메뉴 버튼 하나만 누르면 다음 과정이 즉시 완료됩니다.
- Rig 설정: 자동으로 Humanoid 타입 전환 및 아바타 생성
- 리소스 정리: 텍스처 추출 및 전용 폴더 자동 분류
- 쉐이더 할당: 커스텀 툰 쉐이더가 적용된 머티리얼 자동 매칭
📊 8일차 개발 통계
- 신규 쉐이더: 1종 (HLSL 기반 커스텀 툰 쉐이더)
- 자동화 기능: 3단계 통합 (Rig, Texture, Material)
- 작업 효율: 캐릭터당 셋업 시간 약 95% 단축


반응형
'AI > Unity' 카테고리의 다른 글
| 나노바나나를 이용하여 Tripo3D에서 3D 캐릭터 모델링 추출하기. (2) | 2026.01.21 |
|---|---|
| Unity 6 Unity.AI.Toolkit.EditorTask 무한로딩 (0) | 2026.01.20 |
| AnityGravity를 이용한 SRPG만들기 7일차 (AI모델 자동익스포터 툴 제작) (0) | 2026.01.20 |
| AnityGravity를 이용한 SRPG만들기 6일차 (0) | 2026.01.18 |
| tripo3d에서 FBX 추출 후 유니티에 적용하기 - 애니메이션 (2). (3) | 2026.01.18 |