7.3 KiB
HANDOFF - LeeSori Live2D Image Regeneration
Current Goal
LeeSori_Live2D 캐릭터 이미지가 잘못되어, 03_Assets/Reference/sori_sheet.png를 기준으로 Live2D용 이미지를 다시 생성했다.
사용자 요구사항:
- Sheet 기준 캐릭터 정체성/의상 반영
- 바지 위끝 라인과 크롭티 아래 라인 사이의 허리 파임 완화
- 기존처럼 과도하게 잘록하거나 안쪽으로 깊게 꺾인 허리 금지
Work Completed
Generated/Updated Assets
-
03_Assets/Reference/sori_generated_apose_raw.png- image generation 결과 원본 보존본.
- 기본 생성 경로 원본은
C:\Users\eKeerar\.codex\generated_images\019f2922-6d0f-73e3-ab87-5bfe2b5cb662\ig_049d9251ca636ffb016a47f8f265988191951b5cfb7c9d1f1e.png.
-
03_Assets/Parts/Images/sori_part_master_apose.png- 새 Live2D용 마스터 A-pose.
- Sheet 스타일에 더 가깝고, 허리 파임이 완화된 상태.
- 배경 제거 및 520x900 기준 캔버스 정규화 완료.
-
03_Assets/Parts/Images/*.png- 새 마스터 기준으로 head/chest/pelvis/arms/hands/legs/feet coarse part 17개 재추출.
-
03_Assets/Live2D/LayerPNGs/**/*.pnggenerate_live2d_layers.py로 78개 Live2D layer PNG 재생성.
-
03_Assets/Live2D/sori_live2d_layer_preview.png- 대표 확인용 프리뷰.
- 현재는 레이어 합성 프리뷰가 아니라 새 마스터 A-pose를 1600x2800 캔버스에 배치한 대표 이미지로 저장되도록 변경했다.
- 이유: 레이어별 합성은 목/후드/상체 겹침이 복잡해 일부 검은 틈이나 밑칠 노출이 생겼고, 사용자가 확인할 대표 캐릭터 이미지는 새 마스터 품질을 정확히 보여줘야 하기 때문.
-
03_Assets/Live2D/sori_live2d_layer_preview_checker.png- 위 대표 프리뷰의 checker 배경 버전.
-
03_Assets/Live2D/_parts_contact_sheet.png- coarse part 확인용 contact sheet 재생성.
-
03_Assets/Live2D/layer_generation_report.json- 최종 검증 결과:
layerCount: 78requiredLayerCount: 67nonemptyRequiredLayerCount: 67missingFiles: []
- 최종 검증 결과:
Code Changes
Added
tools/prepare_generated_apose.py03_Assets/Reference/sori_generated_apose_raw.png를 입력으로 사용.- checker-like background를 flood-fill 방식으로 제거.
- 520x900 RGBA 마스터로 정규화.
- Live2D coarse parts를 새 마스터 기준 box crop으로 생성.
- 손 파츠 위치는 최종 조정됨:
- left hand:
(382, 428, 520, 590) - right hand:
(0, 428, 138, 590)
- left hand:
Modified
tools/generate_live2d_layers.py- 기존 도형 기반 얼굴/눈/입 일부가 Sheet와 맞지 않아, source facial extraction helper를 추가했다.
- 팔 hidden underpaint가 프리뷰에 크게 노출되어 최소 marker 수준으로 줄였다.
- torso skin mask를 노출된 중앙 상체/허리 영역으로 좁혔다.
- face underpaint가 어깨 위 살색 블록처럼 보이던 문제를 줄였다.
sori_live2d_layer_preview.png저장 로직을 레이어 합성 대신sori_part_master_apose.png기반 대표 프리뷰로 변경했다.
Commands Already Run
python .\LeeSori_Live2D\tools\prepare_generated_apose.py
python .\LeeSori_Live2D\tools\generate_live2d_layers.py
python .\LeeSori_Live2D\tools\make_parts_contact_sheet.py
Final validation command used:
@'
import json
from pathlib import Path
r=json.loads(Path('LeeSori_Live2D/03_Assets/Live2D/layer_generation_report.json').read_text(encoding='utf-8'))
print('layerCount', r['layerCount'])
print('requiredLayerCount', r['requiredLayerCount'])
print('nonemptyRequiredLayerCount', r['nonemptyRequiredLayerCount'])
print('missingFiles', r['missingFiles'])
for row in r['rows']:
if row['required'] and not row['bbox']:
print('empty', row['id'], row['file'])
'@ | python -
Output:
layerCount 78
requiredLayerCount 67
nonemptyRequiredLayerCount 67
missingFiles []
Important Visual State
Current representative image is acceptable for the user request:
- Face and outfit are closer to
sori_sheet.png. - Hair is mint teal short bob.
- White headphones, choker, teal pendant, white crop top, black/mint jacket, black/mint track pants, sneakers are present.
- Waist between crop top and pants is still slim but no longer sharply pinched inward.
Known caveat:
- The individual separated layer stack is mechanically valid and non-empty, but it is not a production-perfect Live2D PSD separation. Some layer-level overlaps around neck/hood/chest may still require manual paint cleanup if the next goal is Cubism-quality rigging rather than a corrected representative image.
- Because of that,
sori_live2d_layer_preview.pngintentionally shows the corrected master image, not the raw separated-layer composite.
If Continuing Next Session
Recommended next steps:
-
Open/inspect:
LeeSori_Live2D/03_Assets/Live2D/sori_live2d_layer_preview.pngLeeSori_Live2D/03_Assets/Parts/Images/sori_part_master_apose.pngLeeSori_Live2D/03_Assets/Live2D/_parts_contact_sheet.png
-
If user only needed corrected character image:
- Work is complete.
-
If user expects Cubism-ready separated PSD quality:
- Continue cleanup of
LayerPNGs. - Focus first on:
20_Body/torso_skin.png30_Clothes/hood_front_L.png30_Clothes/hood_front_R.png30_Clothes/hoodie_front.png40_Head/face_base.png- neck/choker/pendant overlap.
- Consider making a separate
sori_live2d_layer_composite_debug.pnginstead of overloadingsori_live2d_layer_preview.png.
- Continue cleanup of
-
Do not delete the generated raw image unless explicitly requested.
Final Prompt Used For Image Generation
Use case: precise-object-edit
Asset type: Live2D Cubism source master A-pose character image
Input images: Image 1 is the Lee Sori character sheet reference; Image 2 is the current A-pose source image to replace.
Primary request: Create a corrected full-body front-facing A-pose source image of the same adult woman Lee Sori, matching the character sheet identity and outfit much more closely than the current A-pose.
Subject: adult anime woman with mint teal short bob hair from the sheet, warm brown eyes, white over-ear headphones, black choker with teal teardrop pendant, white cropped zip hoodie/top, black and mint track jacket, black track pants with mint side stripes, black/mint sneakers.
Composition/framing: full body, front-facing symmetrical A-pose with both arms slightly away from body and open hands, centered, feet visible, generous transparent-style padding around the body. Keep similar proportions and canvas-friendly layout to the current A-pose source.
Critical waist correction: Preserve a natural slim waist, but soften the exaggerated inward pinch between the top edge of the pants and the lower edge of the cropped top. The side contour of the exposed midriff should be smoother and slightly fuller, not deeply concave. Do not make the waist hourglass-extreme.
Style/medium: polished semi-real anime character art, clean linework and shading matching the sheet.
Constraints: no background scene, no text, no watermark, no cropped body parts. Keep the outfit details from the sheet. Avoid distorted eyes, oversized headphones, broken hands, mismatched face, overly narrow waist, and jagged cutout edges.