distark-render 1.1.16 → 1.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,54 +15,89 @@ const DEFAULT_MOVEMENT_RANGES = {
15
15
  'down-right': { x: 4, y: 2 },
16
16
  '': { x: 0, y: 0 }
17
17
  };
18
- /**
19
- * Compute auto-movement ranges from eye socket polygons.
20
- *
21
- * Mirrors the logic in Body.js `computeIrisScaleFactorFromSockets` so that manual
22
- * eye-position keyframes and automatic wandering use the same socket-derived scale.
23
- *
24
- * For each axis:
25
- * socketHalfPx = full socket bounding-box width/height in pixels ÷ 2
26
- * irisHalfPx = ratio-scaled rendered iris dimension ÷ 2
27
- * strictRange = socketHalfPx irisHalfPx (keeps the iris edge inside socket)
28
- *
29
- * When strictRange > 1 px → use strictRange (hard containment)
30
- * When iris ≥ socket size → use socketHalfPx (iris center moves to socket wall;
31
- * best-effort containment — same fallback as Body.js)
32
- *
33
- * Socket coordinates are stored as 0-100 percentages of the head image dimensions.
34
- * headWidth / headHeight must be the HEAD IMAGE size (dimensionValues.head), not the
35
- * full character body, because the socket is drawn on top of the head sprite in
36
- * EyeSocketModal.
37
- */
38
- function computeMovementRangesFromSockets(eyeSockets, headWidth = 100, headHeight = 100, eyeData) {
18
+ function buildDirectionMap(r) {
19
+ return {
20
+ 'left': { x: -r.negX, y: 0 },
21
+ 'right': { x: r.posX, y: 0 },
22
+ 'up': { x: 0, y: -r.negY },
23
+ 'down': { x: 0, y: r.posY },
24
+ 'center': { x: 0, y: 0 },
25
+ 'up-left': { x: -r.negX * 0.8, y: -r.negY * 0.8 },
26
+ 'up-right': { x: r.posX * 0.8, y: -r.negY * 0.8 },
27
+ 'down-left': { x: -r.negX * 0.8, y: r.posY * 0.8 },
28
+ 'down-right': { x: r.posX * 0.8, y: r.posY * 0.8 },
29
+ '': { x: 0, y: 0 }
30
+ };
31
+ }
32
+ function computeMovementRangesFromSockets(eyeSockets, headWidth = 100, headHeight = 100, eyeData, headJointOffset) {
39
33
  const left = eyeSockets.left;
40
34
  const right = eyeSockets.right;
41
35
  const hasLeft = left && left.length >= 3;
42
36
  const hasRight = right && right.length >= 3;
43
- if (!hasLeft && !hasRight)
44
- return { ...DEFAULT_MOVEMENT_RANGES };
37
+ if (!hasLeft && !hasRight) {
38
+ const defaultRaw = { negX: 5, posX: 5, negY: 3, posY: 3 };
39
+ return {
40
+ left: { ...DEFAULT_MOVEMENT_RANGES }, right: { ...DEFAULT_MOVEMENT_RANGES },
41
+ leftRaw: { ...defaultRaw }, rightRaw: { ...defaultRaw },
42
+ };
43
+ }
45
44
  // Detect whether socket values are 0-100 percentages or raw pixels.
46
45
  const allPts = [...(left || []), ...(right || [])];
47
46
  const maxCoord = Math.max(...allPts.flatMap(p => [p.x, p.y]));
48
47
  const isPercent = maxCoord > 0 && maxCoord <= 100;
49
- const toPixels = (raw, dim) => isPercent ? (raw / 100) * dim : raw;
48
+ const jx = headJointOffset?.x || 0;
49
+ const jy = headJointOffset?.y || 0;
50
+ const toPixels = (val, dim) => isPercent ? (val / 100) * dim : val;
51
+ /**
52
+ * Map a socket percentage point to iris coordinate space (headBaseTransform-local).
53
+ *
54
+ * The head image is drawn at headTransform = headBaseTransform + (jx, jy - H/2).
55
+ * Within the head image, percentage (px, py) maps to pixel offset
56
+ * ((px/100 - 0.5) * W, (py/100 - 0.5) * H) from the image center.
57
+ * Adding the head image offset gives iris-space coordinates.
58
+ */
59
+ const socketPctToIris = (px, py) => {
60
+ if (isPercent) {
61
+ return {
62
+ x: jx + (px / 100 - 0.5) * headWidth,
63
+ y: (jy - headHeight / 2) + (py / 100 - 0.5) * headHeight,
64
+ };
65
+ }
66
+ return { x: px, y: py };
67
+ };
50
68
  /** Full bounding box for one socket polygon. */
51
- const bounds = (points) => {
52
- let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
69
+ const socketBBox = (points) => {
70
+ let mnX = Infinity, mxX = -Infinity, mnY = Infinity, mxY = -Infinity;
53
71
  for (const p of points) {
54
- if (p.x < minX)
55
- minX = p.x;
56
- if (p.x > maxX)
57
- maxX = p.x;
58
- if (p.y < minY)
59
- minY = p.y;
60
- if (p.y > maxY)
61
- maxY = p.y;
72
+ if (p.x < mnX)
73
+ mnX = p.x;
74
+ if (p.x > mxX)
75
+ mxX = p.x;
76
+ if (p.y < mnY)
77
+ mnY = p.y;
78
+ if (p.y > mxY)
79
+ mxY = p.y;
80
+ }
81
+ const topLeft = socketPctToIris(mnX, mnY);
82
+ const botRight = socketPctToIris(mxX, mxY);
83
+ return { minX: topLeft.x, maxX: botRight.x, minY: topLeft.y, maxY: botRight.y };
84
+ };
85
+ /** Bounding-box SIZE for one socket polygon, in pixels (no position). */
86
+ const socketSizePx = (points) => {
87
+ let mnX = Infinity, mxX = -Infinity, mnY = Infinity, mxY = -Infinity;
88
+ for (const p of points) {
89
+ if (p.x < mnX)
90
+ mnX = p.x;
91
+ if (p.x > mxX)
92
+ mxX = p.x;
93
+ if (p.y < mnY)
94
+ mnY = p.y;
95
+ if (p.y > mxY)
96
+ mxY = p.y;
62
97
  }
63
98
  return {
64
- socketW: toPixels(maxX - minX, headWidth),
65
- socketH: toPixels(maxY - minY, headHeight),
99
+ w: toPixels(mxX - mnX, headWidth),
100
+ h: toPixels(mxY - mnY, headHeight),
66
101
  };
67
102
  };
68
103
  // Ratio-scaled iris rendered dimensions (same as renderRig.ts rendering).
@@ -70,52 +105,88 @@ function computeMovementRangesFromSockets(eyeSockets, headWidth = 100, headHeigh
70
105
  const leftIrisH = ((eyeData?.leftIrisHeight || 10) * (eyeData?.leftIrisHeightRatio || 1));
71
106
  const rightIrisW = ((eyeData?.rightIrisWidth || 10) * (eyeData?.rightIrisWidthRatio || 1));
72
107
  const rightIrisH = ((eyeData?.rightIrisHeight || 10) * (eyeData?.rightIrisHeightRatio || 1));
108
+ const edgeFactor = 0.85;
73
109
  /**
74
- * Effective movement half-range for one axis.
75
- * A 15% margin is kept at the socket wall so the iris never travels all the way
76
- * to the boundary (mirrors the edgeFactor concept from the original design).
110
+ * Compute asymmetric per-direction max displacements from the iris BASE
111
+ * position, ensuring the iris edge stays within the usable bounds.
77
112
  *
78
- * When iris fits inside the usable zone: strict containment.
79
- * When iris overflows (oversize iris ratios): iris center travels to the edge of
80
- * the usable zone same best-effort behaviour as Body.js manual mode.
113
+ * usable bounds = socket bbox shrunk by edgeFactor from its center.
114
+ */
115
+ const computeRanges = (bbox, irisBaseX, irisBaseY, irisW, irisH) => {
116
+ const cx = (bbox.minX + bbox.maxX) / 2;
117
+ const cy = (bbox.minY + bbox.maxY) / 2;
118
+ const halfW = (bbox.maxX - bbox.minX) / 2;
119
+ const halfH = (bbox.maxY - bbox.minY) / 2;
120
+ const usableHalfW = halfW * edgeFactor;
121
+ const usableHalfH = halfH * edgeFactor;
122
+ // 0.5 px safety margin absorbs floating-point rounding at socket edges.
123
+ const margin = 0.5;
124
+ const negX = Math.max(0, irisBaseX - (cx - usableHalfW + irisW / 2 + margin));
125
+ const posX = Math.max(0, (cx + usableHalfW - irisW / 2 - margin) - irisBaseX);
126
+ const negY = Math.max(0, irisBaseY - (cy - usableHalfH + irisH / 2 + margin));
127
+ const posY = Math.max(0, (cy + usableHalfH - irisH / 2 - margin) - irisBaseY);
128
+ return { negX, posX, negY, posY };
129
+ };
130
+ /**
131
+ * Size-only symmetric fallback: used when headJointOffset is unavailable
132
+ * and the position-based computation would produce broken results.
81
133
  */
82
- const edgeFactor = 0.85; // 15% soft margin at the socket wall
83
- const effectiveRange = (socketDimPx, irisDimPx) => {
84
- const usableHalf = (socketDimPx / 2) * edgeFactor;
85
- const strict = usableHalf - irisDimPx / 2;
86
- return strict > 1 ? strict : Math.max(1, usableHalf);
134
+ const effectiveRange = (socketDim, irisDim) => {
135
+ const usableHalf = (socketDim / 2) * edgeFactor;
136
+ const raw = usableHalf - irisDim / 2;
137
+ return raw > 1 ? raw : Math.max(1, usableHalf);
138
+ };
139
+ const computeSymmetricRanges = (socketW, socketH, irisW, irisH) => {
140
+ const rangeX = effectiveRange(socketW, irisW);
141
+ const rangeY = effectiveRange(socketH, irisH);
142
+ return { negX: rangeX, posX: rangeX, negY: rangeY, posY: rangeY };
87
143
  };
88
- const rangesX = [];
89
- const rangesY = [];
144
+ const leftIrisBaseX = eyeData?.leftIrisXCoor ?? 0;
145
+ const leftIrisBaseY = eyeData?.leftIrisYCoor ?? 0;
146
+ const rightIrisBaseX = eyeData?.rightIrisXCoor ?? 0;
147
+ const rightIrisBaseY = eyeData?.rightIrisYCoor ?? 0;
148
+ // When headJointOffset is available, use the position-based asymmetric
149
+ // computation which correctly handles off-center irises. Without it the
150
+ // coordinate mapping places sockets far from the actual iris positions,
151
+ // producing wildly inflated ranges — fall back to size-only symmetric ranges.
152
+ const useAsymmetric = headJointOffset != null;
153
+ let leftRanges = { negX: 5, posX: 5, negY: 3, posY: 3 };
154
+ let rightRanges = { negX: 5, posX: 5, negY: 3, posY: 3 };
90
155
  if (hasLeft && left) {
91
- const b = bounds(left);
92
- rangesX.push(effectiveRange(b.socketW, leftIrisW));
93
- rangesY.push(effectiveRange(b.socketH, leftIrisH));
156
+ if (useAsymmetric) {
157
+ const bb = socketBBox(left);
158
+ leftRanges = computeRanges(bb, leftIrisBaseX, leftIrisBaseY, leftIrisW, leftIrisH);
159
+ }
160
+ else {
161
+ const { w, h } = socketSizePx(left);
162
+ leftRanges = computeSymmetricRanges(w, h, leftIrisW, leftIrisH);
163
+ }
94
164
  }
95
165
  if (hasRight && right) {
96
- const b = bounds(right);
97
- rangesX.push(effectiveRange(b.socketW, rightIrisW));
98
- rangesY.push(effectiveRange(b.socketH, rightIrisH));
166
+ if (useAsymmetric) {
167
+ const bb = socketBBox(right);
168
+ rightRanges = computeRanges(bb, rightIrisBaseX, rightIrisBaseY, rightIrisW, rightIrisH);
169
+ }
170
+ else {
171
+ const { w, h } = socketSizePx(right);
172
+ rightRanges = computeSymmetricRanges(w, h, rightIrisW, rightIrisH);
173
+ }
99
174
  }
100
- // Use the most constraining socket so no iris overflows on either side.
101
- const rangeX = Math.min(...rangesX);
102
- const rangeY = Math.min(...rangesY);
103
- console.log('[EyeSystem] Socket-derived movement range:', {
104
- rangeX, rangeY,
175
+ if (!hasLeft && hasRight)
176
+ leftRanges = rightRanges;
177
+ else if (hasLeft && !hasRight)
178
+ rightRanges = leftRanges;
179
+ console.log('[EyeSystem] Socket-derived per-eye movement ranges:', {
180
+ left: leftRanges, right: rightRanges,
105
181
  leftIrisRendered: { w: leftIrisW, h: leftIrisH },
106
182
  rightIrisRendered: { w: rightIrisW, h: rightIrisH },
183
+ mode: useAsymmetric ? 'asymmetric (headJointOffset available)' : 'symmetric (size-only fallback)',
107
184
  });
108
185
  return {
109
- 'left': { x: -rangeX, y: 0 },
110
- 'right': { x: rangeX, y: 0 },
111
- 'up': { x: 0, y: -rangeY },
112
- 'down': { x: 0, y: rangeY },
113
- 'center': { x: 0, y: 0 },
114
- 'up-left': { x: -rangeX * 0.8, y: -rangeY * 0.8 },
115
- 'up-right': { x: rangeX * 0.8, y: -rangeY * 0.8 },
116
- 'down-left': { x: -rangeX * 0.8, y: rangeY * 0.8 },
117
- 'down-right': { x: rangeX * 0.8, y: rangeY * 0.8 },
118
- '': { x: 0, y: 0 }
186
+ left: buildDirectionMap(leftRanges),
187
+ right: buildDirectionMap(rightRanges),
188
+ leftRaw: leftRanges,
189
+ rightRaw: rightRanges,
119
190
  };
120
191
  }
121
192
  /**
@@ -145,20 +216,27 @@ export class EyeSystem {
145
216
  hasValidSockets
146
217
  });
147
218
  if (hasValidSockets && eyeSockets) {
148
- this.movementRanges = computeMovementRangesFromSockets(eyeSockets, options?.headWidth ?? 100, options?.headHeight ?? 100, eyeData);
149
- // Max range for manual -2 to 2 scale (use 'right' as reference for X, 'down' for Y)
150
- const maxRangeX = Math.abs(this.movementRanges['right'].x);
151
- const maxRangeY = Math.abs(this.movementRanges['down'].y);
152
- this.manualScaleFactor = Math.max(maxRangeX, maxRangeY) / 2; // 2 = max of -2 to 2 range
153
- console.log('[EyeSystem] Movement ranges from sockets:', {
219
+ this.perEyeRanges = computeMovementRangesFromSockets(eyeSockets, options?.headWidth ?? 100, options?.headHeight ?? 100, eyeData, options?.headJointOffset);
220
+ const lr = this.perEyeRanges.left;
221
+ const rr = this.perEyeRanges.right;
222
+ this._leftManualScale = Math.max(Math.abs(lr['left'].x), Math.abs(lr['right'].x), Math.abs(lr['up'].y), Math.abs(lr['down'].y)) / 2;
223
+ this._rightManualScale = Math.max(Math.abs(rr['left'].x), Math.abs(rr['right'].x), Math.abs(rr['up'].y), Math.abs(rr['down'].y)) / 2;
224
+ console.log('[EyeSystem] Per-eye movement ranges from sockets:', {
154
225
  characterId: this.characterId,
155
- movementRanges: this.movementRanges,
156
- manualScaleFactor: this.manualScaleFactor
226
+ leftRanges: this.perEyeRanges.left,
227
+ rightRanges: this.perEyeRanges.right,
228
+ leftManualScale: this._leftManualScale,
229
+ rightManualScale: this._rightManualScale
157
230
  });
158
231
  }
159
232
  else {
160
- this.movementRanges = { ...DEFAULT_MOVEMENT_RANGES };
161
- this.manualScaleFactor = 2.5; // Legacy default
233
+ const defaultRaw = { negX: 5, posX: 5, negY: 3, posY: 3 };
234
+ this.perEyeRanges = {
235
+ left: { ...DEFAULT_MOVEMENT_RANGES }, right: { ...DEFAULT_MOVEMENT_RANGES },
236
+ leftRaw: { ...defaultRaw }, rightRaw: { ...defaultRaw },
237
+ };
238
+ this._leftManualScale = 2.5;
239
+ this._rightManualScale = 2.5;
162
240
  }
163
241
  // Store immutable copy of base iris coordinates
164
242
  // This prevents accumulation when rigData is updated
@@ -306,12 +384,12 @@ export class EyeSystem {
306
384
  */
307
385
  setEyeDirection(direction) {
308
386
  this.state.currentDirection = direction;
309
- const movement = this.movementRanges[direction] || { x: 0, y: 0 };
310
- // Apply movement to base positions (immutable reference)
311
- this.state.leftIrisX = this.baseIrisCoords.leftX + movement.x;
312
- this.state.leftIrisY = this.baseIrisCoords.leftY + movement.y;
313
- this.state.rightIrisX = this.baseIrisCoords.rightX + movement.x;
314
- this.state.rightIrisY = this.baseIrisCoords.rightY + movement.y;
387
+ const leftMov = this.perEyeRanges.left[direction] || { x: 0, y: 0 };
388
+ const rightMov = this.perEyeRanges.right[direction] || { x: 0, y: 0 };
389
+ this.state.leftIrisX = this.baseIrisCoords.leftX + leftMov.x;
390
+ this.state.leftIrisY = this.baseIrisCoords.leftY + leftMov.y;
391
+ this.state.rightIrisX = this.baseIrisCoords.rightX + rightMov.x;
392
+ this.state.rightIrisY = this.baseIrisCoords.rightY + rightMov.y;
315
393
  }
316
394
  /**
317
395
  * Calculate eye direction to look at a target position
@@ -494,18 +572,41 @@ export class EyeSystem {
494
572
  * - +2 represents maximum right/up
495
573
  */
496
574
  setManualIrisPositions(eyePositions, currentTime) {
497
- // scaleFactor converts -2 to 2 range into pixel offsets (derived from eye socket bounds when available)
498
- const scaleFactor = this.manualScaleFactor;
499
- // Apply manual offsets to base positions (using immutable baseIrisCoords)
500
- this.state.leftIrisX = this.baseIrisCoords.leftX + (eyePositions.left.x * scaleFactor);
501
- this.state.leftIrisY = this.baseIrisCoords.leftY + (eyePositions.left.y * scaleFactor);
502
- this.state.rightIrisX = this.baseIrisCoords.rightX + (eyePositions.right.x * scaleFactor);
503
- this.state.rightIrisY = this.baseIrisCoords.rightY + (eyePositions.right.y * scaleFactor);
504
- // Update last updated time to prevent automatic movement from overriding manual positioning
575
+ const lr = this.perEyeRanges.leftRaw;
576
+ const rr = this.perEyeRanges.rightRaw;
577
+ // Map -2..+2 input to asymmetric pixel offsets per direction.
578
+ // input/2 normalizes to -1..+1, then scale by the directional limit:
579
+ // -2 -negRange (max negative), 0 → 0, +2 → +posRange (max positive)
580
+ const mapAxis = (input, neg, pos) => {
581
+ const t = input / 2;
582
+ return t < 0 ? t * neg : t * pos;
583
+ };
584
+ this.state.leftIrisX = this.baseIrisCoords.leftX + mapAxis(eyePositions.left.x, lr.negX, lr.posX);
585
+ this.state.leftIrisY = this.baseIrisCoords.leftY + mapAxis(eyePositions.left.y, lr.negY, lr.posY);
586
+ this.state.rightIrisX = this.baseIrisCoords.rightX + mapAxis(eyePositions.right.x, rr.negX, rr.posX);
587
+ this.state.rightIrisY = this.baseIrisCoords.rightY + mapAxis(eyePositions.right.y, rr.negY, rr.posY);
505
588
  this.state.eyeLastUpdatedTime = currentTime;
506
- // Mark as custom position
507
589
  this.state.currentDirection = '';
508
590
  }
591
+ /**
592
+ * Raw per-direction ranges for each eye.
593
+ * Used by external preview code (e.g. calculatePreviewPosition) to normalize
594
+ * mouse offsets to the -2..+2 scale using the same asymmetric limits.
595
+ */
596
+ getDirectionalRanges() {
597
+ return { left: this.perEyeRanges.leftRaw, right: this.perEyeRanges.rightRaw };
598
+ }
599
+ /**
600
+ * Symmetric manual scale factor (min of left/right) for backward compatibility.
601
+ * Body.js reads this property to detect and override broken scales.
602
+ */
603
+ get manualScaleFactor() {
604
+ return Math.min(this._leftManualScale, this._rightManualScale);
605
+ }
606
+ set manualScaleFactor(value) {
607
+ this._leftManualScale = value;
608
+ this._rightManualScale = value;
609
+ }
509
610
  /**
510
611
  * Get debug info
511
612
  */
@@ -525,34 +626,37 @@ export class EyeSystem {
525
626
  * @param options - Optional: { eyeSockets, headWidth, headHeight } - when provided, movement ranges are computed from eye socket polygons
526
627
  */
527
628
  export function createEyeSystem(characterId, eyeDataOrRigData, options) {
528
- // Check if rigData object was passed (has eyeSockets or eyes property)
529
629
  const isRigData = eyeDataOrRigData && typeof eyeDataOrRigData === 'object' &&
530
630
  ('eyeSockets' in eyeDataOrRigData || 'eyes' in eyeDataOrRigData);
531
631
  if (isRigData) {
532
632
  const rigData = eyeDataOrRigData;
533
633
  const eyeData = rigData.eyes || {};
534
- // Prefer rigData's eyeSockets over options
535
634
  const eyeSockets = rigData.eyeSockets || options?.eyeSockets;
536
- const headWidth = rigData.width || options?.headWidth;
537
- const headHeight = rigData.height || options?.headHeight;
635
+ // Socket coordinates are 0-100 percentages of the HEAD image, so we
636
+ // must use the head's own dimensions — not the rig-level width/height.
637
+ const headDims = rigData.dimensionValues?.head;
638
+ const headWidth = headDims?.width || options?.headWidth;
639
+ const headHeight = headDims?.height || options?.headHeight;
640
+ const headJointOffset = rigData.jointOffset?.['torso_head'];
538
641
  if (eyeSockets) {
539
642
  return new EyeSystem(characterId, {
540
643
  eyeData,
541
644
  eyeSockets,
542
645
  headWidth,
543
- headHeight
646
+ headHeight,
647
+ headJointOffset
544
648
  });
545
649
  }
546
650
  return new EyeSystem(characterId, eyeData);
547
651
  }
548
- // Legacy: eyeData passed directly
549
652
  const eyeData = eyeDataOrRigData;
550
653
  if (options?.eyeSockets) {
551
654
  return new EyeSystem(characterId, {
552
655
  eyeData,
553
656
  eyeSockets: options.eyeSockets,
554
657
  headWidth: options.headWidth,
555
- headHeight: options.headHeight
658
+ headHeight: options.headHeight,
659
+ headJointOffset: options.headJointOffset
556
660
  });
557
661
  }
558
662
  return new EyeSystem(characterId, eyeData);
@@ -1 +1 @@
1
- {"version":3,"file":"eyeSystem.js","sourceRoot":"","sources":["../../modules/eyeSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eyeSystem.js","sourceRoot":"","sources":["../../modules/eyeSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Test: Eye Iris Extreme Positions — Visual Verification
3
+ *
4
+ * Loads a character rig JSON and renders the irises at the four most extreme
5
+ * cardinal positions (left, right, up, down) as computed from the eye socket
6
+ * bounding calculations.
7
+ *
8
+ * Usage:
9
+ * npx tsx tests/test-eye-extremes-visual.ts [path/to/rig.json]
10
+ *
11
+ * Defaults to assets/KidB.json when no argument is given.
12
+ *
13
+ * Output images (in test-outputs/):
14
+ * <name>-socket-bounds.png — full rig with socket polygon overlays
15
+ * <name>-usable-bounds.png — full rig with usable bounds overlays
16
+ * <name>-iris-extreme-*.png — iris-only + solid bounding boxes (no rig)
17
+ *
18
+ * The core assertion: at each extreme position, each iris must be completely
19
+ * contained inside its own usable bounding box (verified via pixel checks).
20
+ */
21
+ export {};
22
+ //# sourceMappingURL=test-eye-extremes-visual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-eye-extremes-visual.d.ts","sourceRoot":"","sources":["../../tests/test-eye-extremes-visual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}