← VFX 플랜 · 원본 5종 · 허브

절차 생성 VFX 5종 — 원본과 나란히

2026-09-10 · 서버 Unity 6000.3.22f1(빌트인 파이프라인) batchmode 빌드 → VNC :1에서 플레이어가 ScreenCapture로 60fps 프레임 저장 → PIL로 10fps GIF. 원본 프레임은 사용하지 않았고, 텍스처는 전부 tools/tex_*.py가 numpy/PIL로 생성.
🏖️ 만드는 법 한 줄 — 원본 그림을 베끼지 않고, "점·글로우·링·번개·잎사귀" 같은 도장(텍스처)을 파이썬으로 찍어낸 뒤, Unity 파티클 시스템이 그 도장을 언제·어디에·얼마나 크게·무슨 색으로 찍을지를 C# 코드로만 정했어요. 에디터 GUI는 한 번도 안 열었어요.
타격 히트 Assets/Fx/FxHit.cs
원본 (maplestory.io wz) · 8프레임
절차 생성 (Unity Particle System + PIL 텍스처) · 60fps 48프레임 → 10fps 8
섬광(glow) 1장 + PIL 번개 bolt0~3 무작위 회전 3장×4종 + 방사 스파크 40개 + 잔광 조각 25개
레벨업 Assets/Fx/FxLevelUp.cs
원본 (maplestory.io wz) · 20프레임
절차 생성 (Unity Particle System + PIL 텍스처) · 60fps 132프레임 → 10fps 22
금색 기둥(streak 3D 사이즈) + 바닥 불꽃 → 0.5s 단풍잎(PIL leaf) 상승 → 1.0s 광구·확장 링 2장·방사 광선 60개(Stretch 빌보드)
버프 오라 Assets/Fx/FxAura.cs
원본 (maplestory.io wz) · 24프레임
절차 생성 (Unity Particle System + PIL 텍스처) · 60fps 144프레임 → 10fps 24
PIL 타원 아크 시트 16프레임을 텍스처 시트 애니로 회전(2겹, 반대 위상) + 바닥 발광 + 번개 조각 상승. 색은 2.4s 주기 빨강↔파랑 그라데이션
회복 Assets/Fx/FxHeal.cs
원본 (maplestory.io wz) · 10프레임
절차 생성 (Unity Particle System + PIL 텍스처) · 60fps 72프레임 → 10fps 12
PIL 십자 18개 버스트 + 초당 10개, velocityOverLifetime으로 상승, 크기 커브 0→1→0.5→1→0 깜빡임 + 붉은 점 알갱이
투사체(마법 구슬) Assets/Fx/FxBall.cs
원본 (maplestory.io wz) · 10프레임
절차 생성 (Unity Particle System + PIL 텍스처) · 60fps 60프레임 → 10fps 10
코어 글로우(맥동) + PIL 플라즈마 노이즈 시트 8프레임 회전 겹침 + 외곽 번개 조각 + 날아갈 때만 보이는 TrailRenderer
보너스: 한 사이클 FxLab.Cycle()
구슬이 날아가(트레일) 오른쪽에서 명중(히트) · 79프레임

재현 명령

cd ~/prj/maple/7_unity_vfx
python3 tools/gen_textures.py        # PIL 텍스처 15장 → UnityProject/Assets/Fx/Resources/FxTex/
tools/record.sh build                # batchmode 빌드(FxBuilder.BuildAll) → 6종 녹화 → web/proc/ GIF·몽타주
./UnityProject/Build/fxlab.x86_64 --fx levelup --out /abs/dir --fps 60   # 개별 녹화
알게 된 것: ① 새 ParticleSystem은 원뿔 방출·초기속도 5가 기본이라 반드시 끄기 ② 렌더러 maxParticleSize 기본 0.5(화면의 절반)에 큰 링이 잘림 ③ Box 방출을 회전시키면 방출 방향(+z)도 같이 돌아 위치가 띠로 뭉침 → velocityOverLifetime 사용 ④ 루프 이펙트는 prewarm 없으면 첫 프레임이 빔 ⑤ 같은 셸 명령에 pkill -f 패턴이 있으면 자기 셸이 죽음(exit 144).