Files
2nd/10_Wiki/Topics/AI_and_ML/에셋 재사용(Asset Reuse).md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

174 lines
5.4 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]]
- 변형: [[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. |