{ "schema": 1, "date": "2026-10-21", "request": "最大瘦脸差异与人物转脸时的变形机制", "reference": { "plugin_sha256": "6c5d74bc844a5c5f745718b48ea10ec6635d08aa08a5b6dc6e62653980849f8a", "arm64_sha256": "f01e8c0b7e2676b2961950b0e48efdd2589af218e4b36de7d39f5d1c76852bfb", "metallib_sha256": "4e8c77db8be94ae169337a2e646407f69520b63afb248faa653e0e068237aaae" }, "air_observation": { "authority": "static Apple metal-objdump AIR disassembly; not observed shader execution", "command": "xcrun metal-objdump --metallib --disassemble-symbols=faceThinFragmentShader ", "full_output_sha256": "f97705b88f5491057df2117aef457ffca84e11020574cd57742b0670db4484d8", "full_output_bytes": 274496, "local_output": "build/pose-analysis/face-thin.air.txt", "module": "faceThinFragmentShader", "module_metallib_offset": "0x5d5e", "function": "mssFaceShapePinCoordinate", "active_branch": "faceShapeParamsActive selects Shape helper; inactive branch alone selects legacy Thin helper", "local_pin_triplets": [ [ 75, 74, 6 ], [ 59, 60, 13 ], [ 74, 73, 47 ], [ 60, 61, 47 ], [ 73, 72, 47 ], [ 61, 62, 47 ], [ 72, 71, 48 ], [ 62, 63, 48 ], [ 71, 70, 48 ], [ 63, 64, 48 ], [ 70, 69, 49 ], [ 64, 65, 49 ], [ 69, 68, 49 ], [ 65, 66, 49 ], [ 68, 67, 52 ], [ 66, 67, 52 ], [ 67, 65, 47 ] ], "triplet_usage": "first=origin, third=anchor; second unused in thin loop", "thin_cpu_scale": 0.025, "size_gain": "clamp(280/max(length((P75-P59)*imageSize),2*length((P67-(P74+P60)/2)*imageSize),1),1,2.25)", "effective_pin_gain": "clamp(UI thin,0,1) * strengthMultiplier * 0.025 * size_gain", "radius": "length(origin-anchor) in normalized image UV", "falloff": "clamp(1-length(currentSampleCoordinate-origin)/radius,0,1)", "inverse_sample_step": "q = clamp(q-(anchor-origin)*effective_pin_gain*falloff,0,1)", "iteration": "17 sequential updates; not 17 independent offsets evaluated at one original coordinate", "bounded_negative_findings": [ "No yaw/roll/pitch input to the checked GPU helpers", "No explicit side-view angle gate in the checked thin branch", "No explicit eye/nose restore mask in the checked thin branch; each single pin has zero weight at its own anchor" ], "limits": [ "This is a 2D local landmark deformation, not proof of 3D head pose estimation", "Static paths are not a capture of the exact runtime branch used in the supplied screenshots", "Other contour controls include fixed horizontal offsets; not all controls share rotation-equivariant behavior" ] }, "vision_probe": { "authority": "Independent public Apple Vision / AVFoundation invocation; no reference app or plug-in executed", "script": "scripts/inspect-face-geometry.m", "revision": 3, "constellation": 76, "maximum_dimension": 1280, "coordinate_system": "full-image normalized, y up", "region_indices": { "contour": [ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75 ], "innerLips": [ 42, 40, 43, 45, 41, 44 ], "leftEye": [ 0, 4, 5, 1, 3, 2 ], "leftPupil": [ 6 ], "nose": [ 47, 56, 54, 53, 52, 51, 50, 55 ], "noseCrest": [ 46, 47, 48, 49, 58, 57 ], "outerLips": [ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 26 ], "rightEye": [ 7, 11, 12, 8, 10, 9 ], "rightPupil": [ 13 ] }, "frames": [ { "time": 0, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 2, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0.7853981852531433 ], "pitch_radians": [ null ] }, { "time": 4, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 1.5707963705062866 ], "pitch_radians": [ null ] }, { "time": 6, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 8, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 10, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 12, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 14, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 16, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0 ], "pitch_radians": [ null ] }, { "time": 18, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 1.5707963705062866 ], "pitch_radians": [ null ] }, { "time": 20, "face_count": 1, "all_point_counts": [ 76 ], "yaw_radians": [ 0.7853981852531433 ], "pitch_radians": [ null ] } ], "result": "All 11 sampled frames returned one face and 76 points; 4s/18s reported yaw approx pi/2; pitch unavailable", "privacy": "Source frames, complete landmarks and source path remain ignored under build/pose-analysis/vision and are not included in Git" }, "reconstruction_baseline": { "commit": "e03e460a9b3e5ad489aad24095485ba10ceb987d", "installed_version": "1.0.4 (6)", "root_causes": [ "thin deformation uses bounding box x/y/size rather than saved contour/nose points", "horizontal symmetric inverse warp is applied at full strength for any valid box", "no contour/landmark completeness guard or pose metadata preservation", "fixed coefficients do not match reference local-pin scaling" ], "direction_check": "Positive thin samples outward and moves image features inward; the sign is not reversed", "test_gap": "Existing geometry tests establish pixel changes, extent and persistence, not reference likeness or profile shape preservation" }, "checklist": { "why_maximum_slim_differs": "answered: different geometric model, locality and effective strength", "how_profile_is_handled": "answered within checked active thin path: projected 2D landmarks, local directions/radii; no established explicit yaw gate", "full_native_visual_equivalence": "unverified; screenshots are not a synchronized isolated-parameter capture", "product_fix": "not changed by this analysis; installed 1.0.4 retains the reported issue" }, "host_boundary": "User controls Motion/FCP; no UI interaction, host shutdown, app install or plug-in replacement in this analysis." }