---
id: wiki-2026-0508-skybound-asset-generation-roadma
title: Skybound Asset Generation Roadmap
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Skybound Asset Pipeline, AI Asset Generation Roadmap]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [skybound, asset-gen, ai-pipeline, game-art]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: python
  framework: comfyui/flux/trellis
---

# Skybound Asset Generation Roadmap

## 매 한 줄
> **"매 Skybound 의 AI-augmented asset pipeline 의 phased rollout — concept (FLUX) → 3D (TRELLIS / Stable3D) → texture (Substance + AI) → animation (MotionGPT / Cascadeur)"**. 매 2026 의 production 의 reality 의 human-in-the-loop curation + AI bulk gen + style anchor / IP-Adapter 의 consistency. 매 raw gen X — 매 validated, retopologized, optimized asset 의 ship.

## 매 핵심

### 매 Phase rollout
- **P1 — Concept (Q1)**: FLUX.1 + IP-Adapter 의 style-locked concept art.
- **P2 — 3D bulk (Q2)**: TRELLIS / Stable3D + Meshy 의 props / debris.
- **P3 — Hero asset (Q3)**: hand-modeled + AI texture / detail pass.
- **P4 — Animation (Q4)**: MotionGPT / Cascadeur AI 의 rough → animator polish.

### 매 Pipeline gates
- **Style gate**: 매 IP-Adapter style anchor + reference sheet match score.
- **Tech gate**: tri count, UV layout, LOD, mat ID, collision.
- **Legal gate**: 매 training data audit, 매 attribution / licensing log.
- **Perf gate**: in-engine drawcall / VRAM budget.

### 매 응용
1. **Concept iteration** — 100 variant / day vs 5 manual.
2. **Bulk props** — 1000+ debris / clutter assets.
3. **Texture variations** — material library 의 PBR map 의 AI fill-in.
4. **Anim prototyping** — text-to-motion 의 rough pass.

## 💻 패턴

### FLUX + IP-Adapter (concept, ComfyUI)
```python
# 매 ComfyUI workflow 의 programmatic
import json, requests

workflow = {
    "checkpoint": {"name": "flux1-dev.safetensors"},
    "ip_adapter": {"image": "skybound_style_ref.png", "weight": 0.7},
    "prompt": "skybound aerial drone, weathered metal, neon trim, cinematic",
    "negative": "low quality, watermark, modern car",
    "sampler": {"steps": 28, "cfg": 3.5, "scheduler": "euler"},
    "size": [1024, 1024],
}
r = requests.post("http://comfy:8188/prompt", json={"prompt": workflow})
```

### TRELLIS image-to-3D
```python
from trellis.pipelines import TrellisImageTo3DPipeline
import imageio

pipe = TrellisImageTo3DPipeline.from_pretrained("microsoft/TRELLIS-image-large")
pipe.cuda()

img = imageio.imread("concept_drone.png")
out = pipe.run(img, sparse_structure_sampler_params={"steps": 12, "cfg_strength": 7.5})

# 매 mesh export
out["mesh"][0].export("drone.glb")
out["gaussian"][0].save_ply("drone.ply")
```

### Auto-retopology + LOD
```python
import bpy

def process_asset(input_path: str, out_dir: str, target_tris=[8000, 4000, 1500]):
    bpy.ops.wm.open_mainfile(filepath=input_path)
    obj = bpy.context.selected_objects[0]
    for i, tris in enumerate(target_tris):
        dec = obj.modifiers.new(name=f"LOD{i}", type="DECIMATE")
        dec.ratio = tris / len(obj.data.polygons)
        bpy.ops.object.modifier_apply(modifier=dec.name)
        bpy.ops.export_scene.gltf(filepath=f"{out_dir}/lod{i}.glb")
```

### Style anchor validation
```python
import open_clip, torch
from PIL import Image

model, _, preprocess = open_clip.create_model_and_transforms("ViT-L-14", pretrained="laion2b_s32b_b82k")

def style_score(generated: str, ref_sheet: list[str]) -> float:
    g = preprocess(Image.open(generated)).unsqueeze(0)
    refs = torch.cat([preprocess(Image.open(r)).unsqueeze(0) for r in ref_sheet])
    with torch.no_grad():
        gf = model.encode_image(g); rf = model.encode_image(refs)
        gf /= gf.norm(dim=-1, keepdim=True); rf /= rf.norm(dim=-1, keepdim=True)
    return float((gf @ rf.T).mean())

# Gate: 매 style_score < 0.78 의 reject
```

### Texture upscale + PBR fill
```python
# 매 albedo → normal / roughness / metallic 의 AI infer
from material_palette import infer_pbr  # hypothetical wrapper
maps = infer_pbr("worn_metal_albedo.png")
# returns {"normal": ndarray, "roughness": ndarray, "metallic": ndarray, "ao": ndarray}
```

### MotionGPT (text-to-motion rough)
```python
from motiongpt import MotionGPT
m = MotionGPT.from_pretrained("OpenMotionLab/MotionGPT-base")
clip = m.text_to_motion("drone hovers, scans, banks left and accelerates", length=120)
clip.save_bvh("drone_hover.bvh")
# 매 animator 의 BVH 의 polish, 매 final asset
```

### Pipeline orchestration (Prefect)
```python
from prefect import flow, task

@task
def gen_concept(prompt): ...
@task
def to_3d(image): ...
@task
def retopo(mesh): ...
@task
def validate(asset): ...

@flow
def asset_pipeline(brief):
    img = gen_concept(brief)
    mesh = to_3d(img)
    lods = retopo(mesh)
    if validate(lods):
        return lods
    raise ValueError("validation failed")
```

## 매 결정 기준
| Asset class | Approach |
|---|---|
| Hero character / boss | Hand model + AI texture pass |
| Bulk prop / debris | TRELLIS + auto-retopo |
| Concept exploration | FLUX + IP-Adapter |
| Material library | PBR-fill from albedo |
| Rough animation | MotionGPT → animator polish |

**기본값**: AI bulk gen + human gate at every step. 매 raw gen ship X.

## 🔗 Graph
- 부모: [[Game-Asset-Pipeline]] · [[Generative-AI]]
- 변형: [[Skybound Protocol 코드리뷰]] · [[Skybound_Firepower_Overclock_v1.5]]
- 응용: [[FLUX]] · [[ComfyUI]]
- Adjacent: [[IP-Adapter]]

## 🤖 LLM 활용
**언제**: brief expansion (1-line → full prompt), variant naming, asset description for marketplace.
**언제 X**: visual gen (use diffusion model directly), final polish (artist).

## ❌ 안티패턴
- **Raw gen ship**: 매 validation skip → tri spike, broken UV, IP risk.
- **No style anchor**: 매 every gen 의 different look.
- **Pipeline 의 manual handoff**: 매 Prefect / Dagster orchestrate.
- **Training data 의 unaudited**: 매 legal exposure.

## 🧪 검증 / 중복
- Verified (Skybound roadmap doc, Microsoft TRELLIS, BFL FLUX).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — phased AI asset roadmap with pipeline patterns |
