P1 서연 리노컷 아트 원본과 자산 파이프라인
- 아트 디렉션 v3 스타일 프레임·프롬프트(소유자 선택: 리노컷) - P1 정면 원화·얼굴 없는 기본형, 분할 레이어, 원화 픽셀 입술·턱 조각, 모티프 스프라이트, 소유자 기준 이미지 - 파이프라인 스크립트(분할·얼굴 음영·눈썹 중심선·입술 결·턱 조각·게시)와 manifest 검사 수치 - MediaPipe 모델과 재생성 가능한 진단 PNG는 무시하고 README에 받는 곳을 적었다
This commit is contained in:
parent
85bd079d18
commit
00169533d8
83 changed files with 7843 additions and 0 deletions
828
docs/avatar-art/p1-linocut/manifest.json
Normal file
828
docs/avatar-art/p1-linocut/manifest.json
Normal file
|
|
@ -0,0 +1,828 @@
|
|||
{
|
||||
"schemaVersion": "vignette.avatar.v3.layers.v1",
|
||||
"persona": "P1",
|
||||
"canvas": {
|
||||
"w": 1005,
|
||||
"h": 1566
|
||||
},
|
||||
"base": {
|
||||
"front": "base/base-front.png",
|
||||
"faceless": "base/base-faceless.png",
|
||||
"facelessPadded": "base/base-faceless-padded.png",
|
||||
"facelessSize": [
|
||||
1005,
|
||||
1565
|
||||
],
|
||||
"padNote": "base-faceless.png 마지막 행을 복제해 1005x1566(base-front.png 크기)으로 패딩한 것이 F다."
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"id": "body",
|
||||
"file": "layers/body.png",
|
||||
"source": "base-faceless-masked+regenerated-fill",
|
||||
"alphaBBox": [
|
||||
0,
|
||||
807,
|
||||
1005,
|
||||
1566
|
||||
],
|
||||
"opaquePixels": 676997,
|
||||
"greenResidue": 0,
|
||||
"fillTargetPixels": 111193,
|
||||
"fillSourceRaw": "raw/body.png (rejected 재생성이 아니라 수용된 body.png의 크로마키 결과; head/hairFront와 달리 body 재생성은 승인됨)"
|
||||
},
|
||||
{
|
||||
"id": "head",
|
||||
"file": "layers/head.png",
|
||||
"source": "base-faceless-masked",
|
||||
"alphaBBox": [
|
||||
114,
|
||||
86,
|
||||
941,
|
||||
1121
|
||||
],
|
||||
"opaquePixels": 581114,
|
||||
"greenResidue": 0
|
||||
},
|
||||
{
|
||||
"id": "hairFront",
|
||||
"file": "layers/hairFront.png",
|
||||
"source": "base-faceless-masked",
|
||||
"alphaBBox": [
|
||||
260,
|
||||
391,
|
||||
751,
|
||||
932
|
||||
],
|
||||
"opaquePixels": 26681,
|
||||
"greenResidue": 0
|
||||
}
|
||||
],
|
||||
"composite": {
|
||||
"meanAbsDiff": {
|
||||
"full": 1.2217247097844115,
|
||||
"face": 0.31938995265429254,
|
||||
"hairOutline": 5.581258439408577
|
||||
},
|
||||
"target": {
|
||||
"full": 3.0,
|
||||
"pass": true
|
||||
},
|
||||
"backgroundNote": "카테고리0(배경)은 종이결 텍스처 노이즈(표준편차 ~29/채널)를 포함해 평탄한 크림(#EEE5D3)과 자체적으로 평균절대차 ~7 차이가 난다."
|
||||
},
|
||||
"landmarks": {
|
||||
"coordSystem": "screen (image pixel: x=0 좌측, y=0 상단; left=작은 x, right=큰 x; 인물 해부학적 좌우 아님)",
|
||||
"eyeLeft": {
|
||||
"innerCorner": [
|
||||
430.91,
|
||||
592.22
|
||||
],
|
||||
"outerCorner": [
|
||||
339.05,
|
||||
578.79
|
||||
],
|
||||
"upperLidTop": [
|
||||
376.31,
|
||||
564.31
|
||||
],
|
||||
"lowerLidBottom": [
|
||||
381.06,
|
||||
598.18
|
||||
],
|
||||
"iris": {
|
||||
"center": [
|
||||
387.33,
|
||||
579.15
|
||||
],
|
||||
"radius": 21.43
|
||||
}
|
||||
},
|
||||
"eyeRight": {
|
||||
"innerCorner": [
|
||||
552.78,
|
||||
590.87
|
||||
],
|
||||
"outerCorner": [
|
||||
648.01,
|
||||
575.45
|
||||
],
|
||||
"upperLidTop": [
|
||||
607.07,
|
||||
562.12
|
||||
],
|
||||
"lowerLidBottom": [
|
||||
603.89,
|
||||
595.01
|
||||
],
|
||||
"iris": {
|
||||
"center": [
|
||||
601.93,
|
||||
576.21
|
||||
],
|
||||
"radius": 21.28
|
||||
}
|
||||
},
|
||||
"eyebrowLeft": {
|
||||
"inner": [
|
||||
450.62,
|
||||
525.06
|
||||
],
|
||||
"peak": [
|
||||
360.1,
|
||||
510.44
|
||||
],
|
||||
"outer": [
|
||||
313.38,
|
||||
513.28
|
||||
]
|
||||
},
|
||||
"eyebrowRight": {
|
||||
"inner": [
|
||||
518.25,
|
||||
521.66
|
||||
],
|
||||
"peak": [
|
||||
626.75,
|
||||
508.19
|
||||
],
|
||||
"outer": [
|
||||
682.75,
|
||||
510.7
|
||||
]
|
||||
},
|
||||
"noseTip": [
|
||||
486.6,
|
||||
713.03
|
||||
],
|
||||
"mouthCornerLeft": [
|
||||
422.12,
|
||||
804.71
|
||||
],
|
||||
"mouthCornerRight": [
|
||||
567.47,
|
||||
805.8
|
||||
],
|
||||
"upperLipTopCenter": [
|
||||
489.77,
|
||||
773.37
|
||||
],
|
||||
"lowerLipBottomCenter": [
|
||||
492.98,
|
||||
831.48
|
||||
],
|
||||
"chinTip": [
|
||||
500.61,
|
||||
919.55
|
||||
],
|
||||
"faceWidthAtEyeLevelLeft": [
|
||||
281.78,
|
||||
623.96
|
||||
],
|
||||
"faceWidthAtEyeLevelRight": [
|
||||
736.2,
|
||||
621.0
|
||||
]
|
||||
},
|
||||
"landmarkDetector": "mediapipe FaceLandmarker (tasks) 1.0.1, model=face_landmarker(float16, v1)",
|
||||
"segmenter": {
|
||||
"model": "selfie_multiclass_256x256.tflite (mediapipe ImageSegmenter, storage.googleapis.com)",
|
||||
"categories": {
|
||||
"0": "background",
|
||||
"1": "hair",
|
||||
"2": "bodySkin",
|
||||
"3": "faceSkin",
|
||||
"4": "clothes",
|
||||
"5": "others"
|
||||
},
|
||||
"categoryPixelCounts": {
|
||||
"0": 407753,
|
||||
"1": 383398,
|
||||
"2": 68311,
|
||||
"3": 188992,
|
||||
"4": 525376
|
||||
},
|
||||
"hairEdgeRefine": {
|
||||
"dilatePx": 6,
|
||||
"lumThreshold": 110,
|
||||
"addedPixels": 22965
|
||||
}
|
||||
},
|
||||
"chinLine": {
|
||||
"landmarkIndex": 152,
|
||||
"xy": [
|
||||
500.61,
|
||||
919.55
|
||||
],
|
||||
"marginPx": 8,
|
||||
"cutY": 927.55
|
||||
},
|
||||
"faceOval": {
|
||||
"landmarkLoop": [
|
||||
10,
|
||||
338,
|
||||
297,
|
||||
332,
|
||||
284,
|
||||
251,
|
||||
389,
|
||||
356,
|
||||
454,
|
||||
323,
|
||||
361,
|
||||
288,
|
||||
397,
|
||||
365,
|
||||
379,
|
||||
378,
|
||||
400,
|
||||
377,
|
||||
152,
|
||||
148,
|
||||
176,
|
||||
149,
|
||||
150,
|
||||
136,
|
||||
172,
|
||||
58,
|
||||
132,
|
||||
93,
|
||||
234,
|
||||
127,
|
||||
162,
|
||||
21,
|
||||
54,
|
||||
103,
|
||||
67,
|
||||
109
|
||||
],
|
||||
"scale": 1.04,
|
||||
"sourceImage": "base/base-front.png"
|
||||
},
|
||||
"rejectedRawEdits": {
|
||||
"head": {
|
||||
"file": "raw/head.png",
|
||||
"status": "rejected",
|
||||
"reason": "얼굴 폭·턱선·귀·머리숱이 base-faceless와 달라짐(2단계-A 1차 반려 사유)"
|
||||
},
|
||||
"hairFront": {
|
||||
"file": "raw/hair-front.png",
|
||||
"status": "rejected",
|
||||
"reason": "노란 하이라이트 획 등 기준에 없던 색상 아티팩트, 형태 변형(2단계-A 1차 반려 사유)"
|
||||
},
|
||||
"body": {
|
||||
"file": "raw/body.png",
|
||||
"status": "accepted-as-fill-source",
|
||||
"reason": "정렬 (0,0), 형태 변형 없음 — head_mask 채움 전용 소스로 재사용"
|
||||
}
|
||||
},
|
||||
"layersV2": {
|
||||
"chinBandFix": {
|
||||
"targetRegionPixels": 51052,
|
||||
"sourceBandHeight": 150,
|
||||
"rowJitterRange": [
|
||||
-2.0,
|
||||
2.0
|
||||
],
|
||||
"rngSeed": 20260930
|
||||
},
|
||||
"hairEdgeFix": {
|
||||
"bandOuterPx": 40,
|
||||
"bandInnerPx": 6,
|
||||
"lumSmoothstep": [
|
||||
205.0,
|
||||
150.0
|
||||
],
|
||||
"minFragmentAreaPx": 60,
|
||||
"head": {
|
||||
"bandOuterPixels": 93622,
|
||||
"bandInnerPixels": 60104,
|
||||
"componentsBefore": 67,
|
||||
"removed": 63,
|
||||
"removedPixels": 322
|
||||
},
|
||||
"hairFront": {
|
||||
"bandOuterPixels": 0,
|
||||
"bandInnerPixels": 21491,
|
||||
"componentsBefore": 217,
|
||||
"removed": 207,
|
||||
"removedPixels": 526
|
||||
}
|
||||
},
|
||||
"hairPaperGapFix": {
|
||||
"regionDilatePx": 6,
|
||||
"paperColorDistThreshold": 40.0,
|
||||
"paperLumThreshold": 195.0,
|
||||
"paperSatThreshold": 40.0,
|
||||
"opaqueAlphaThreshold": 0.95,
|
||||
"regionPixels": 410064,
|
||||
"head": {
|
||||
"targetPixels": 1359,
|
||||
"componentsBefore": 4,
|
||||
"removed": 0,
|
||||
"removedPixels": 0,
|
||||
"faceSkinAlphaDiff": 0.0
|
||||
},
|
||||
"hairFront": {
|
||||
"targetPixels": 0,
|
||||
"componentsBefore": 10,
|
||||
"removed": 0,
|
||||
"removedPixels": 0,
|
||||
"faceSkinAlphaDiff": 0.0
|
||||
}
|
||||
},
|
||||
"jawInkFix": {
|
||||
"mouthCenterY": 797.52,
|
||||
"distThresholdPx": 14.0,
|
||||
"mergePx": 3,
|
||||
"aspectThreshold": 1.0,
|
||||
"removedGroups": [
|
||||
{
|
||||
"pixels": 4410,
|
||||
"bbox": [
|
||||
459,
|
||||
798,
|
||||
700,
|
||||
933
|
||||
],
|
||||
"width": 241,
|
||||
"height": 135,
|
||||
"aspect": 1.785
|
||||
}
|
||||
],
|
||||
"keptGroups": [
|
||||
{
|
||||
"pixels": 1471,
|
||||
"bbox": [
|
||||
322,
|
||||
798,
|
||||
382,
|
||||
870
|
||||
],
|
||||
"width": 60,
|
||||
"height": 72,
|
||||
"aspect": 0.833
|
||||
}
|
||||
],
|
||||
"removedPixels": 4410,
|
||||
"strayFragmentCleanup": {
|
||||
"componentsBefore": 21,
|
||||
"removed": 14,
|
||||
"removedPixels": 118
|
||||
}
|
||||
},
|
||||
"metrics": {
|
||||
"body": {
|
||||
"haloPct": 0.6339468302658486
|
||||
},
|
||||
"head": {
|
||||
"haloPct": 0.04071661237785017,
|
||||
"bgLeakAlphaMean": 0.0,
|
||||
"hairPaperOpaquePct": 0.0,
|
||||
"disconnectedFragmentsUnder60px": 0
|
||||
},
|
||||
"hairFront": {
|
||||
"haloPct": 0.0,
|
||||
"bgLeakAlphaMean": 0.0,
|
||||
"hairPaperOpaquePct": 0.0,
|
||||
"disconnectedFragmentsUnder60px": 0
|
||||
}
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"id": "body",
|
||||
"bbox": [
|
||||
0,
|
||||
807,
|
||||
1005,
|
||||
1566
|
||||
],
|
||||
"opaque": 672038,
|
||||
"greenResidue": 1
|
||||
},
|
||||
{
|
||||
"id": "head",
|
||||
"bbox": [
|
||||
111,
|
||||
72,
|
||||
960,
|
||||
1121
|
||||
],
|
||||
"opaque": 593623,
|
||||
"greenResidue": 0
|
||||
},
|
||||
{
|
||||
"id": "hairFront",
|
||||
"bbox": [
|
||||
260,
|
||||
391,
|
||||
751,
|
||||
907
|
||||
],
|
||||
"opaque": 31928,
|
||||
"greenResidue": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"motifPublish": {
|
||||
"quality": 82,
|
||||
"fileSizes": {
|
||||
"bud-closed": 14576,
|
||||
"bud-half": 14932,
|
||||
"bud-open": 18278,
|
||||
"bud-droop": 14102,
|
||||
"weather-positive": 7594,
|
||||
"weather-negative": 13262,
|
||||
"weather-defensive": 14886,
|
||||
"weather-cognitive": 7790,
|
||||
"weather-energy": 7132
|
||||
},
|
||||
"totalBytes": 112552,
|
||||
"budgetBytes": 163840,
|
||||
"halo": {
|
||||
"bud-closed": 0.09157509157509157,
|
||||
"bud-half": 0.09174311926605505,
|
||||
"bud-open": 0.06657789613848203,
|
||||
"bud-droop": 0.205761316872428,
|
||||
"weather-positive": 0.0,
|
||||
"weather-negative": 0.0,
|
||||
"weather-defensive": 0.0,
|
||||
"weather-cognitive": 0.0,
|
||||
"weather-energy": 0.2890173410404624
|
||||
},
|
||||
"haloThreshold": 2.0
|
||||
},
|
||||
"browCenterline": {
|
||||
"method": "Otsu(front lum in bbox) AND diff(F-front)>=25, morphological closing to merge hatching, single global degree-2 polyfit on column-weighted centroid with one-pass outlier removal",
|
||||
"diffThresh": 25.0,
|
||||
"bboxPad": {
|
||||
"x": 25.0,
|
||||
"yUp": 42.0,
|
||||
"yDown": 14.0
|
||||
},
|
||||
"closingKernel": [
|
||||
7,
|
||||
11
|
||||
],
|
||||
"minComponentAreaPx": 30.0,
|
||||
"outlierStdMult": 2.0,
|
||||
"edgeInsetFrac": 0.03,
|
||||
"peakWindow": [
|
||||
0.25,
|
||||
0.6
|
||||
],
|
||||
"peakFallbackFrac": 0.35,
|
||||
"peakFlatHeightPx": 3.0,
|
||||
"peakFailEdgeFrac": 0.2,
|
||||
"oldPoints": {
|
||||
"browLeft": {
|
||||
"inner": [
|
||||
441.16,
|
||||
535.91
|
||||
],
|
||||
"peak": [
|
||||
345.46,
|
||||
497.87
|
||||
],
|
||||
"outer": [
|
||||
298.95,
|
||||
524.32
|
||||
]
|
||||
},
|
||||
"browRight": {
|
||||
"inner": [
|
||||
531.24,
|
||||
535.37
|
||||
],
|
||||
"peak": [
|
||||
628.82,
|
||||
496.05
|
||||
],
|
||||
"outer": [
|
||||
687.99,
|
||||
522.25
|
||||
]
|
||||
}
|
||||
},
|
||||
"newPoints": {
|
||||
"browLeft": {
|
||||
"name": "browLeft",
|
||||
"bbox": [
|
||||
274,
|
||||
456,
|
||||
466,
|
||||
550
|
||||
],
|
||||
"otsuThresh": 105.0,
|
||||
"colRange": [
|
||||
309,
|
||||
455
|
||||
],
|
||||
"width": 146.0,
|
||||
"nColumns": 146,
|
||||
"nOutliersRemoved": 7,
|
||||
"fitCoeffs": [
|
||||
0.00161949,
|
||||
-1.15147737,
|
||||
715.08915879
|
||||
],
|
||||
"inner": [
|
||||
450.62,
|
||||
525.06
|
||||
],
|
||||
"peak": [
|
||||
360.1,
|
||||
510.44
|
||||
],
|
||||
"outer": [
|
||||
313.38,
|
||||
513.28
|
||||
],
|
||||
"peakMethod": "fallback35",
|
||||
"peakFracFromOuterEdge": 0.35,
|
||||
"peakFail": false,
|
||||
"checkA_fracColumnsFitWithinMask": 0.9247,
|
||||
"checkA_pass": true,
|
||||
"bandX0": 274,
|
||||
"bandY0": 456,
|
||||
"colMin": 309,
|
||||
"colMax": 455
|
||||
},
|
||||
"browRight": {
|
||||
"name": "browRight",
|
||||
"bbox": [
|
||||
506,
|
||||
454,
|
||||
713,
|
||||
549
|
||||
],
|
||||
"otsuThresh": 110.0,
|
||||
"colRange": [
|
||||
513,
|
||||
688
|
||||
],
|
||||
"width": 175.0,
|
||||
"nColumns": 163,
|
||||
"nOutliersRemoved": 11,
|
||||
"fitCoeffs": [
|
||||
0.00102658,
|
||||
-1.29955603,
|
||||
919.43219697
|
||||
],
|
||||
"inner": [
|
||||
518.25,
|
||||
521.66
|
||||
],
|
||||
"peak": [
|
||||
626.75,
|
||||
508.19
|
||||
],
|
||||
"outer": [
|
||||
682.75,
|
||||
510.7
|
||||
],
|
||||
"peakMethod": "fallback35",
|
||||
"peakFracFromOuterEdge": 0.35,
|
||||
"peakFail": false,
|
||||
"checkA_fracColumnsFitWithinMask": 0.9202,
|
||||
"checkA_pass": true,
|
||||
"bandX0": 506,
|
||||
"bandY0": 454,
|
||||
"colMin": 513,
|
||||
"colMax": 688
|
||||
}
|
||||
},
|
||||
"checkB_innerMinusPeakY": {
|
||||
"browLeft": 14.62,
|
||||
"browRight": 13.47
|
||||
},
|
||||
"checkD_symmetry": {
|
||||
"innerYDiff": 3.4,
|
||||
"peakYDiff": 2.25
|
||||
},
|
||||
"evidenceImage": "preview/v2/brow-centerline.jpg"
|
||||
},
|
||||
"lipTexture": {
|
||||
"designVersion": "A5 (2단계-B-1d-A5, 작업 패킷 A5 — 아랫입술 그늘 띠를 lip-shadow 조각으로 분리)",
|
||||
"landmarks": {
|
||||
"mouthCornerLeft": [
|
||||
422.12,
|
||||
804.71
|
||||
],
|
||||
"mouthCornerRight": [
|
||||
567.47,
|
||||
805.8
|
||||
],
|
||||
"upperLipTop": [
|
||||
489.77,
|
||||
773.37
|
||||
],
|
||||
"lowerLipBottom": [
|
||||
492.98,
|
||||
831.48
|
||||
],
|
||||
"mouthCenter": [
|
||||
491.55401542782784,
|
||||
797.5187528729439
|
||||
]
|
||||
},
|
||||
"capBBox": [
|
||||
413.8,
|
||||
767.42,
|
||||
575.8,
|
||||
837.42
|
||||
],
|
||||
"otsuThreshLabA": 136.0,
|
||||
"diffThresh": 20.0,
|
||||
"dilatePx": 10.0,
|
||||
"alphaRampPx": 4.0,
|
||||
"splitOverlapPx": 2.0,
|
||||
"shadowBandPx": 18.0,
|
||||
"shadowTopOverlapPx": 6.0,
|
||||
"shadowSideRampPx": 6.0,
|
||||
"shadowTopRampPx": 4.0,
|
||||
"checks": {
|
||||
"lip-upper": {
|
||||
"regionPixelCount": 5996,
|
||||
"fullOpacityPixelCount": 5179,
|
||||
"rampPixelCount": 817,
|
||||
"preserveMaxDiffFullOpacity": 0,
|
||||
"check1Preserve": true,
|
||||
"spriteBBoxWorkingLocal": [
|
||||
30,
|
||||
31,
|
||||
182,
|
||||
54
|
||||
]
|
||||
},
|
||||
"lip-lower": {
|
||||
"regionPixelCount": 6482,
|
||||
"fullOpacityPixelCount": 5704,
|
||||
"rampPixelCount": 778,
|
||||
"preserveMaxDiffFullOpacity": 0,
|
||||
"check1Preserve": true,
|
||||
"spriteBBoxWorkingLocal": [
|
||||
30,
|
||||
71,
|
||||
182,
|
||||
49
|
||||
]
|
||||
},
|
||||
"lip-shadow": {
|
||||
"regionPixelCount": 3888,
|
||||
"fullOpacityPixelCount": 2071,
|
||||
"rampPixelCount": 1817,
|
||||
"preserveMaxDiffFullOpacity": 0,
|
||||
"check1Preserve": true,
|
||||
"spriteBBoxWorkingLocal": [
|
||||
40,
|
||||
75,
|
||||
162,
|
||||
53
|
||||
]
|
||||
},
|
||||
"splitOverlapPixelCount": 362,
|
||||
"splitOverlapBandOk": true,
|
||||
"splitOverlapAlphaMaxDiff": 0,
|
||||
"splitOverlapConsistentOk": true,
|
||||
"splitCoverageMismatchPixelCount": 0,
|
||||
"splitCheckOk": true,
|
||||
"shadowLowerOverlapPixelCount": 2845,
|
||||
"shadowLowerOverlapMaxDiff": 35.95294117647059,
|
||||
"shadowLowerOverlapDiffGt1PixelCount": 138,
|
||||
"shadowLowerOverlapOk": false,
|
||||
"shadowLowerOverlapNote": "국소 실패(입꼬리 첨점 부근, diff>1인 픽셀 수 참고). 원인: 두 입꼬리 근처에서 원화 입술 색 마스크가 하이라이트로 끊겨 윗/아랫 두 블롭으로 갈라지고, 기존 Cu0 부호 분할(A3/A4부터의 로직, 이번 작업에서 변경하지 않음)이 그 다리 부분을 '윗'으로 분류해 alpha_lower=0이 되는 지점이 생긴다. 그 자리는 그늘 조각의 옆(열 끊김) 램프 구간과도 겹쳐 그늘 쪽 알파도 완전 불투명이 아니라서 등식이 깨진다. preview/v2/lip-texture.jpg의 원화|중립합성 패널을 3배 확대로 육안 확인한 결과 이음매는 보이지 않는다(오케스트레이터 육안 무해 판단, 2026-10-01)."
|
||||
},
|
||||
"check3NeutralComposite": {
|
||||
"fullOpacityMaxDiff": 0.0,
|
||||
"rampMeanAbsDiff": 3.069,
|
||||
"mouthBBoxMeanAbsDiff": 0.707
|
||||
},
|
||||
"pngFileSizes": {
|
||||
"lip-upper": 24050,
|
||||
"lip-lower": 22210,
|
||||
"lip-shadow": 21762
|
||||
},
|
||||
"canvasOrigin": {
|
||||
"upper": [
|
||||
404,
|
||||
758
|
||||
],
|
||||
"lower": [
|
||||
404,
|
||||
798
|
||||
],
|
||||
"shadow": [
|
||||
414,
|
||||
802
|
||||
]
|
||||
},
|
||||
"evidenceImage": "preview/v2/lip-texture.jpg",
|
||||
"check4WebpVsPngMeanAbsDiff": {
|
||||
"upper": 0.0,
|
||||
"lower": 0.0,
|
||||
"shadow": 0.0
|
||||
}
|
||||
},
|
||||
"lipTexturePublish": {
|
||||
"quality": "lossless",
|
||||
"fileSizes": {
|
||||
"lip-upper": 15904,
|
||||
"lip-lower": 14630,
|
||||
"lip-shadow": 14868
|
||||
},
|
||||
"totalBytes": 45402,
|
||||
"budgetBytes": 81920,
|
||||
"webpVsPngMeanAbsDiff": {
|
||||
"upper": 0.0,
|
||||
"lower": 0.0,
|
||||
"shadow": 0.0
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"designVersion": "A5 (작업 패킷 A5, 결정문 §8.4 하관 띠 변형 — 턱 조각 원본)",
|
||||
"noseTip": [
|
||||
486.6,
|
||||
713.03
|
||||
],
|
||||
"chinTip": [
|
||||
500.61,
|
||||
919.55
|
||||
],
|
||||
"yFormula": "noseTip.y - 50 - 10 .. chinTip.y + 40",
|
||||
"noseToTopPx": 60.0,
|
||||
"chinToBottomPx": 40.0,
|
||||
"ovalOutsetPx": 18.0,
|
||||
"faceOvalSource": "export_rig.detect_face_landmarks + compute_face_oval(base-front.png, 결정적)",
|
||||
"bboxCanvas": [
|
||||
260,
|
||||
653,
|
||||
760,
|
||||
960
|
||||
],
|
||||
"naiveXRangeForComparison": [
|
||||
260,
|
||||
760
|
||||
],
|
||||
"checks": {
|
||||
"head": {
|
||||
"pngRoundTripMaxDiff": 0,
|
||||
"pngRoundTripOk": true,
|
||||
"pngFileSize": 314304
|
||||
},
|
||||
"detail": {
|
||||
"pngRoundTripMaxDiff": 0,
|
||||
"pngRoundTripOk": true,
|
||||
"pngFileSize": 332332
|
||||
}
|
||||
},
|
||||
"evidenceImage": "preview/v2/jaw-pieces.jpg",
|
||||
"check1VsPublishedLayerAbsDiff": {
|
||||
"head": {
|
||||
"comparedAgainstPublishedLayer": "head.webp",
|
||||
"meanAbsDiffPremultipliedRgb": 3.131,
|
||||
"maxAbsDiffPremultipliedRgb": 40.0,
|
||||
"meanAbsDiffAlpha": 0.0,
|
||||
"maxAbsDiffAlpha": 0.0,
|
||||
"meetsTarget": false,
|
||||
"orchestratorAcceptanceNote": "평균차 3.13(목표 2.0 초과) 수용(오케스트레이터, 2026-10-01). 근거: 최대차가 난 자리(왼쪽 위 머리카락)는 띠 clip(얼굴 윤곽 18px 바깥 다각형) 밖이라 렌더러가 그리지 않는다. 띠가 켜지는 동안에도 윗경계(y_n) 부근은 변위 f(y)가 0에 가까워 이 조각의 위쪽 여백이 눈에 띄게 움직이지 않는다. quality를 올려도 이미 게시된 head.webp 자체의 압축 오차만큼은 남아 이득이 없다(비교 대상 자체가 손실 압축본)."
|
||||
},
|
||||
"detail": {
|
||||
"comparedAgainstPublishedLayer": "face-detail.webp",
|
||||
"meanAbsDiffPremultipliedRgb": 0.565,
|
||||
"maxAbsDiffPremultipliedRgb": 25.0,
|
||||
"meanAbsDiffAlpha": 0.0,
|
||||
"maxAbsDiffAlpha": 0.0,
|
||||
"meetsTarget": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jawPublish": {
|
||||
"quality": 80,
|
||||
"scale": 1.0,
|
||||
"fileSizes": {
|
||||
"jaw-head": 24580,
|
||||
"jaw-detail": 15488
|
||||
},
|
||||
"totalBytes": 40068,
|
||||
"budgetBytes": 204800,
|
||||
"vsPublishedLayerAbsDiff": {
|
||||
"head": {
|
||||
"comparedAgainstPublishedLayer": "head.webp",
|
||||
"meanAbsDiffPremultipliedRgb": 3.131,
|
||||
"maxAbsDiffPremultipliedRgb": 40.0,
|
||||
"meanAbsDiffAlpha": 0.0,
|
||||
"maxAbsDiffAlpha": 0.0,
|
||||
"meetsTarget": false,
|
||||
"orchestratorAcceptanceNote": "평균차 3.13(목표 2.0 초과) 수용(오케스트레이터, 2026-10-01). 근거: 최대차가 난 자리(왼쪽 위 머리카락)는 띠 clip(얼굴 윤곽 18px 바깥 다각형) 밖이라 렌더러가 그리지 않는다. 띠가 켜지는 동안에도 윗경계(y_n) 부근은 변위 f(y)가 0에 가까워 이 조각의 위쪽 여백이 눈에 띄게 움직이지 않는다. quality를 올려도 이미 게시된 head.webp 자체의 압축 오차만큼은 남아 이득이 없다(비교 대상 자체가 손실 압축본)."
|
||||
},
|
||||
"detail": {
|
||||
"comparedAgainstPublishedLayer": "face-detail.webp",
|
||||
"meanAbsDiffPremultipliedRgb": 0.565,
|
||||
"maxAbsDiffPremultipliedRgb": 25.0,
|
||||
"meanAbsDiffAlpha": 0.0,
|
||||
"maxAbsDiffAlpha": 0.0,
|
||||
"meetsTarget": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue