--- id: wiki-2026-0508-에셋-재사용-asset-reuse title: 에셋 재사용(Asset Reuse) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Asset Reuse, Asset Library, 모듈러 에셋] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [gamedev, assets, pipeline, modularity, optimization] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: gamedev framework: unity-unreal-godot --- # 에셋 재사용(Asset Reuse) ## 매 한 줄 > **"매 한 번 만든 에셋은 100번 사용된다"**. 게임/콘텐츠 production 의 cost curve 를 평탄화하는 매 가장 강력한 lever — modular kit, prefab variant, material instance, atlas/trim sheet 의 조합으로 art budget 을 5-10x 확장할 수 있다. 2026 의 AI gen pipeline 도 결국 reusable seed asset 으로 수렴. ## 매 핵심 ### 매 reuse 의 layer - **Geometry**: kitbash, modular wall, trim sheet, tileable mesh. - **Material**: master material + parameter, layered shader, texture atlas. - **Animation**: shared rig, retargeting, additive layer, montage. - **Audio**: oneshot pool, granular synth, randomized variation. - **VFX**: parameterized particle template, shader-based effect. ### 매 modular kit 원칙 - **Grid snap**: 1m / 2m / 4m 의 standard pivot. - **Trim sheet UV**: shared 2K texture 로 100+ pieces. - **Material slot consistency**: 같은 master material + param. - **Naming**: `SM_Wall_2m_A`, `M_StoneBrick_Inst_Mossy`. ### 매 응용 1. Open-world building 의 modular architecture. 2. Character outfit 의 mix-and-match layered system. 3. AI image gen 의 character LoRA + style LoRA 의 조합. ## 💻 패턴 ### Trim sheet UV layout ``` 2048×2048 trim sheet ├─ 0.0–0.25 v: stone trim ├─ 0.25–0.5 v: wood trim ├─ 0.5–0.75 v: metal trim └─ 0.75–1.0 v: tileable wall → 50+ pieces share 1 texture, 1 draw call ``` ### Unreal Material Instance ```cpp // Master Material exposes parameters ScalarParameter "Roughness" default 0.5 VectorParameter "BaseColorTint" default (1,1,1,1) TextureParameter "BaseColorMap" default T_Default // Instance overrides only what differs MI_Stone_Mossy: BaseColorTint = (0.7, 0.9, 0.6, 1) Roughness = 0.8 BaseColorMap = T_Stone_Albedo ``` ### Unity Prefab Variant ```csharp // Base Prefab: Building_Module_Wall.prefab // Variant: Building_Module_Wall_Window.prefab // - Inherits all components // - Overrides: adds WindowFrame child // - Overrides: Material slot 1 = M_Glass // Code-side: spawn variant var wall = PrefabUtility.InstantiatePrefab(wallVariant) as GameObject; ``` ### GPU instancing ```glsl // vertex shader — per-instance transform layout(location = 5) in mat4 instanceMatrix; layout(location = 9) in vec4 instanceColor; void main() { gl_Position = projection * view * instanceMatrix * vec4(aPos, 1.0); vColor = instanceColor; } // → 10000 trees, 1 draw call ``` ### Sprite atlas (2D) ```json { "frames": { "hero_idle_0": { "frame": {"x":0,"y":0,"w":64,"h":64} }, "hero_idle_1": { "frame": {"x":64,"y":0,"w":64,"h":64} }, "hero_run_0": { "frame": {"x":0,"y":64,"w":64,"h":64} } }, "meta": { "image": "hero.png", "size": {"w":1024,"h":1024} } } ``` ### Animation retargeting ```python # Maya / Blender — retarget Mixamo to custom rig source_rig = "Mixamo_Y_Bot" target_rig = "MyHero_Skeleton" bone_map = { "mixamorig:Hips": "pelvis", "mixamorig:Spine": "spine_01", "mixamorig:LeftArm": "upperarm_l", # ... } retarget(source_rig, target_rig, bone_map, anim_clip) # 1 anim → N characters ``` ### AI gen 의 seed reuse ```python # Stable Diffusion / FLUX — same character LoRA, vary scene from diffusers import FluxPipeline pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev") pipe.load_lora_weights("./hero_lora.safetensors") scenes = ["forest at dusk", "neon alley", "snowy peak"] for s in scenes: img = pipe(f"hero character, {s}", generator=torch.Generator().manual_seed(42)).images[0] # → consistent character across scenes ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | 같은 mesh, 다른 material | Material Instance | | 같은 mesh, 다른 transform | GPU Instancing | | 비슷한 변형 prefab | Prefab Variant | | 50+ small textures | Atlas / Trim sheet | | character anim library | Retarget shared lib | | AI generated assets | LoRA + seed lock | **기본값**: master material + instance, modular grid kit, shared atlas. ## 🔗 Graph - 부모: [[Asset Pipeline]] - 변형: [[Procedural Generation]] - Adjacent: [[GPU Instancing]] · [[LoRA Fine-tuning]] ## 🤖 LLM 활용 **언제**: kit naming convention 작성, material parameter schema, prefab variant tree planning, asset audit checklist. **언제 X**: hero asset 의 unique sculpt — handcraft 가 정답. ## ❌ 안티패턴 - **Copy-paste duplication**: 매 새 변형마다 mesh duplicate — texture memory blowup. - **No naming convention**: `wall_01_final_FINAL_v3.fbx` 의 chaos. - **Atlas without padding**: bleeding artifact at mip levels. - **Over-modularity**: 0.5m grid 의 piece 가 너무 많아 매 build cost 증가. ## 🧪 검증 / 중복 - Verified (Unreal Engine 5.4 docs, Unity 6 manual, GDC asset pipeline talks 2024-2025). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — modular asset reuse 의 production patterns. |