P2~P7 리노컷 캐스트 원화·리그와 세션 활성화
- 추천 원화(P2 b·P3 v2b·P4 v2b·P5 v2a·P6 v2b·P7 v2b)로 얼굴 없는 기본형·몸 원본 codex 편집, 정렬·정규화 후 공통 파이프라인 실행 - 게시 자산 apps/web/public/avatar/v3/p2~p7, 리그 rigs/p2Rig~p7Rig - 세션 레지스트리 P1~P7 전원 활성, Lab은 생성된 리그 자동 수집 - P3·P6 기본 눈 감김을 줄여 중립 렌더를 원화 눈매에 맞춤 - 표정 E2E를 v3 렌더러 기대로 갱신(검사 의도 유지)
This commit is contained in:
parent
98577cf4ae
commit
ded312acdc
258 changed files with 18463 additions and 32 deletions
|
|
@ -1,16 +1,50 @@
|
|||
/* =====================================================================
|
||||
아바타 v3 리그 레지스트리 — 결정문 §8.5 "분기". 페르소나 코드 → 리노컷
|
||||
리그. 지금은 P1만 있고 나머지는 null(기존 SVG로 남는다). 빌드 플래그
|
||||
VITE_AVATAR_V3=0 이면 항상 null(기본은 켜짐).
|
||||
리그. 세션용(linocutRigFor)은 오케스트레이터가 표정 시트를 판정한 페르소나만
|
||||
켠다 — 2026-10-01 P1~P7 전원(결정문 §8.4.1). 목록에 없으면 null(기존 SVG).
|
||||
빌드 플래그 VITE_AVATAR_V3=0 이면 항상 null(기본은 켜짐).
|
||||
===================================================================== */
|
||||
|
||||
import type { LinocutRig } from "../linocutRig";
|
||||
import { P1_LINOCUT_RIG } from "./p1Rig";
|
||||
import { P2_LINOCUT_RIG } from "./p2Rig";
|
||||
import { P3_LINOCUT_RIG } from "./p3Rig";
|
||||
import { P4_LINOCUT_RIG } from "./p4Rig";
|
||||
import { P5_LINOCUT_RIG } from "./p5Rig";
|
||||
import { P6_LINOCUT_RIG } from "./p6Rig";
|
||||
import { P7_LINOCUT_RIG } from "./p7Rig";
|
||||
|
||||
const LINOCUT_RIGS: Partial<Record<string, LinocutRig>> = { P1: P1_LINOCUT_RIG };
|
||||
const LINOCUT_RIGS: Partial<Record<string, LinocutRig>> = {
|
||||
P1: P1_LINOCUT_RIG,
|
||||
P2: P2_LINOCUT_RIG,
|
||||
P3: P3_LINOCUT_RIG,
|
||||
P4: P4_LINOCUT_RIG,
|
||||
P5: P5_LINOCUT_RIG,
|
||||
P6: P6_LINOCUT_RIG,
|
||||
P7: P7_LINOCUT_RIG,
|
||||
};
|
||||
|
||||
export function linocutRigFor(code: string | null | undefined): LinocutRig | null {
|
||||
if (import.meta.env.VITE_AVATAR_V3 === "0") return null;
|
||||
if (!code) return null;
|
||||
return LINOCUT_RIGS[code.toUpperCase()] ?? null;
|
||||
}
|
||||
|
||||
/* Lab(AvatarLab.tsx)용 — 공통 파이프라인(scripts/export_rig.py)이 만드는 ./pN Rig.ts를
|
||||
전부 모아 rig.persona로 색인한다. 세션 화면(linocutRigFor)과는 무관하다 —
|
||||
persona.json이 아직 없는 pNRig.ts가 생기는 즉시 Lab 선택지에 나타나지만,
|
||||
세션에는 영향이 없다(세션은 위 LINOCUT_RIGS 목록만 본다). */
|
||||
const labRigModules = import.meta.glob("./p*Rig.ts", { eager: true }) as Record<string, Record<string, unknown>>;
|
||||
|
||||
export function labLinocutRigs(): Partial<Record<string, LinocutRig>> {
|
||||
const out: Partial<Record<string, LinocutRig>> = {};
|
||||
for (const mod of Object.values(labRigModules)) {
|
||||
for (const exported of Object.values(mod)) {
|
||||
const rig = exported as Partial<LinocutRig> | null;
|
||||
if (rig && typeof rig === "object" && rig.schemaVersion === "vignette.avatar.v3.rig.v1" && typeof rig.persona === "string") {
|
||||
out[rig.persona.toUpperCase()] = rig as LinocutRig;
|
||||
}
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue