├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
└── README_Source
├── BothShake.gif
├── Brush.gif
├── Cylinder.png
├── FlyHigh.jpg
├── Girl.png
├── Grid.gif
├── LION.png
├── MP.png
├── Man.png
├── REMEMBER.jpg
├── RockBoth.gif
├── RockOne.gif
├── SUPERPOWER.jpg
├── Sphere.png
├── Stress1.PNG
├── Stress2.PNG
├── Timeline.gif
├── Title.jpeg
├── WXY.jpg
└── WaveOne.gif
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.gif filter=lfs diff=lfs merge=lfs -text
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Uu]ser[Ss]ettings/
12 |
13 | # MemoryCaptures can get excessive in size.
14 | # They also could contain extremely sensitive data
15 | /[Mm]emoryCaptures/
16 |
17 | # Recordings can get excessive in size
18 | /[Rr]ecordings/
19 |
20 | # Uncomment this line if you wish to ignore the asset store tools plugin
21 | # /[Aa]ssets/AssetStoreTools*
22 |
23 | # Autogenerated Jetbrains Rider plugin
24 | /[Aa]ssets/Plugins/Editor/JetBrains*
25 |
26 | # Visual Studio cache directory
27 | .vs/
28 |
29 | # Gradle cache directory
30 | .gradle/
31 |
32 | # Autogenerated VS/MD/Consulo solution and project files
33 | ExportedObj/
34 | .consulo/
35 | *.csproj
36 | *.unityproj
37 | *.sln
38 | *.suo
39 | *.tmp
40 | *.user
41 | *.userprefs
42 | *.pidb
43 | *.booproj
44 | *.svd
45 | *.pdb
46 | *.mdb
47 | *.opendb
48 | *.VC.db
49 |
50 | # Unity3D generated meta files
51 | *.pidb.meta
52 | *.pdb.meta
53 | *.mdb.meta
54 |
55 | # Unity3D generated file on crash reports
56 | sysinfo.txt
57 |
58 | # Builds
59 | *.apk
60 | *.aab
61 | *.unitypackage
62 | *.unitypackage.meta
63 | *.app
64 |
65 | # Crashlytics generated file
66 | crashlytics-build.properties
67 |
68 | # Packed Addressables
69 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
70 |
71 | # Temporary auto-generated Android Assets
72 | /[Aa]ssets/[Ss]treamingAssets/aa.meta
73 | /[Aa]ssets/[Ss]treamingAssets/aa/*
74 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 OneStart
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Unity_Fanlight
2 |
3 | 
4 |
5 | #### 관객석에서 응원봉을 흔드는 연출을 위한 시스템
6 | #### 메시 렌더링 및 애니메이션을 GPU 코딩으로 최적화
7 |
8 |
9 |
10 | ## 기능
11 | |내용|세부내용|
12 | |---|---|
13 | |GPU Instancing|드로우콜 최적화|
14 | |Compute Shader|Target LookAt, 컬링 및 LOD|
15 | |Vertex Shader|관객 애니메이션|
16 | |Scriptable Object|인스턴스 패키징|
17 | |Timeline Scripting|Fanlight 시스템 제어|
18 | |Support Cinemachine|VirtualCamera 대응|
19 |
20 |
21 |
22 | ## 인스턴스 생성
23 | |Default|Brush Painting|
24 | |:---:|:---:|
25 | |||
26 | |Grid 기반 범위 설정|브러쉬 페인팅 추가/제거|
27 |
28 |
29 |
30 | ## 인스턴스 정보
31 | ### 메시 타입
32 | |Human/Man|Human/Girl|Stick/Cylinder|Stick/Circle(추가예정)|
33 | |:---:|:---:|:---:|:---:|
34 | |||||
35 | |남자|여자|원기둥 응원봉|구형 응원봉|
36 | ### 애니메이션 타입
37 | |RockOne|RockBoth|WaveOne|ShakeBoth|
38 | |:---:|:---:|:---:|:---:|
39 | |||||
40 | |한팔 흔들기|양팔 흔들기|한팔 웨이브|환호|
41 |
42 |
43 |
44 | ## 타임라인 컨트롤
45 | 
46 |
47 | Fanlight Control을 담당하는 커스텀 트랙 및 클립
48 |
49 | 타임라인 프레임 연동과 사용자가 직접 BPM을 설정해서 노래 정박에 하이라이트 들어가게끔
50 |
51 | 클립 별 애니메이션, 응원봉 색 & 강도, 플리커링 이벤트 및 클립 간 모든 요소 블렌딩 기능
52 |
53 |
54 |
55 | ## 스트레스 테스트
56 | 테스트 환경
57 | - PC : 5950X / RTX 3080 / RAM 32GB
58 | - 인스턴스 수 : 22,500
59 | - 메시 폴리 카운트 : 157,680,000
60 | - 메시 버텍스 카운트 : 154,575,000
61 |
62 | |Prefab + Animator|Fanlight System|
63 | |:---:|:---:|
64 | |||
65 | |프레임 1.2|프레임 47.7|
66 | |배치카운트 53381|배치카운트 13|
67 | |패스콜 18020|패스콜 13|
68 |
69 |
70 |
71 | ## 사용 사례
72 | #### 비몽(BEEMONG) - Fly High Official MV
73 |
74 | ---
75 | #### W/X/Y - Tani Yuuki|Cover by 여르미 x 한결 x 비몽
76 |
77 | ---
78 | #### (여자)아이들((G)I-DLE) - LION Covered by 고여름 이주인 쿠우 한세긴 | 청백가요대전
79 |
80 | ---
81 | #### [청백가요대전] Miiro-「괴물이 피는 숲」 Cover by.비몽 feat.핑맨
82 |
83 | ---
84 | #### REMEMBER - 버튜버 청백가요대전 20명 단체곡
85 |
86 | ---
87 | #### [청백가요대전] SUPERPOWER - 나비&u32 (Cover) 4K
88 |
89 | ---
90 |
--------------------------------------------------------------------------------
/README_Source/BothShake.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a6b7cda55db6d807b82a6087bf043053cdf1098ce37ae5ed07fe73af9daebd00
3 | size 337293
4 |
--------------------------------------------------------------------------------
/README_Source/Brush.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:409335e7b7167f40c24d2a05cd6f45769a333d6180348f755d98b176b94852d4
3 | size 2814614
4 |
--------------------------------------------------------------------------------
/README_Source/Cylinder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Cylinder.png
--------------------------------------------------------------------------------
/README_Source/FlyHigh.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/FlyHigh.jpg
--------------------------------------------------------------------------------
/README_Source/Girl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Girl.png
--------------------------------------------------------------------------------
/README_Source/Grid.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:cd1915616333299e602a22e6efa2085855e5616f170025ccbbf31605efe80f59
3 | size 3502524
4 |
--------------------------------------------------------------------------------
/README_Source/LION.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/LION.png
--------------------------------------------------------------------------------
/README_Source/MP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/MP.png
--------------------------------------------------------------------------------
/README_Source/Man.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Man.png
--------------------------------------------------------------------------------
/README_Source/REMEMBER.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/REMEMBER.jpg
--------------------------------------------------------------------------------
/README_Source/RockBoth.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e72cdbc4347b4f766b7240b7d285723c9683ca5678751a53a8ded95a88678967
3 | size 197433
4 |
--------------------------------------------------------------------------------
/README_Source/RockOne.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:632dbcabee4820ced9e2c85dffd7768f524b7fce24f01e0ba834752f9bd61a72
3 | size 215223
4 |
--------------------------------------------------------------------------------
/README_Source/SUPERPOWER.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/SUPERPOWER.jpg
--------------------------------------------------------------------------------
/README_Source/Sphere.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Sphere.png
--------------------------------------------------------------------------------
/README_Source/Stress1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Stress1.PNG
--------------------------------------------------------------------------------
/README_Source/Stress2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Stress2.PNG
--------------------------------------------------------------------------------
/README_Source/Timeline.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:2d376bab5eaeae2e1dad308efa557e895729f82cb2a97feccea178bddd2b4f7a
3 | size 102971132
4 |
--------------------------------------------------------------------------------
/README_Source/Title.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/Title.jpeg
--------------------------------------------------------------------------------
/README_Source/WXY.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hanbyori/Unity_Fanlight/bd59231caa8d56d530b6da929e0ea3a4c423fb9e/README_Source/WXY.jpg
--------------------------------------------------------------------------------
/README_Source/WaveOne.gif:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:03ca586086e797f8dffa2751641bd790e2e508dc8eda4843717260d44cdc9ef7
3 | size 262090
4 |
--------------------------------------------------------------------------------