Files
2nd/10_Wiki/Topics/AI_and_ML/에셋 재사용(Asset Reuse).md
T
2026-05-10 22:08:15 +09:00

175 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.00.25 v: stone trim
├─ 0.250.5 v: wood trim
├─ 0.50.75 v: metal trim
└─ 0.751.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]] · [[Game Optimization]]
- 변형: [[Modular Asset Design]] · [[Procedural Generation]]
- 응용: [[Open World Architecture]] · [[Live Service Content]]
- Adjacent: [[GPU Instancing]] · [[Atlas Packing]] · [[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. |