@bitefoundry/retrieviewer 0.0.20 → 0.0.21
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.
- package/README.ko.md +7 -0
- package/README.md +8 -0
- package/RELEASING.md +17 -0
- package/integrations/native-windows/manifest.json +2 -2
- package/integrations/native-windows/runtime.bundle.mjs +108 -54
- package/integrations/purrviewer/ART.md +24 -1
- package/integrations/purrviewer/art/ginger.bin.gz +0 -0
- package/integrations/purrviewer/art/ginger.json +227 -17
- package/integrations/purrviewer/art/ginger.rvz +0 -0
- package/integrations/purrviewer/src/facing.mjs +16 -0
- package/integrations/purrviewer/src/life.mjs +1 -1
- package/integrations/purrviewer/src/purrviewer-core.mjs +42 -19
- package/package.json +2 -1
- package/puppy-mouth-anchor.json +1 -1
- package/puppy-mouth-anchor.mjs +7 -4
- package/puppy-paper.mjs +8 -5
package/README.ko.md
CHANGED
|
@@ -148,6 +148,13 @@ JS 플러그인과 JSONL 브리지를 제공해요. 화면·입력·시간 제
|
|
|
148
148
|
AI로 생성한 그림에 자세 정렬·접지·프레임 처리를 적용한 애니메이션입니다.
|
|
149
149
|
실제 모션 캡처나 자의식이 있는 강아지라고 주장하지 않아요.
|
|
150
150
|
|
|
151
|
+
## 0.0.21
|
|
152
|
+
|
|
153
|
+
고양이가 앞뒤로 돌아서 걷는 자세를 연결하고, 점프 중간 그림과 작은 수면
|
|
154
|
+
움직임을 추가했어요. 한 원화에 겹쳐 있던 고양이도 지웠어요. 강아지는
|
|
155
|
+
공놀이 출발·복귀 자세와 입에 문 공의 연결을 다듬었습니다. 기존 두 프레임
|
|
156
|
+
캐시는 유지해요. 코드는 MIT, 두 펫의 그림은 CC BY-SA4.0입니다.
|
|
157
|
+
|
|
151
158
|
## 0.0.20
|
|
152
159
|
|
|
153
160
|
Windows에서 화면 일부가 깜빡이던 문제를 고쳤어요. 장면 전체를 창 하나로
|
package/README.md
CHANGED
|
@@ -189,6 +189,14 @@ The puppy artwork was developed with AI-generated imagery and programmatic pose,
|
|
|
189
189
|
grounding and frame processing. It is authored animation, not motion capture or
|
|
190
190
|
a claim of sentience.
|
|
191
191
|
|
|
192
|
+
## 0.0.21
|
|
193
|
+
|
|
194
|
+
Cat turns now connect through standing poses before walking or pouncing. Jump
|
|
195
|
+
breakdowns and small sleep-fur/ear changes add motion without enlarging the
|
|
196
|
+
two-frame cache. A stray duplicate cat in one drawing is removed. Dog departure
|
|
197
|
+
and return turns share standing endpoints, with the carried ball attached to
|
|
198
|
+
the visible muzzle. Code remains MIT; both pets’ artwork is CC BY-SA4.0.
|
|
199
|
+
|
|
192
200
|
## 0.0.20
|
|
193
201
|
|
|
194
202
|
Fixes Windows flicker introduced by the split-window painter. The whole scene
|
package/RELEASING.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
# Retrieviewer 0.0.21 release process
|
|
2
|
+
|
|
3
|
+
Current target: `@bitefoundry/retrieviewer@0.0.21`, public `latest`.
|
|
4
|
+
The owner accepted the local six-finding repair candidate and asked to proceed.
|
|
5
|
+
Ship the reviewed dog standing-turn/mouth repairs and77-key cat atlas, preserving
|
|
6
|
+
64 original cat drawings exactly. Cat source pin: `79a47c2d618b91945997035e6c7502c43f471f62`.
|
|
7
|
+
Keep physics, bounded caches, the coherent native painter and existing licenses.
|
|
8
|
+
|
|
9
|
+
Run full tests and release/package checks, install and compare the exact archive,
|
|
10
|
+
exercise its Windows adapter, then push and wait for Windows/Linux CI. Publish
|
|
11
|
+
that same archive, verify registry integrity and a fresh consumer, and verify
|
|
12
|
+
the matching bilingual Pages deployment and pinned cat hashes. Current memory
|
|
13
|
+
evidence is4K35s basic-mode sampling, not a long-run ceiling; see
|
|
14
|
+
[repair evidence](research/pet-motion-repair-20261025.md). Raw sheets stay private.
|
|
15
|
+
|
|
16
|
+
## Previous0.0.20 scope (historical)
|
|
17
|
+
|
|
1
18
|
# Retrieviewer 0.0.20 release process
|
|
2
19
|
|
|
3
20
|
Current target: `@bitefoundry/retrieviewer@0.0.20`, public `latest`.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"platform": "win32-x64",
|
|
4
4
|
"files": {
|
|
5
5
|
"runtime.bundle.mjs": {
|
|
6
|
-
"bytes":
|
|
7
|
-
"sha256": "
|
|
6
|
+
"bytes": 242314,
|
|
7
|
+
"sha256": "0ce3c30a1b23901510a6a794373b20dd0f2b69093382e9ecd29d9103bc8cba41"
|
|
8
8
|
},
|
|
9
9
|
"bin/win32-x64/retrieviewer-native.exe": {
|
|
10
10
|
"bytes": 1562624,
|
|
@@ -1240,8 +1240,12 @@ function createComfortSpriteSampler(bytes, info, output) {
|
|
|
1240
1240
|
}
|
|
1241
1241
|
|
|
1242
1242
|
// puppy-mouth-anchor.mjs
|
|
1243
|
-
var MOUTH_ANCHORS = { version: 1, ballRadiusPx: 17.5, families: { approach: { sha256: "f5558c57d5a445d396e06c060f9f8d64e6ce0ff5b9b92fa6d77ef9bb2984a2fe", frames: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, [224.66, 147.5, 0.9, 0.904], [222.44, 147.33, 0.9, 0.915], [219.17, 148.34, 0.9, 0.934], [215.72, 149.59, 0.92, 0.945], [212.89, 150.36, 0.92, 0.957], [209.34, 151.71, 0.94, 0.966], [206.61, 152.52, 0.94, 0.972], [202.85, 153.49, 0.94, 0.965], [202.85, 153.49, 0.94, 0.965], [198.71, 154.18, 0.96, 0.966], [195.56, 154.22, 0.96, 0.97], [191.82, 155.11, 0.98, 0.967], [188.11, 155.2, 0.98, 0.966], [184.12, 154.72, 0.96, 0.966], [180.5, 154.77, 0.96, 0.968], [177.45, 154.9, 0.96, 0.97], [173.13, 154.91, 0.96, 0.965], [173.13, 154.91, 0.96, 0.965], [175.53, 155.91, 0.96, 0.974], [177.69, 157.9, 0.98, 0.976], [179.97, 159.24, 0.98, 0.983], [182.41, 161.16, 0.98, 0.988], [184.55, 162.2, 0.98, 0.987], [186.96, 165.39, 1, 0.991], [189.54, 166, 0.98, 0.986], [191.7, 168.3, 1, 1], [191.7, 168.3, 1, 1], [190.78, 168.33, 1, 0.999], [190.26, 168.08, 0.98, 0.983], [189.46, 169.24, 1, 0.994], [188.66, 169.45, 1, 0.988], [187.9, 169.62, 1, 0.977], [187.07, 168.92, 0.98, 0.971], [186.15, 171.37, 1.02, 0.964], [185.12, 171.44, 1.02, 0.959], [185.12, 171.44, 1.02, 0.959], [183.01, 167.4, 0.98, 0.967], [180.53, 166.1, 1, 0.965], [178.7, 163.98, 0.98, 0.962], [176.6, 160.9, 0.96, 0.958], [174.17, 158.89, 0.96, 0.958], [172.42, 158.03, 0.98, 0.948], [170.58, 155.84, 0.96, 0.945], [168.27, 154.8, 0.98, 0.932], [168.27, 154.8, 0.98, 0.932], [168.28, 154.25, 0.98, 0.941], [167.82, 153.76, 0.98, 0.938], [167.36, 153.07, 0.98, 0.941], [167.1, 151.76, 0.96, 0.941], [166.97, 152.2, 0.98, 0.947], [166.89, 151.46, 0.98, 0.944], [166.21, 151.32, 0.98, 0.944], [166.05, 150.38, 0.98, 0.943], [166.05, 150.38, 0.98, 0.943], [168.13, 148.79, 0.96, 0.945], [169.85, 149.25, 0.98, 0.951], [172.04, 147.99, 0.98, 0.948], [174.87, 146.91, 0.98, 0.947], [176.38, 147.11, 1, 0.947], [179.35, 146.95, 1.02, 0.941], [181.18, 146.19, 1.02, 0.943], [183.86, 145.25, 1.02, 0.942], [183.86, 145.25, 1.02, 0.942], [182.95, 145.34, 1.02, 0.946], [182.65, 145.38, 1.02, 0.953], [181.7, 145.7, 1.02, 0.948], [181.06, 145.96, 1.02, 0.949], [180.46, 145.26, 1, 0.954], [179.53, 146.46, 1.02, 0.949], [179.36, 146.51, 1.02, 0.948], [178.41, 146.53, 1.02, 0.947], [178.41, 146.53, 1.02, 0.947], [180.31, 147.47, 1.02, 0.952], [181.26, 147.72, 1.02, 0.954], [183.14, 147.04, 0.98, 0.957], [184.8, 149.17, 1, 0.967], [186.42, 150.19, 1, 0.966], [188.41, 150.46, 1, 0.966], [189.95, 151.41, 1, 0.971], [191.61, 152.4, 1, 0.971], [191.61, 152.4, 1, 0.971], [189.01, 151.48, 1, 0.971], [186.85, 151.25, 1, 0.979], [184.64, 150.57, 1, 0.975], [182.06, 149.13, 0.98, 0.974], [179.48, 149.48, 1, 0.976], [177.17, 149.61, 1.02, 0.976], [175.2, 149.27, 1.02, 0.979], [172.3, 148.6, 1.02, 0.975], [172.3, 148.6, 1.02, 0.975], [175.21, 151.35, 1.02, 0.979], [177.27, 153.34, 1.02, 0.982], [179.97, 155.12, 1, 0.983], [181.35, 158.65, 1.02, 0.988], [184.96, 160.94, 1, 0.987], [187.54, 163.29, 1, 0.996], [189.22, 166.33, 1.02, 0.992], [191.7, 168.3, 1, 1], [191.7, 168.3, 1, 1], [189.18, 166.28, 1, 0.99], [186.95, 164.07, 0.98, 0.991], [184.75, 163.57, 1, 0.987], [182.21, 160.91, 0.98, 0.986], [180.15, 158.8, 0.96, 0.98], [177.73, 156.71, 0.96, 0.974], [175.67, 155.87, 0.96, 0.97], [173.13, 154.91, 0.96, 0.965], [173.13, 154.91, 0.96, 0.965], [176.75, 154.83, 0.96, 0.966], [180.19, 154.77, 0.96, 0.966], [183.7, 154.69, 0.96, 0.966], [187.78, 153.74, 0.94, 0.965], [191.91, 155.07, 0.98, 0.968], [195.35, 154.27, 0.96, 0.969], [199.09, 154.17, 0.96, 0.968], [202.85, 153.49, 0.94, 0.965], [202.85, 153.49, 0.94, 0.965], [206.07, 152.72, 0.94, 0.968], [209.04, 152.89, 0.96, 0.962], [211.97, 151.51, 0.94, 0.959], [215.45, 150.92, 0.94, 0.941], [218.71, 149.41, 0.92, 0.933], [221.75, 148.5, 0.9, 0.92], [224.95, 147.58, 0.9, 0.903], null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, behaviors: { sha256: "7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d", frames: [[201.21, 166.15, 0.98, 0.959], [200.4, 166.14, 0.98, 0.961], [200.13, 166.16, 0.98, 0.963], [199.21, 166.15, 0.98, 0.964], [198.65, 166.13, 0.98, 0.964], [197.98, 166.12, 0.98, 0.967], [197.08, 166.1, 0.98, 0.966], [196.87, 166.13, 0.98, 0.966], [195.93, 166.1, 0.98, 0.965], [195.93, 166.1, 0.98, 0.965], [196.01, 166.1, 0.98, 0.967], [196.35, 166.05, 0.98, 0.96], [196.85, 166.1, 0.98, 0.966], [197.08, 166.07, 0.98, 0.964], [197.25, 166.07, 0.98, 0.96], [197.72, 166.12, 0.98, 0.963], [198.13, 166.05, 0.98, 0.957], [198.18, 166.04, 0.98, 0.954], [198.18, 166.04, 0.98, 0.954], [198.23, 166.06, 0.98, 0.957], [198.26, 166.09, 0.98, 0.957], [198.28, 166.12, 0.98, 0.958], [198.81, 167.29, 1, 0.968], [198.92, 167.34, 1, 0.966], [198.98, 167.37, 1, 0.964], [199.06, 167.41, 1, 0.962], [199.07, 167.42, 1, 0.96], [199.07, 167.42, 1, 0.96], [199.16, 167.39, 1, 0.96], [199.43, 167.35, 1, 0.96], [199.96, 167.33, 1, 0.965], [200.14, 166.34, 0.98, 0.965], [200.28, 166.27, 0.98, 0.963], [200.84, 166.24, 0.98, 0.965], [201.14, 166.17, 0.98, 0.962], [201.21, 166.15, 0.98, 0.959], [191.7, 168.3, 1, 1], [192.77, 168.21, 1, 0.999], [194.11, 167.32, 0.98, 0.992], [195.54, 167.92, 1, 0.986], [196.71, 166.87, 0.98, 0.982], [197.88, 167.48, 1, 0.978], [199.08, 166.37, 0.98, 0.973], [200.32, 166.2, 0.98, 0.965], [201.21, 166.15, 0.98, 0.959], [201.21, 166.15, 0.98, 0.959], [201.8, 170.56, 1, 0.964], [202.18, 172.74, 0.98, 0.965], [202.46, 176.13, 0.98, 0.966], [203.09, 179.85, 0.98, 0.968], [203.28, 183.55, 0.98, 0.961], [203.98, 187.56, 1, 0.963], [204.72, 190.66, 1, 0.967], [204.91, 194.05, 1, 0.954], [204.91, 194.05, 1, 0.954], [203.9, 194.08, 1, 0.956], [202.88, 194.15, 0.98, 0.958], [201.8, 195, 1, 0.958], [200.65, 195.45, 1, 0.961], [199.66, 196.08, 1, 0.957], [198.46, 196.15, 1, 0.953], [197.37, 196.24, 0.98, 0.95], [196.35, 196.3, 0.98, 0.947], [196.35, 196.3, 0.98, 0.947], [192.86, 196.11, 1, 0.951], [190.53, 196.01, 1, 0.951], [187.51, 196, 1, 0.949], [184.08, 194.32, 0.98, 0.952], [180.99, 193.88, 0.98, 0.949], [177.81, 194.62, 1, 0.949], [175.36, 194.61, 1.02, 0.95], [171.67, 193.62, 1, 0.944], [171.67, 193.62, 1, 0.944], [174.59, 193.5, 1.02, 0.952], [177.38, 192.46, 1.02, 0.95], [180.43, 190.38, 1, 0.957], [183.32, 188.01, 0.98, 0.95], [186.05, 187, 0.98, 0.954], [189.53, 187.6, 1.02, 0.95], [192.59, 185.84, 1, 0.945], [195.46, 183.93, 0.98, 0.942], [195.46, 183.93, 0.98, 0.942], [195.23, 182.08, 0.98, 0.958], [194.56, 180.73, 1, 0.963], [194.34, 179.26, 1, 0.974], [193.93, 177.12, 1, 0.982], [193.33, 175.54, 1.02, 0.983], [192.7, 173.2, 1, 0.996], [192.66, 170.55, 1, 0.992], [191.7, 168.3, 1, 1], null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, seat: { sha256: "613dbeeeaec11804e80db0216922c8f62294745514ee6283bdce61a6d784dd5e", frames: [[191.7, 168.3, 1, 1], [187.28, 167.83, 0.98, 0.992], [186.01, 168.11, 0.98, 0.997], [184.36, 167.85, 0.96, 0.997], [182.14, 168.27, 0.96, 0.99], [179.4, 167.97, 0.94, 0.989], [177.05, 167.47, 0.92, 0.991], [174.39, 167.11, 0.9, 0.982], [171.52, 167.84, 0.9, 0.977], [169.74, 168.03, 0.9, 0.978], [166.37, 168.27, 0.9, 0.98], [163.95, 166.65, 0.86, 0.975], [161.1, 167.16, 0.86, 0.973], [158.82, 167.1, 0.86, 0.97], [157.06, 167.85, 0.86, 0.97], [155.39, 167.09, 0.84, 0.966], [152.19, 167.86, 0.84, 0.951], [152.19, 167.86, 0.84, 0.951], [152.24, 167.87, 0.84, 0.952], [152.26, 167.86, 0.84, 0.953], [152.26, 167.85, 0.84, 0.953], [152.27, 167.85, 0.84, 0.953], [152.3, 167.84, 0.84, 0.954], [152.33, 167.83, 0.84, 0.954], [152.69, 166.08, 0.8, 0.956], [152.75, 166.06, 0.8, 0.956], [152.77, 166.04, 0.8, 0.957], [153.16, 166.03, 0.8, 0.957], [153.19, 166.03, 0.8, 0.956], [153.21, 166.02, 0.8, 0.955], [153.23, 166.02, 0.8, 0.955], [153.27, 166.02, 0.8, 0.953], [153.37, 166.03, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [154.28, 166.02, 0.8, 0.954], [154.49, 166.87, 0.82, 0.951], [155.31, 165.99, 0.8, 0.953], [156.08, 165.96, 0.8, 0.956], [156.67, 166.83, 0.82, 0.958], [157.34, 166.82, 0.82, 0.955], [158.31, 166.73, 0.82, 0.956], [158.83, 166.62, 0.82, 0.96], [159.42, 166.54, 0.82, 0.958], [160.23, 166.48, 0.82, 0.952], [160.85, 166.5, 0.82, 0.954], [161.4, 166.49, 0.82, 0.954], [162.04, 166.45, 0.82, 0.947], [162.98, 166.47, 0.82, 0.947], [163.19, 166.46, 0.82, 0.946], [164.02, 166.47, 0.82, 0.945]] }, arrivalSeat: { sha256: "13acb62fd573ff7ef97bcf59be80757897fe9d1784f187ab278990ff94a643b9", frames: [[195.46, 183.93, 0.98, 0.942], [191.05, 182.87, 0.98, 0.955], [189.92, 182.76, 0.98, 0.95], [187.17, 181.29, 0.96, 0.954], [184.77, 179.89, 0.94, 0.954], [182.36, 179.93, 0.96, 0.955], [179.54, 177.85, 0.94, 0.96], [176.3, 176.4, 0.92, 0.959], [174.08, 175.36, 0.9, 0.966], [171.91, 174.25, 0.9, 0.958], [168.15, 172.23, 0.88, 0.953], [165.17, 170.82, 0.86, 0.963], [162.45, 171.28, 0.88, 0.959], [160.06, 170.01, 0.86, 0.965], [157.6, 169.78, 0.86, 0.959], [155.67, 167.31, 0.82, 0.96], [152.19, 167.86, 0.84, 0.951], [152.19, 167.86, 0.84, 0.951], [152.24, 167.87, 0.84, 0.952], [152.26, 167.86, 0.84, 0.953], [152.26, 167.85, 0.84, 0.953], [152.27, 167.85, 0.84, 0.953], [152.3, 167.84, 0.84, 0.954], [152.33, 167.83, 0.84, 0.954], [152.69, 166.08, 0.8, 0.956], [152.75, 166.06, 0.8, 0.956], [152.77, 166.04, 0.8, 0.957], [153.16, 166.03, 0.8, 0.957], [153.19, 166.03, 0.8, 0.956], [153.21, 166.02, 0.8, 0.955], [153.23, 166.02, 0.8, 0.955], [153.27, 166.02, 0.8, 0.953], [153.37, 166.03, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [154.28, 166.02, 0.8, 0.954], [154.49, 166.87, 0.82, 0.951], [155.31, 165.99, 0.8, 0.953], [156.08, 165.96, 0.8, 0.956], [156.67, 166.83, 0.82, 0.958], [157.34, 166.82, 0.82, 0.955], [158.31, 166.73, 0.82, 0.956], [158.83, 166.62, 0.82, 0.96], [159.42, 166.54, 0.82, 0.958], [160.23, 166.48, 0.82, 0.952], [160.85, 166.5, 0.82, 0.954], [161.4, 166.49, 0.82, 0.954], [162.04, 166.45, 0.82, 0.947], [162.98, 166.47, 0.82, 0.947], [163.19, 166.46, 0.82, 0.946], [164.02, 166.47, 0.82, 0.945]] } } };
|
|
1243
|
+
var MOUTH_ANCHORS = { version: 1, canonical: 320, ballRadiusPx: 17.5, mouthOffsetPx: 25, minScore: 0.9, seed: { family: "approach", frame: 45, box: [158, 108, 68, 50], nose: [191.7, 143.3] }, method: "cv2 TM_CCOEFF_NORMED multi-scale match of measured eyes+nose seed; mouth = nose + scale*offset (down)", unsupported: "front side-view tween, rear, actions (incl. walk-enter/walk), interactions, behaviors watch/rest", families: { approach: { cache: "puppy-paper-approach.bin.gz", sha256: "f5558c57d5a445d396e06c060f9f8d64e6ce0ff5b9b92fa6d77ef9bb2984a2fe", samples: 9, covered: 124, frames: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, [224.66, 147.5, 0.9, 0.904], [222.44, 147.33, 0.9, 0.915], [219.17, 148.34, 0.9, 0.934], [215.72, 149.59, 0.92, 0.945], [212.89, 150.36, 0.92, 0.957], [209.34, 151.71, 0.94, 0.966], [206.61, 152.52, 0.94, 0.972], [202.85, 153.49, 0.94, 0.965], [202.85, 153.49, 0.94, 0.965], [198.71, 154.18, 0.96, 0.966], [195.56, 154.22, 0.96, 0.97], [191.82, 155.11, 0.98, 0.967], [188.11, 155.2, 0.98, 0.966], [184.12, 154.72, 0.96, 0.966], [180.5, 154.77, 0.96, 0.968], [177.45, 154.9, 0.96, 0.97], [173.13, 154.91, 0.96, 0.965], [173.13, 154.91, 0.96, 0.965], [175.53, 155.91, 0.96, 0.974], [177.69, 157.9, 0.98, 0.976], [179.97, 159.24, 0.98, 0.983], [182.41, 161.16, 0.98, 0.988], [184.55, 162.2, 0.98, 0.987], [186.96, 165.39, 1, 0.991], [189.54, 166, 0.98, 0.986], [191.7, 168.3, 1, 1], [191.7, 168.3, 1, 1], [190.78, 168.33, 1, 0.999], [190.26, 168.08, 0.98, 0.983], [189.46, 169.24, 1, 0.994], [188.66, 169.45, 1, 0.988], [187.9, 169.62, 1, 0.977], [187.07, 168.92, 0.98, 0.971], [186.15, 171.37, 1.02, 0.964], [185.12, 171.44, 1.02, 0.959], [185.12, 171.44, 1.02, 0.959], [183.01, 167.4, 0.98, 0.967], [180.53, 166.1, 1, 0.965], [178.7, 163.98, 0.98, 0.962], [176.6, 160.9, 0.96, 0.958], [174.17, 158.89, 0.96, 0.958], [172.42, 158.03, 0.98, 0.948], [170.58, 155.84, 0.96, 0.945], [168.27, 154.8, 0.98, 0.932], [168.27, 154.8, 0.98, 0.932], [168.28, 154.25, 0.98, 0.941], [167.82, 153.76, 0.98, 0.938], [167.36, 153.07, 0.98, 0.941], [167.1, 151.76, 0.96, 0.941], [166.97, 152.2, 0.98, 0.947], [166.89, 151.46, 0.98, 0.944], [166.21, 151.32, 0.98, 0.944], [166.05, 150.38, 0.98, 0.943], [166.05, 150.38, 0.98, 0.943], [168.13, 148.79, 0.96, 0.945], [169.85, 149.25, 0.98, 0.951], [172.04, 147.99, 0.98, 0.948], [174.87, 146.91, 0.98, 0.947], [176.38, 147.11, 1, 0.947], [179.35, 146.95, 1.02, 0.941], [181.18, 146.19, 1.02, 0.943], [183.86, 145.25, 1.02, 0.942], [183.86, 145.25, 1.02, 0.942], [182.95, 145.34, 1.02, 0.946], [182.65, 145.38, 1.02, 0.953], [181.7, 145.7, 1.02, 0.948], [181.06, 145.96, 1.02, 0.949], [180.46, 145.26, 1, 0.954], [179.53, 146.46, 1.02, 0.949], [179.36, 146.51, 1.02, 0.948], [178.41, 146.53, 1.02, 0.947], [178.41, 146.53, 1.02, 0.947], [180.31, 147.47, 1.02, 0.952], [181.26, 147.72, 1.02, 0.954], [183.14, 147.04, 0.98, 0.957], [184.8, 149.17, 1, 0.967], [186.42, 150.19, 1, 0.966], [188.41, 150.46, 1, 0.966], [189.95, 151.41, 1, 0.971], [191.61, 152.4, 1, 0.971], [191.61, 152.4, 1, 0.971], [189.01, 151.48, 1, 0.971], [186.85, 151.25, 1, 0.979], [184.64, 150.57, 1, 0.975], [182.06, 149.13, 0.98, 0.974], [179.48, 149.48, 1, 0.976], [177.17, 149.61, 1.02, 0.976], [175.2, 149.27, 1.02, 0.979], [172.3, 148.6, 1.02, 0.975], [172.3, 148.6, 1.02, 0.975], [175.21, 151.35, 1.02, 0.979], [177.27, 153.34, 1.02, 0.982], [179.97, 155.12, 1, 0.983], [181.35, 158.65, 1.02, 0.988], [184.96, 160.94, 1, 0.987], [187.54, 163.29, 1, 0.996], [189.22, 166.33, 1.02, 0.992], [191.7, 168.3, 1, 1], [191.7, 168.3, 1, 1], [189.18, 166.28, 1, 0.99], [186.95, 164.07, 0.98, 0.991], [184.75, 163.57, 1, 0.987], [182.21, 160.91, 0.98, 0.986], [180.15, 158.8, 0.96, 0.98], [177.73, 156.71, 0.96, 0.974], [175.67, 155.87, 0.96, 0.97], [173.13, 154.91, 0.96, 0.965], [173.13, 154.91, 0.96, 0.965], [176.75, 154.83, 0.96, 0.966], [180.19, 154.77, 0.96, 0.966], [183.7, 154.69, 0.96, 0.966], [187.78, 153.74, 0.94, 0.965], [191.91, 155.07, 0.98, 0.968], [195.35, 154.27, 0.96, 0.969], [199.09, 154.17, 0.96, 0.968], [202.85, 153.49, 0.94, 0.965], [202.85, 153.49, 0.94, 0.965], [206.07, 152.72, 0.94, 0.968], [209.04, 152.89, 0.96, 0.962], [211.97, 151.51, 0.94, 0.959], [215.45, 150.92, 0.94, 0.941], [218.71, 149.41, 0.92, 0.933], [221.75, 148.5, 0.9, 0.92], [224.95, 147.58, 0.9, 0.903], null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, behaviors: { cache: "puppy-paper-behaviors.bin.gz", sha256: "7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d", samples: 9, covered: 90, frames: [[201.21, 166.15, 0.98, 0.959], [200.4, 166.14, 0.98, 0.961], [200.13, 166.16, 0.98, 0.963], [199.21, 166.15, 0.98, 0.964], [198.65, 166.13, 0.98, 0.964], [197.98, 166.12, 0.98, 0.967], [197.08, 166.1, 0.98, 0.966], [196.87, 166.13, 0.98, 0.966], [195.93, 166.1, 0.98, 0.965], [195.93, 166.1, 0.98, 0.965], [196.01, 166.1, 0.98, 0.967], [196.35, 166.05, 0.98, 0.96], [196.85, 166.1, 0.98, 0.966], [197.08, 166.07, 0.98, 0.964], [197.25, 166.07, 0.98, 0.96], [197.72, 166.12, 0.98, 0.963], [198.13, 166.05, 0.98, 0.957], [198.18, 166.04, 0.98, 0.954], [198.18, 166.04, 0.98, 0.954], [198.23, 166.06, 0.98, 0.957], [198.26, 166.09, 0.98, 0.957], [198.28, 166.12, 0.98, 0.958], [198.81, 167.29, 1, 0.968], [198.92, 167.34, 1, 0.966], [198.98, 167.37, 1, 0.964], [199.06, 167.41, 1, 0.962], [199.07, 167.42, 1, 0.96], [199.07, 167.42, 1, 0.96], [199.16, 167.39, 1, 0.96], [199.43, 167.35, 1, 0.96], [199.96, 167.33, 1, 0.965], [200.14, 166.34, 0.98, 0.965], [200.28, 166.27, 0.98, 0.963], [200.84, 166.24, 0.98, 0.965], [201.14, 166.17, 0.98, 0.962], [201.21, 166.15, 0.98, 0.959], [191.7, 168.3, 1, 1], [192.77, 168.21, 1, 0.999], [194.11, 167.32, 0.98, 0.992], [195.54, 167.92, 1, 0.986], [196.71, 166.87, 0.98, 0.982], [197.88, 167.48, 1, 0.978], [199.08, 166.37, 0.98, 0.973], [200.32, 166.2, 0.98, 0.965], [201.21, 166.15, 0.98, 0.959], [201.21, 166.15, 0.98, 0.959], [201.8, 170.56, 1, 0.964], [202.18, 172.74, 0.98, 0.965], [202.46, 176.13, 0.98, 0.966], [203.09, 179.85, 0.98, 0.968], [203.28, 183.55, 0.98, 0.961], [203.98, 187.56, 1, 0.963], [204.72, 190.66, 1, 0.967], [204.91, 194.05, 1, 0.954], [204.91, 194.05, 1, 0.954], [203.9, 194.08, 1, 0.956], [202.88, 194.15, 0.98, 0.958], [201.8, 195, 1, 0.958], [200.65, 195.45, 1, 0.961], [199.66, 196.08, 1, 0.957], [198.46, 196.15, 1, 0.953], [197.37, 196.24, 0.98, 0.95], [196.35, 196.3, 0.98, 0.947], [196.35, 196.3, 0.98, 0.947], [192.86, 196.11, 1, 0.951], [190.53, 196.01, 1, 0.951], [187.51, 196, 1, 0.949], [184.08, 194.32, 0.98, 0.952], [180.99, 193.88, 0.98, 0.949], [177.81, 194.62, 1, 0.949], [175.36, 194.61, 1.02, 0.95], [171.67, 193.62, 1, 0.944], [171.67, 193.62, 1, 0.944], [174.59, 193.5, 1.02, 0.952], [177.38, 192.46, 1.02, 0.95], [180.43, 190.38, 1, 0.957], [183.32, 188.01, 0.98, 0.95], [186.05, 187, 0.98, 0.954], [189.53, 187.6, 1.02, 0.95], [192.59, 185.84, 1, 0.945], [195.46, 183.93, 0.98, 0.942], [195.46, 183.93, 0.98, 0.942], [195.23, 182.08, 0.98, 0.958], [194.56, 180.73, 1, 0.963], [194.34, 179.26, 1, 0.974], [193.93, 177.12, 1, 0.982], [193.33, 175.54, 1.02, 0.983], [192.7, 173.2, 1, 0.996], [192.66, 170.55, 1, 0.992], [191.7, 168.3, 1, 1], null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, seat: { cache: "puppy-paper-seat.bin.gz", sha256: "613dbeeeaec11804e80db0216922c8f62294745514ee6283bdce61a6d784dd5e", samples: 17, covered: 51, frames: [[191.7, 168.3, 1, 1], [187.28, 167.83, 0.98, 0.992], [186.01, 168.11, 0.98, 0.997], [184.36, 167.85, 0.96, 0.997], [182.14, 168.27, 0.96, 0.99], [179.4, 167.97, 0.94, 0.989], [177.05, 167.47, 0.92, 0.991], [174.39, 167.11, 0.9, 0.982], [171.52, 167.84, 0.9, 0.977], [169.74, 168.03, 0.9, 0.978], [166.37, 168.27, 0.9, 0.98], [163.95, 166.65, 0.86, 0.975], [161.1, 167.16, 0.86, 0.973], [158.82, 167.1, 0.86, 0.97], [157.06, 167.85, 0.86, 0.97], [155.39, 167.09, 0.84, 0.966], [152.19, 167.86, 0.84, 0.951], [152.19, 167.86, 0.84, 0.951], [152.24, 167.87, 0.84, 0.952], [152.26, 167.86, 0.84, 0.953], [152.26, 167.85, 0.84, 0.953], [152.27, 167.85, 0.84, 0.953], [152.3, 167.84, 0.84, 0.954], [152.33, 167.83, 0.84, 0.954], [152.69, 166.08, 0.8, 0.956], [152.75, 166.06, 0.8, 0.956], [152.77, 166.04, 0.8, 0.957], [153.16, 166.03, 0.8, 0.957], [153.19, 166.03, 0.8, 0.956], [153.21, 166.02, 0.8, 0.955], [153.23, 166.02, 0.8, 0.955], [153.27, 166.02, 0.8, 0.953], [153.37, 166.03, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [154.28, 166.02, 0.8, 0.954], [154.49, 166.87, 0.82, 0.951], [155.31, 165.99, 0.8, 0.953], [156.08, 165.96, 0.8, 0.956], [156.67, 166.83, 0.82, 0.958], [157.34, 166.82, 0.82, 0.955], [158.31, 166.73, 0.82, 0.956], [158.83, 166.62, 0.82, 0.96], [159.42, 166.54, 0.82, 0.958], [160.23, 166.48, 0.82, 0.952], [160.85, 166.5, 0.82, 0.954], [161.4, 166.49, 0.82, 0.954], [162.04, 166.45, 0.82, 0.947], [162.98, 166.47, 0.82, 0.947], [163.19, 166.46, 0.82, 0.946], [164.02, 166.47, 0.82, 0.945]] }, arrivalSeat: { cache: "puppy-paper-arrival-seat.bin.gz", sha256: "13acb62fd573ff7ef97bcf59be80757897fe9d1784f187ab278990ff94a643b9", samples: 17, covered: 51, frames: [[195.46, 183.93, 0.98, 0.942], [191.05, 182.87, 0.98, 0.955], [189.92, 182.76, 0.98, 0.95], [187.17, 181.29, 0.96, 0.954], [184.77, 179.89, 0.94, 0.954], [182.36, 179.93, 0.96, 0.955], [179.54, 177.85, 0.94, 0.96], [176.3, 176.4, 0.92, 0.959], [174.08, 175.36, 0.9, 0.966], [171.91, 174.25, 0.9, 0.958], [168.15, 172.23, 0.88, 0.953], [165.17, 170.82, 0.86, 0.963], [162.45, 171.28, 0.88, 0.959], [160.06, 170.01, 0.86, 0.965], [157.6, 169.78, 0.86, 0.959], [155.67, 167.31, 0.82, 0.96], [152.19, 167.86, 0.84, 0.951], [152.19, 167.86, 0.84, 0.951], [152.24, 167.87, 0.84, 0.952], [152.26, 167.86, 0.84, 0.953], [152.26, 167.85, 0.84, 0.953], [152.27, 167.85, 0.84, 0.953], [152.3, 167.84, 0.84, 0.954], [152.33, 167.83, 0.84, 0.954], [152.69, 166.08, 0.8, 0.956], [152.75, 166.06, 0.8, 0.956], [152.77, 166.04, 0.8, 0.957], [153.16, 166.03, 0.8, 0.957], [153.19, 166.03, 0.8, 0.956], [153.21, 166.02, 0.8, 0.955], [153.23, 166.02, 0.8, 0.955], [153.27, 166.02, 0.8, 0.953], [153.37, 166.03, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [153.28, 166.02, 0.8, 0.952], [154.28, 166.02, 0.8, 0.954], [154.49, 166.87, 0.82, 0.951], [155.31, 165.99, 0.8, 0.953], [156.08, 165.96, 0.8, 0.956], [156.67, 166.83, 0.82, 0.958], [157.34, 166.82, 0.82, 0.955], [158.31, 166.73, 0.82, 0.956], [158.83, 166.62, 0.82, 0.96], [159.42, 166.54, 0.82, 0.958], [160.23, 166.48, 0.82, 0.952], [160.85, 166.5, 0.82, 0.954], [161.4, 166.49, 0.82, 0.954], [162.04, 166.45, 0.82, 0.947], [162.98, 166.47, 0.82, 0.947], [163.19, 166.46, 0.82, 0.946], [164.02, 166.47, 0.82, 0.945]] }, actions: { sha256: "1e0db7138d087292a3e70c246a1d56af590b3fb50928687a026e7080d7657c38", frames: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, [192, 168, 1, null], [197, 167, 1, null], [203, 165, 1, null], [209, 165, 1, null], [224, 154, 1, null], [235, 150, 1, null], [242, 149, 1, null], [245, 149, 1, null], [252, 148, 1, null], null, null, null, null, null, [237, 150, 1, null], [245, 149, 1, null], [248, 149, 1, null], [252, 148, 1, null], null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] } } };
|
|
1244
1244
|
function mouthSourceFrame(family, state, info) {
|
|
1245
|
+
if (family === "actions") {
|
|
1246
|
+
const p = paperActionPose(state.actionName, state.actionProgress, info);
|
|
1247
|
+
return p.pair * 9 + Math.round(p.blend * 8);
|
|
1248
|
+
}
|
|
1245
1249
|
if (family === "approach")
|
|
1246
1250
|
return state.approachPair * 9 + Math.round(state.blend * 8);
|
|
1247
1251
|
if (family === "behaviors") {
|
|
@@ -2136,9 +2140,10 @@ function createPaperActor(animal, info, { manualTricks = false, trickTimings = n
|
|
|
2136
2140
|
actionName = "lie-down";
|
|
2137
2141
|
actionProgress = 1;
|
|
2138
2142
|
}
|
|
2139
|
-
if (walkTransitions && state === "view-turn"
|
|
2140
|
-
actionName = view === "approach" ? "walk-face-front" : "walk-face-rear";
|
|
2141
|
-
|
|
2143
|
+
if (walkTransitions && state === "view-turn") {
|
|
2144
|
+
actionName = view === "approach" || turnView === "approach" ? "walk-face-front" : "walk-face-rear";
|
|
2145
|
+
const t = Math.min(1, age / viewTurnSeconds());
|
|
2146
|
+
actionProgress = turnView === "front" ? t : 1 - t;
|
|
2142
2147
|
}
|
|
2143
2148
|
if (walkTransitions && state === "turn") {
|
|
2144
2149
|
actionName = "walk-turn";
|
|
@@ -2330,8 +2335,8 @@ function createPaperRenderer(cache, info, meta, width, height, { rear, approach,
|
|
|
2330
2335
|
out[i] = 255;
|
|
2331
2336
|
}
|
|
2332
2337
|
render.lastPlacement = { left, top, side, sideX };
|
|
2333
|
-
const mouthFamily = isInteraction
|
|
2334
|
-
const mouthInfo = { behaviors: behaviors?.info, seat: seat?.info, arrivalSeat: arrivalSeat?.info, approach: approach?.info }[mouthFamily];
|
|
2338
|
+
const mouthFamily = isInteraction ? null : isAction ? "actions" : isBehavior ? "behaviors" : isSeat ? state.seatVariant === "arrival" && arrivalSeatSample ? "arrivalSeat" : "seat" : isApproach ? "approach" : null;
|
|
2339
|
+
const mouthInfo = { actions: actions?.info, behaviors: behaviors?.info, seat: seat?.info, arrivalSeat: arrivalSeat?.info, approach: approach?.info }[mouthFamily];
|
|
2335
2340
|
const mouthFrame = mouthFamily ? mouthSourceFrame(mouthFamily, state, mouthInfo) : null;
|
|
2336
2341
|
render.lastMouth = projectMouth(mouthFamily ? mouthAnchor(mouthFamily, mouthFrame, mouthInfo?.sha256) : null, { left, top, side, sideX }, state.flip, { family: mouthFamily, frame: mouthFrame });
|
|
2337
2342
|
if (motion?.mouth) {
|
|
@@ -4234,7 +4239,8 @@ function createCatLife({ seed = 731 } = {}) {
|
|
|
4234
4239
|
mat: Boolean(phase.mat),
|
|
4235
4240
|
facing: phase.facing ?? null,
|
|
4236
4241
|
resting: ["sleep", "loaf-rest"].includes(phase.clip) && !pending,
|
|
4237
|
-
sleeping: phase.clip === "sleep"
|
|
4242
|
+
sleeping: phase.clip === "sleep",
|
|
4243
|
+
restSeconds: phase.clip === "sleep" ? phase.elapsed : 0
|
|
4238
4244
|
};
|
|
4239
4245
|
}
|
|
4240
4246
|
};
|
|
@@ -4314,13 +4320,38 @@ function footSourcePoint2(x, y, pins, out = {}) {
|
|
|
4314
4320
|
return out;
|
|
4315
4321
|
}
|
|
4316
4322
|
|
|
4323
|
+
// integrations/purrviewer/src/facing.mjs
|
|
4324
|
+
function catFacingPath(from, fromMirror, to, toMirror) {
|
|
4325
|
+
const path = [];
|
|
4326
|
+
const push = (clip, reverse, mirror, view) => path.push({ clip, reverse, mirror, view, seconds: 0.28 });
|
|
4327
|
+
if (from === to && (from === "front" || fromMirror === toMirror))
|
|
4328
|
+
return path;
|
|
4329
|
+
if (from === "rear") {
|
|
4330
|
+
push("turn-side-rear", true, fromMirror, "side");
|
|
4331
|
+
from = "side";
|
|
4332
|
+
}
|
|
4333
|
+
if (from === "side") {
|
|
4334
|
+
if (to === "rear" && fromMirror === toMirror) {
|
|
4335
|
+
push("turn-side-rear", false, fromMirror, "rear");
|
|
4336
|
+
return path;
|
|
4337
|
+
}
|
|
4338
|
+
push("turn-front-side", true, fromMirror, "front");
|
|
4339
|
+
}
|
|
4340
|
+
if (to === "front")
|
|
4341
|
+
return path;
|
|
4342
|
+
push("turn-front-side", false, toMirror, "side");
|
|
4343
|
+
if (to === "rear")
|
|
4344
|
+
push("turn-side-rear", false, toMirror, "rear");
|
|
4345
|
+
return path;
|
|
4346
|
+
}
|
|
4347
|
+
|
|
4317
4348
|
// integrations/purrviewer/src/purrviewer-core.mjs
|
|
4318
4349
|
function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
4319
4350
|
if (!Number.isInteger(seed) || seed < 0 || seed > 4294967295)
|
|
4320
4351
|
throw TypeError("Invalid cat seed");
|
|
4321
4352
|
let asset = lease.data;
|
|
4322
4353
|
const release = lease.release, motion = createCatMotion(), life = createCatLife({ seed }), contacts = createCatContacts(asset.meta.walk), sourcePoint = { x: 0, y: 0 };
|
|
4323
|
-
let pixels = null, disposed = false, lastClip = "sit", lastFrame = null, prep = null, view = "front", mirror = false, settle = null, lastMoving = false, lastLifeClip = "sit", lastPaintKey = "", lastText = "", rasterizations = 0, heldHits = 0;
|
|
4354
|
+
let pixels = null, disposed = false, lastClip = "sit", lastFrame = null, prep = null, view = "front", mirror = false, standing = false, settle = null, lastMoving = false, lastLifeClip = "sit", lastPaintKey = "", lastText = "", rasterizations = 0, heldHits = 0;
|
|
4324
4355
|
const alive = () => {
|
|
4325
4356
|
if (disposed)
|
|
4326
4357
|
throw Error("Cat is disposed");
|
|
@@ -4336,18 +4367,31 @@ function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
|
4336
4367
|
settle = null;
|
|
4337
4368
|
motion.wheel(command);
|
|
4338
4369
|
} else if (command.kind === "stop") {
|
|
4339
|
-
prep = null;
|
|
4340
4370
|
motion.stop();
|
|
4341
4371
|
}
|
|
4342
4372
|
};
|
|
4373
|
+
function prepare(targetView, targetMirror, { command = null, seated = false } = {}) {
|
|
4374
|
+
const steps = [];
|
|
4375
|
+
if (!standing)
|
|
4376
|
+
steps.push({ clip: "rise-front", seconds: 0.3, view: "front", mirror: false });
|
|
4377
|
+
steps.push(...catFacingPath(view, mirror, targetView, targetMirror));
|
|
4378
|
+
if (seated)
|
|
4379
|
+
steps.push({ clip: "sit-front", seconds: 0.32, view: "front", mirror: false, seated: true });
|
|
4380
|
+
if (!steps.length) {
|
|
4381
|
+
if (command)
|
|
4382
|
+
direct(command);
|
|
4383
|
+
return;
|
|
4384
|
+
}
|
|
4385
|
+
prep = { steps, index: 0, age: 0, command };
|
|
4386
|
+
mirror = steps[0].mirror;
|
|
4387
|
+
settle = null;
|
|
4388
|
+
}
|
|
4343
4389
|
function issue(command) {
|
|
4344
|
-
if (command.kind === "go" &&
|
|
4390
|
+
if (command.kind === "go" && !motion.sample().moving) {
|
|
4345
4391
|
const s3 = motion.sample(), dx = command.x - s3.x, dz2 = command.z - s3.z, length2 = Math.hypot(dx, dz2);
|
|
4346
4392
|
if (length2 > 0.01) {
|
|
4347
4393
|
const targetView = Math.abs(dz2 / length2) > 0.8 ? dz2 > 0 ? "front" : "rear" : "side";
|
|
4348
|
-
|
|
4349
|
-
mirror = dx < 0;
|
|
4350
|
-
settle = null;
|
|
4394
|
+
prepare(targetView, dx < 0, { command });
|
|
4351
4395
|
return;
|
|
4352
4396
|
}
|
|
4353
4397
|
}
|
|
@@ -4366,12 +4410,23 @@ function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
|
4366
4410
|
left -= step;
|
|
4367
4411
|
if (prep) {
|
|
4368
4412
|
prep.age += step;
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
view =
|
|
4372
|
-
|
|
4373
|
-
|
|
4413
|
+
const part = prep.steps[prep.index];
|
|
4414
|
+
if (prep.age >= part.seconds) {
|
|
4415
|
+
view = part.view;
|
|
4416
|
+
mirror = part.mirror;
|
|
4417
|
+
standing = !part.seated;
|
|
4418
|
+
prep.age = 0;
|
|
4419
|
+
prep.index++;
|
|
4420
|
+
if (prep.index === prep.steps.length) {
|
|
4421
|
+
const cmd = prep.command;
|
|
4422
|
+
prep = null;
|
|
4423
|
+
if (cmd)
|
|
4424
|
+
direct(cmd);
|
|
4425
|
+
} else
|
|
4426
|
+
mirror = prep.steps[prep.index].mirror;
|
|
4374
4427
|
}
|
|
4428
|
+
if (prep)
|
|
4429
|
+
continue;
|
|
4375
4430
|
}
|
|
4376
4431
|
motion.step(step);
|
|
4377
4432
|
const s3 = motion.sample();
|
|
@@ -4380,61 +4435,47 @@ function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
|
4380
4435
|
issue(command);
|
|
4381
4436
|
const report = life.report, clip = report.clip;
|
|
4382
4437
|
if (s3.moving && !prep && !s3.exercising) {
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4438
|
+
if (s3.airborne) {
|
|
4439
|
+
mirror = Math.sin(s3.heading) < 0;
|
|
4440
|
+
view = "side";
|
|
4441
|
+
}
|
|
4442
|
+
standing = true;
|
|
4386
4443
|
settle = null;
|
|
4387
4444
|
}
|
|
4388
4445
|
if (clip !== lastLifeClip) {
|
|
4389
|
-
if (
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
if (clip === "knead-enter") {
|
|
4395
|
-
view = "front";
|
|
4396
|
-
mirror = false;
|
|
4397
|
-
settle = null;
|
|
4398
|
-
}
|
|
4399
|
-
if (["tower-load", "tower-land", "wheel-enter", "wheel-leave"].includes(clip)) {
|
|
4446
|
+
if (["stretch-enter", "knead-enter", "feed-enter"].includes(clip) && standing)
|
|
4447
|
+
prepare("front", false, { seated: true });
|
|
4448
|
+
if (["tower-load", "crouch", "wheel-enter"].includes(clip))
|
|
4449
|
+
prepare("side", clip === "tower-load" ? report.facing < 0 : clip === "wheel-enter" ? false : mirror);
|
|
4450
|
+
if (["tower-land", "wheel-leave"].includes(clip)) {
|
|
4400
4451
|
view = "side";
|
|
4452
|
+
standing = true;
|
|
4401
4453
|
settle = null;
|
|
4402
4454
|
if (clip.startsWith("wheel"))
|
|
4403
4455
|
mirror = false;
|
|
4404
4456
|
}
|
|
4405
|
-
if (clip === "tower-load")
|
|
4406
|
-
mirror = report.facing < 0;
|
|
4407
4457
|
if (clip === "stretch-reach") {
|
|
4408
4458
|
view = "side";
|
|
4409
4459
|
mirror = false;
|
|
4410
4460
|
settle = null;
|
|
4411
4461
|
}
|
|
4412
|
-
if (clip === "feed-
|
|
4462
|
+
if (clip === "feed-sniff") {
|
|
4413
4463
|
view = "side";
|
|
4414
4464
|
mirror = false;
|
|
4465
|
+
standing = true;
|
|
4415
4466
|
settle = null;
|
|
4416
4467
|
}
|
|
4417
4468
|
if (clip === "sit" && ["bat", "stretch", "stretch-leave", "feed-leave", "loaf-leave"].includes(lastLifeClip)) {
|
|
4418
4469
|
view = "front";
|
|
4419
4470
|
mirror = false;
|
|
4471
|
+
standing = false;
|
|
4420
4472
|
settle = null;
|
|
4421
4473
|
}
|
|
4422
4474
|
lastLifeClip = clip;
|
|
4423
4475
|
}
|
|
4424
4476
|
const quiet = ["idle", "sit", "blink", "eye-greeting", "groom", "loaf", "sleep", "tail-swish", "tail-tip"].includes(clip);
|
|
4425
|
-
if (!s3.moving && !prep && quiet)
|
|
4426
|
-
|
|
4427
|
-
settle = { age: 0, seconds: 0.45, clip: view === "front" ? "sit-front" : "sit-down" };
|
|
4428
|
-
if (settle) {
|
|
4429
|
-
settle.age += step;
|
|
4430
|
-
if (settle.age >= settle.seconds) {
|
|
4431
|
-
view = "front";
|
|
4432
|
-
mirror = false;
|
|
4433
|
-
settle = null;
|
|
4434
|
-
}
|
|
4435
|
-
}
|
|
4436
|
-
} else
|
|
4437
|
-
settle = null;
|
|
4477
|
+
if (!s3.moving && !prep && quiet && standing)
|
|
4478
|
+
prepare("front", false, { seated: true });
|
|
4438
4479
|
lastMoving = s3.moving;
|
|
4439
4480
|
if (s3.moving && !s3.airborne && !s3.exercising && s3.supportY === 0 && !prep && view === "side")
|
|
4440
4481
|
contacts.update(s3, mirror);
|
|
@@ -4466,9 +4507,16 @@ function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
|
4466
4507
|
clip = "wheel-run";
|
|
4467
4508
|
progress = (s3.wheelPhase % 1 + 1) % 1;
|
|
4468
4509
|
}
|
|
4510
|
+
if (!s3.moving && ["walk", "creep"].includes(clip)) {
|
|
4511
|
+
clip = view === "rear" ? "stand-rear" : view === "front" ? "rise-front" : "stand";
|
|
4512
|
+
progress = 1;
|
|
4513
|
+
}
|
|
4469
4514
|
if (prep) {
|
|
4470
|
-
|
|
4471
|
-
|
|
4515
|
+
const part = prep.steps[prep.index];
|
|
4516
|
+
clip = part.clip;
|
|
4517
|
+
progress = Math.min(1, prep.age / part.seconds);
|
|
4518
|
+
if (part.reverse)
|
|
4519
|
+
progress = 1 - progress;
|
|
4472
4520
|
}
|
|
4473
4521
|
if (settle) {
|
|
4474
4522
|
clip = settle.clip;
|
|
@@ -4478,7 +4526,14 @@ function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
|
4478
4526
|
progress = progress >= 1 ? 0 : progress * 9 % 1;
|
|
4479
4527
|
if (clip === "knead")
|
|
4480
4528
|
progress = progress >= 1 ? 0 : progress * 4 % 1;
|
|
4481
|
-
|
|
4529
|
+
let keys = asset.meta.clips[clip] ?? asset.meta.clips.sit;
|
|
4530
|
+
if (clip === "stand")
|
|
4531
|
+
keys = [asset.meta.clips["turn-front-side"].at(-1)];
|
|
4532
|
+
if (clip === "sleep") {
|
|
4533
|
+
const t = r.restSeconds ?? 0, phase = t % 5.6;
|
|
4534
|
+
keys = [Math.floor(t) % 23 === 17 ? asset.meta.clips.sleep[3] : phase > 1.4 && phase < 3.5 ? asset.meta.clips.sleep[1] : asset.meta.clips.sleep[0]];
|
|
4535
|
+
progress = 0;
|
|
4536
|
+
}
|
|
4482
4537
|
const pins = clip === "walk" ? contacts.pins(s3) : [];
|
|
4483
4538
|
const key = keys[Math.min(keys.length - 1, Math.floor(Math.max(0, Math.min(1, progress)) * keys.length))];
|
|
4484
4539
|
const food = r.food ? Math.ceil(r.food.remaining * 16) / 16 : null;
|
|
@@ -4565,9 +4620,8 @@ function createCatFromAssets({ seed = 731 } = {}, lease, kernel = null) {
|
|
|
4565
4620
|
if (!["treat", "toy", "call", "stretch", "tail", "greet", "company", "tower", "wheel"].includes(kind))
|
|
4566
4621
|
throw TypeError("Invalid cat interaction");
|
|
4567
4622
|
const accepted = life.interact(kind, options2);
|
|
4568
|
-
if (accepted && prep)
|
|
4569
|
-
prep = null;
|
|
4570
|
-
}
|
|
4623
|
+
if (accepted && prep)
|
|
4624
|
+
prep.command = null;
|
|
4571
4625
|
return accepted;
|
|
4572
4626
|
},
|
|
4573
4627
|
get report() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cat art and motion review
|
|
2
2
|
|
|
3
|
-
Current default: the owner-approved ginger identity
|
|
3
|
+
Current default: the owner-approved ginger identity and77-key ginger motion
|
|
4
4
|
atlas described below. The tuxedo material is retained as historical source
|
|
5
5
|
and is not fetched by the default renderer.
|
|
6
6
|
|
|
@@ -287,3 +287,26 @@ keys, timings, anatomy or source pixels were changed. The owner explicitly
|
|
|
287
287
|
chose CC BY-SA 4.0 for the bundled ginger artwork, including its metadata and
|
|
288
288
|
alternative encodings; code remains MIT. Research photographs and raw source
|
|
289
289
|
sheets are not included in the public package.
|
|
290
|
+
|
|
291
|
+
## Motion repair candidate · 2026-10-25
|
|
292
|
+
|
|
293
|
+
The77-key candidate retains64 earlier drawings byte-exact and replaces only
|
|
294
|
+
the stray-cat lowering key8. Seven grounded orientation keys, three airborne
|
|
295
|
+
breakdowns and two local sleep variants are appended. The original curl2 is
|
|
296
|
+
unchanged, and sleep patches preserve every thresholded silhouette pixel.
|
|
297
|
+
Source sheets were generated with the built-in imagegen using the accepted
|
|
298
|
+
cat drawings as inputs; no new photos or video frames were used. Whole-body
|
|
299
|
+
registration uses a shared family scale and rigid offsets. The generated sleep
|
|
300
|
+
fur/ear patches are offline local edits, not runtime warps.
|
|
301
|
+
|
|
302
|
+
| Local source (ignored) | SHA-256 |
|
|
303
|
+
|---|---|
|
|
304
|
+
| ginger-lower-repair-v1.png | 5f8e22e17f08bb49d668ea1adf12938978bf7399eb03d851a0da140f27b34b07 |
|
|
305
|
+
| ginger-yaw-v1.png | e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2 |
|
|
306
|
+
| ginger-sleep-details-v1.png | 7e2c797ad3e510583af53da60c708a4b7e452491b2531ffe9167521536f70e21 |
|
|
307
|
+
| ginger-jump-breakdowns-v1.png | fa46905d52110a94eafaa75d9920d1c92d0991ddd42741a4cb1d12c593dbf54b |
|
|
308
|
+
|
|
309
|
+
Preparation: tools/prepare-motion-repairs.py and tools/rebuild-motion-repairs.mjs.
|
|
310
|
+
Metadata includes source hashes and registration. Final aesthetic approval is
|
|
311
|
+
separate from pixel-preservation and physical checks. Artwork remains under
|
|
312
|
+
CC BY-SA4.0; raw source sheets are not included in the public package.
|
|
Binary file
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version": 1,
|
|
3
3
|
"width": 320,
|
|
4
4
|
"height": 320,
|
|
5
|
-
"frames":
|
|
5
|
+
"frames": 77,
|
|
6
6
|
"clips": {
|
|
7
7
|
"idle": [
|
|
8
8
|
0
|
|
@@ -31,12 +31,19 @@
|
|
|
31
31
|
"tower-flight": [
|
|
32
32
|
34,
|
|
33
33
|
64,
|
|
34
|
-
|
|
34
|
+
74,
|
|
35
|
+
35,
|
|
36
|
+
75,
|
|
37
|
+
36,
|
|
38
|
+
76
|
|
35
39
|
],
|
|
36
40
|
"tower-fall": [
|
|
37
41
|
34,
|
|
42
|
+
74,
|
|
38
43
|
35,
|
|
39
|
-
|
|
44
|
+
75,
|
|
45
|
+
36,
|
|
46
|
+
76
|
|
40
47
|
],
|
|
41
48
|
"tower-land": [
|
|
42
49
|
37,
|
|
@@ -160,8 +167,11 @@
|
|
|
160
167
|
],
|
|
161
168
|
"pounce": [
|
|
162
169
|
34,
|
|
170
|
+
74,
|
|
163
171
|
35,
|
|
164
|
-
|
|
172
|
+
75,
|
|
173
|
+
36,
|
|
174
|
+
76
|
|
165
175
|
],
|
|
166
176
|
"land": [
|
|
167
177
|
37,
|
|
@@ -232,6 +242,10 @@
|
|
|
232
242
|
2
|
|
233
243
|
],
|
|
234
244
|
"sleep": [
|
|
245
|
+
2,
|
|
246
|
+
72,
|
|
247
|
+
2,
|
|
248
|
+
73,
|
|
235
249
|
2
|
|
236
250
|
],
|
|
237
251
|
"curl": [
|
|
@@ -320,6 +334,23 @@
|
|
|
320
334
|
14,
|
|
321
335
|
15,
|
|
322
336
|
0
|
|
337
|
+
],
|
|
338
|
+
"turn-front-side": [
|
|
339
|
+
5,
|
|
340
|
+
65,
|
|
341
|
+
66,
|
|
342
|
+
67,
|
|
343
|
+
1
|
|
344
|
+
],
|
|
345
|
+
"turn-side-rear": [
|
|
346
|
+
1,
|
|
347
|
+
68,
|
|
348
|
+
69,
|
|
349
|
+
70,
|
|
350
|
+
71
|
|
351
|
+
],
|
|
352
|
+
"stand-rear": [
|
|
353
|
+
71
|
|
323
354
|
]
|
|
324
355
|
},
|
|
325
356
|
"walk": {
|
|
@@ -589,7 +620,7 @@
|
|
|
589
620
|
"evidence": "human-inspected visible toe proxies; .60m source canvas"
|
|
590
621
|
},
|
|
591
622
|
"color": "#f1b66b",
|
|
592
|
-
"gzipBytes":
|
|
623
|
+
"gzipBytes": 476953,
|
|
593
624
|
"sourceSha256": "af4322edb7d1f001d002b55535369f8dd067cd4621ddd453318251b0caa1d559",
|
|
594
625
|
"registration": [
|
|
595
626
|
{
|
|
@@ -718,18 +749,15 @@
|
|
|
718
749
|
},
|
|
719
750
|
{
|
|
720
751
|
"name": "lower",
|
|
721
|
-
"source": "ginger-
|
|
722
|
-
"
|
|
723
|
-
|
|
724
|
-
313,
|
|
725
|
-
1030,
|
|
726
|
-
578
|
|
727
|
-
],
|
|
728
|
-
"scale": 0.5780000000000001,
|
|
752
|
+
"source": "ginger-lower-repair-v1.png",
|
|
753
|
+
"sourceSha256": "5f8e22e17f08bb49d668ea1adf12938978bf7399eb03d851a0da140f27b34b07",
|
|
754
|
+
"scale": 0.25,
|
|
729
755
|
"translation": [
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
]
|
|
756
|
+
11,
|
|
757
|
+
8
|
|
758
|
+
],
|
|
759
|
+
"registrationFamily": "motion-repair-v1",
|
|
760
|
+
"replaces": 8
|
|
733
761
|
},
|
|
734
762
|
{
|
|
735
763
|
"name": "loaf",
|
|
@@ -1702,6 +1730,188 @@
|
|
|
1702
1730
|
850
|
|
1703
1731
|
],
|
|
1704
1732
|
"registrationFamily": "tower-v1"
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"name": "yaw-22",
|
|
1736
|
+
"source": "ginger-yaw-v1.png",
|
|
1737
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1738
|
+
"scale": 0.61,
|
|
1739
|
+
"translation": [
|
|
1740
|
+
29,
|
|
1741
|
+
56
|
|
1742
|
+
],
|
|
1743
|
+
"registrationFamily": "motion-repair-v1",
|
|
1744
|
+
"cell": 1
|
|
1745
|
+
},
|
|
1746
|
+
{
|
|
1747
|
+
"name": "yaw-45",
|
|
1748
|
+
"source": "ginger-yaw-v1.png",
|
|
1749
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1750
|
+
"scale": 0.61,
|
|
1751
|
+
"translation": [
|
|
1752
|
+
29,
|
|
1753
|
+
56
|
|
1754
|
+
],
|
|
1755
|
+
"registrationFamily": "motion-repair-v1",
|
|
1756
|
+
"cell": 2
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"name": "yaw-67",
|
|
1760
|
+
"source": "ginger-yaw-v1.png",
|
|
1761
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1762
|
+
"scale": 0.61,
|
|
1763
|
+
"translation": [
|
|
1764
|
+
29,
|
|
1765
|
+
79
|
|
1766
|
+
],
|
|
1767
|
+
"registrationFamily": "motion-repair-v1",
|
|
1768
|
+
"cell": 3
|
|
1769
|
+
},
|
|
1770
|
+
{
|
|
1771
|
+
"name": "yaw-112",
|
|
1772
|
+
"source": "ginger-yaw-v1.png",
|
|
1773
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1774
|
+
"scale": 0.61,
|
|
1775
|
+
"translation": [
|
|
1776
|
+
29,
|
|
1777
|
+
77
|
|
1778
|
+
],
|
|
1779
|
+
"registrationFamily": "motion-repair-v1",
|
|
1780
|
+
"cell": 5
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
"name": "yaw-135",
|
|
1784
|
+
"source": "ginger-yaw-v1.png",
|
|
1785
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1786
|
+
"scale": 0.61,
|
|
1787
|
+
"translation": [
|
|
1788
|
+
29,
|
|
1789
|
+
90
|
|
1790
|
+
],
|
|
1791
|
+
"registrationFamily": "motion-repair-v1",
|
|
1792
|
+
"cell": 6
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
"name": "yaw-157",
|
|
1796
|
+
"source": "ginger-yaw-v1.png",
|
|
1797
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1798
|
+
"scale": 0.61,
|
|
1799
|
+
"translation": [
|
|
1800
|
+
29,
|
|
1801
|
+
92
|
|
1802
|
+
],
|
|
1803
|
+
"registrationFamily": "motion-repair-v1",
|
|
1804
|
+
"cell": 7
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
"name": "rear-stand",
|
|
1808
|
+
"source": "ginger-yaw-v1.png",
|
|
1809
|
+
"sourceSha256": "e87554521d27eba2f97a5ec9ae411fdf224d69d5a1181d1880b70947777dbda2",
|
|
1810
|
+
"scale": 0.61,
|
|
1811
|
+
"translation": [
|
|
1812
|
+
29,
|
|
1813
|
+
92
|
|
1814
|
+
],
|
|
1815
|
+
"registrationFamily": "motion-repair-v1",
|
|
1816
|
+
"cell": 8
|
|
1817
|
+
},
|
|
1818
|
+
{
|
|
1819
|
+
"name": "sleep-breath",
|
|
1820
|
+
"source": "ginger-sleep-details-v1.png",
|
|
1821
|
+
"sourceSha256": "7e2c797ad3e510583af53da60c708a4b7e452491b2531ffe9167521536f70e21",
|
|
1822
|
+
"scale": 0.33,
|
|
1823
|
+
"translation": [
|
|
1824
|
+
20,
|
|
1825
|
+
10
|
|
1826
|
+
],
|
|
1827
|
+
"registrationFamily": "motion-repair-v1",
|
|
1828
|
+
"cell": 0,
|
|
1829
|
+
"localPatch": [
|
|
1830
|
+
100,
|
|
1831
|
+
198,
|
|
1832
|
+
157,
|
|
1833
|
+
241
|
|
1834
|
+
]
|
|
1835
|
+
},
|
|
1836
|
+
{
|
|
1837
|
+
"name": "sleep-ear",
|
|
1838
|
+
"source": "ginger-sleep-details-v1.png",
|
|
1839
|
+
"sourceSha256": "7e2c797ad3e510583af53da60c708a4b7e452491b2531ffe9167521536f70e21",
|
|
1840
|
+
"scale": 0.33,
|
|
1841
|
+
"translation": [
|
|
1842
|
+
20,
|
|
1843
|
+
10
|
|
1844
|
+
],
|
|
1845
|
+
"registrationFamily": "motion-repair-v1",
|
|
1846
|
+
"cell": 1,
|
|
1847
|
+
"localPatch": [
|
|
1848
|
+
172,
|
|
1849
|
+
193,
|
|
1850
|
+
199,
|
|
1851
|
+
223
|
|
1852
|
+
]
|
|
1853
|
+
},
|
|
1854
|
+
{
|
|
1855
|
+
"name": "jump-extend",
|
|
1856
|
+
"source": "ginger-jump-breakdowns-v1.png",
|
|
1857
|
+
"sourceSha256": "fa46905d52110a94eafaa75d9920d1c92d0991ddd42741a4cb1d12c593dbf54b",
|
|
1858
|
+
"scale": 0.36,
|
|
1859
|
+
"translation": [
|
|
1860
|
+
16,
|
|
1861
|
+
54
|
|
1862
|
+
],
|
|
1863
|
+
"registrationFamily": "motion-repair-v1",
|
|
1864
|
+
"cell": 0,
|
|
1865
|
+
"sourceBox": [
|
|
1866
|
+
0,
|
|
1867
|
+
0,
|
|
1868
|
+
780,
|
|
1869
|
+
724
|
|
1870
|
+
]
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"name": "jump-gather",
|
|
1874
|
+
"source": "ginger-jump-breakdowns-v1.png",
|
|
1875
|
+
"sourceSha256": "fa46905d52110a94eafaa75d9920d1c92d0991ddd42741a4cb1d12c593dbf54b",
|
|
1876
|
+
"scale": 0.36,
|
|
1877
|
+
"translation": [
|
|
1878
|
+
16,
|
|
1879
|
+
54
|
|
1880
|
+
],
|
|
1881
|
+
"registrationFamily": "motion-repair-v1",
|
|
1882
|
+
"cell": 1,
|
|
1883
|
+
"sourceBox": [
|
|
1884
|
+
780,
|
|
1885
|
+
0,
|
|
1886
|
+
1460,
|
|
1887
|
+
724
|
|
1888
|
+
]
|
|
1889
|
+
},
|
|
1890
|
+
{
|
|
1891
|
+
"name": "jump-descend",
|
|
1892
|
+
"source": "ginger-jump-breakdowns-v1.png",
|
|
1893
|
+
"sourceSha256": "fa46905d52110a94eafaa75d9920d1c92d0991ddd42741a4cb1d12c593dbf54b",
|
|
1894
|
+
"scale": 0.36,
|
|
1895
|
+
"translation": [
|
|
1896
|
+
16,
|
|
1897
|
+
54
|
|
1898
|
+
],
|
|
1899
|
+
"registrationFamily": "motion-repair-v1",
|
|
1900
|
+
"cell": 2,
|
|
1901
|
+
"sourceBox": [
|
|
1902
|
+
1460,
|
|
1903
|
+
0,
|
|
1904
|
+
2172,
|
|
1905
|
+
724
|
|
1906
|
+
]
|
|
1705
1907
|
}
|
|
1706
|
-
]
|
|
1908
|
+
],
|
|
1909
|
+
"repair": {
|
|
1910
|
+
"baseline": "5452da3",
|
|
1911
|
+
"unchangedOriginalKeys": 64,
|
|
1912
|
+
"replaced": [
|
|
1913
|
+
8
|
|
1914
|
+
],
|
|
1915
|
+
"appended": 12
|
|
1916
|
+
}
|
|
1707
1917
|
}
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Authored grounded yaw; each half-turn shares an exact standing endpoint.
|
|
2
|
+
// Mirroring changes only at the symmetric frontal endpoint, never mid-profile.
|
|
3
|
+
export function catFacingPath(from,fromMirror,to,toMirror){
|
|
4
|
+
const path=[];
|
|
5
|
+
const push=(clip,reverse,mirror,view)=>path.push({clip,reverse,mirror,view,seconds:.28});
|
|
6
|
+
if(from===to&&(from==='front'||fromMirror===toMirror))return path;
|
|
7
|
+
if(from==='rear'){push('turn-side-rear',true,fromMirror,'side');from='side';}
|
|
8
|
+
if(from==='side'){
|
|
9
|
+
if(to==='rear'&&fromMirror===toMirror){push('turn-side-rear',false,fromMirror,'rear');return path;}
|
|
10
|
+
push('turn-front-side',true,fromMirror,'front');
|
|
11
|
+
}
|
|
12
|
+
if(to==='front')return path;
|
|
13
|
+
push('turn-front-side',false,toMirror,'side');
|
|
14
|
+
if(to==='rear')push('turn-side-rear',false,toMirror,'rear');
|
|
15
|
+
return path;
|
|
16
|
+
}
|
|
@@ -274,7 +274,7 @@ export function createCatLife({seed = 731} = {}) {
|
|
|
274
274
|
food: phase.clip.startsWith('feed-') ? {remaining: phase.clip === 'feed-lick' ? 1-phase.progress :
|
|
275
275
|
['feed-finish','feed-leave'].includes(phase.clip) ? 0 : 1} : null,
|
|
276
276
|
mat: Boolean(phase.mat),facing:phase.facing??null,resting:['sleep','loaf-rest'].includes(phase.clip)&&!pending,
|
|
277
|
-
sleeping: phase.clip === 'sleep'};
|
|
277
|
+
sleeping: phase.clip === 'sleep',restSeconds:phase.clip==='sleep'?phase.elapsed:0};
|
|
278
278
|
}
|
|
279
279
|
};
|
|
280
280
|
}
|
|
@@ -3,21 +3,30 @@ import {createCatMotion,projectCat} from './world.mjs';
|
|
|
3
3
|
import {createCatLife} from './life.mjs';
|
|
4
4
|
import {createCatContacts,footSourcePoint} from './contact.mjs';
|
|
5
5
|
import {paintHabitat} from './habitat.mjs';
|
|
6
|
+
import {catFacingPath} from './facing.mjs';
|
|
6
7
|
export function createCatFromAssets({seed=731}={},lease,kernel=null){
|
|
7
8
|
if(!Number.isInteger(seed)||seed<0||seed>0xffffffff)throw TypeError('Invalid cat seed');
|
|
8
9
|
let asset=lease.data;const release=lease.release,motion=createCatMotion(),life=createCatLife({seed}),contacts=createCatContacts(asset.meta.walk),sourcePoint={x:0,y:0};
|
|
9
|
-
let pixels=null,disposed=false,lastClip='sit',lastFrame=null,prep=null,view='front',mirror=false,settle=null,lastMoving=false,lastLifeClip='sit',lastPaintKey='',lastText='',rasterizations=0,heldHits=0;
|
|
10
|
+
let pixels=null,disposed=false,lastClip='sit',lastFrame=null,prep=null,view='front',mirror=false,standing=false,settle=null,lastMoving=false,lastLifeClip='sit',lastPaintKey='',lastText='',rasterizations=0,heldHits=0;
|
|
10
11
|
const alive=()=>{if(disposed)throw Error('Cat is disposed');};
|
|
11
12
|
const direct=command=>{
|
|
12
13
|
if(command.kind==='go')motion.go(command.x,command.z,{gait:command.gait});
|
|
13
14
|
else if(command.kind==='pounce')motion.pounce(command.x,command.z,{height:command.height,landingY:command.landingY??0});
|
|
14
15
|
else if(command.kind==='wheel'){view='side';mirror=false;settle=null;motion.wheel(command);}
|
|
15
|
-
else if(command.kind==='stop'){
|
|
16
|
+
else if(command.kind==='stop'){motion.stop();}
|
|
16
17
|
};
|
|
18
|
+
function prepare(targetView,targetMirror,{command=null,seated=false}={}){
|
|
19
|
+
const steps=[];
|
|
20
|
+
if(!standing)steps.push({clip:'rise-front',seconds:.3,view:'front',mirror:false});
|
|
21
|
+
steps.push(...catFacingPath(view,mirror,targetView,targetMirror));
|
|
22
|
+
if(seated)steps.push({clip:'sit-front',seconds:.32,view:'front',mirror:false,seated:true});
|
|
23
|
+
if(!steps.length){if(command)direct(command);return;}
|
|
24
|
+
prep={steps,index:0,age:0,command};mirror=steps[0].mirror;settle=null;
|
|
25
|
+
}
|
|
17
26
|
function issue(command){
|
|
18
|
-
if(command.kind==='go'
|
|
27
|
+
if(command.kind==='go'&&!motion.sample().moving){
|
|
19
28
|
const s=motion.sample(),dx=command.x-s.x,dz=command.z-s.z,length=Math.hypot(dx,dz);
|
|
20
|
-
if(length>.01){const targetView=Math.abs(dz/length)>.8?(dz>0?'front':'rear'):'side';
|
|
29
|
+
if(length>.01){const targetView=Math.abs(dz/length)>.8?(dz>0?'front':'rear'):'side';prepare(targetView,dx<0,{command});return;}
|
|
21
30
|
}
|
|
22
31
|
if(command.kind!=='stop')settle=null;
|
|
23
32
|
direct(command);
|
|
@@ -26,28 +35,34 @@ export function createCatFromAssets({seed=731}={},lease,kernel=null){
|
|
|
26
35
|
step(dt){
|
|
27
36
|
alive();if(!Number.isFinite(dt)||dt<0||dt>.25)throw RangeError('Invalid cat dt');
|
|
28
37
|
let left=dt;while(left>1e-10){const step=Math.min(1/60,left);left-=step;
|
|
29
|
-
if(prep){
|
|
38
|
+
if(prep){
|
|
39
|
+
prep.age+=step;const part=prep.steps[prep.index];
|
|
40
|
+
if(prep.age>=part.seconds){view=part.view;mirror=part.mirror;standing=!part.seated;
|
|
41
|
+
prep.age=0;prep.index++;
|
|
42
|
+
if(prep.index===prep.steps.length){const cmd=prep.command;prep=null;if(cmd)direct(cmd);}
|
|
43
|
+
else mirror=prep.steps[prep.index].mirror;
|
|
44
|
+
}
|
|
45
|
+
// Life's authored contact/consumption holds start after this bridge,
|
|
46
|
+
// rather than being consumed while hidden behind it.
|
|
47
|
+
if(prep)continue;
|
|
48
|
+
}
|
|
30
49
|
motion.step(step);const s=motion.sample();
|
|
31
50
|
const command=life.step(step,s);if(command)issue(command);
|
|
32
51
|
const report=life.report,clip=report.clip;
|
|
33
|
-
if(s.moving&&!prep&&!s.exercising){
|
|
52
|
+
if(s.moving&&!prep&&!s.exercising){if(s.airborne){mirror=Math.sin(s.heading)<0;view='side';}standing=true;settle=null;}
|
|
34
53
|
if(clip!==lastLifeClip){
|
|
35
|
-
if(
|
|
36
|
-
if(
|
|
37
|
-
if(['tower-
|
|
38
|
-
if(clip==='tower-load')mirror=report.facing<0;
|
|
54
|
+
if(['stretch-enter','knead-enter','feed-enter'].includes(clip)&&standing)prepare('front',false,{seated:true});
|
|
55
|
+
if(['tower-load','crouch','wheel-enter'].includes(clip))prepare('side',clip==='tower-load'?report.facing<0:clip==='wheel-enter'?false:mirror);
|
|
56
|
+
if(['tower-land','wheel-leave'].includes(clip)){view='side';standing=true;settle=null;if(clip.startsWith('wheel'))mirror=false;}
|
|
39
57
|
if(clip==='stretch-reach'){view='side';mirror=false;settle=null;}
|
|
40
|
-
if(clip==='feed-
|
|
58
|
+
if(clip==='feed-sniff'){view='side';mirror=false;standing=true;settle=null;}
|
|
41
59
|
// These authored sequences already finish on the canonical front sit.
|
|
42
60
|
// Replaying stand-to-sit here made the cat rise again after paw play.
|
|
43
|
-
if(clip==='sit'&&['bat','stretch','stretch-leave','feed-leave','loaf-leave'].includes(lastLifeClip)){view='front';mirror=false;settle=null;}
|
|
61
|
+
if(clip==='sit'&&['bat','stretch','stretch-leave','feed-leave','loaf-leave'].includes(lastLifeClip)){view='front';mirror=false;standing=false;settle=null;}
|
|
44
62
|
lastLifeClip=clip;
|
|
45
63
|
}
|
|
46
64
|
const quiet=['idle','sit','blink','eye-greeting','groom','loaf','sleep','tail-swish','tail-tip'].includes(clip);
|
|
47
|
-
if(!s.moving&&!prep&&quiet){
|
|
48
|
-
if(!settle&&(lastMoving||view!=='front'))settle={age:0,seconds:.45,clip:view==='front'?'sit-front':'sit-down'};
|
|
49
|
-
if(settle){settle.age+=step;if(settle.age>=settle.seconds){view='front';mirror=false;settle=null;}}
|
|
50
|
-
}else settle=null;
|
|
65
|
+
if(!s.moving&&!prep&&quiet&&standing)prepare('front',false,{seated:true});
|
|
51
66
|
lastMoving=s.moving;
|
|
52
67
|
if(s.moving&&!s.airborne&&!s.exercising&&s.supportY===0&&!prep&&view==='side')contacts.update(s,mirror);else contacts.reset();
|
|
53
68
|
}
|
|
@@ -62,13 +77,21 @@ export function createCatFromAssets({seed=731}={},lease,kernel=null){
|
|
|
62
77
|
}
|
|
63
78
|
if(s.airborne){clip=r.clip==='tower-up'?'tower-flight':r.clip==='tower-down'?'tower-fall':'pounce';progress=s.flightProgress;}
|
|
64
79
|
if(s.exercising||r.clip==='wheel-run'){clip='wheel-run';progress=((s.wheelPhase%1)+1)%1;}
|
|
65
|
-
if(
|
|
80
|
+
if(!s.moving&&['walk','creep'].includes(clip)){clip=view==='rear'?'stand-rear':view==='front'?'rise-front':'stand';progress=1;}
|
|
81
|
+
if(prep){const part=prep.steps[prep.index];clip=part.clip;progress=Math.min(1,prep.age/part.seconds);if(part.reverse)progress=1-progress;}
|
|
66
82
|
if(settle){clip=settle.clip;progress=Math.min(1,settle.age/settle.seconds);}
|
|
67
83
|
// Nine authored licking cycles in 3.6s. Rendering only samples simulation
|
|
68
84
|
// progress; a hidden or sparse host cannot change eating cadence.
|
|
69
85
|
if(clip==='feed-lick')progress=progress>=1?0:(progress*9)%1;
|
|
70
86
|
if(clip==='knead')progress=progress>=1?0:(progress*4)%1;
|
|
71
|
-
|
|
87
|
+
let keys=asset.meta.clips[clip]??asset.meta.clips.sit;
|
|
88
|
+
if(clip==='stand')keys=[asset.meta.clips['turn-front-side'].at(-1)];
|
|
89
|
+
if(clip==='sleep'){
|
|
90
|
+
// A slow fur breath and rare ear twitch, with exact curled endpoints.
|
|
91
|
+
// No body scaling/bobbing, no extra resident raster, no render-owned clock.
|
|
92
|
+
const t=r.restSeconds??0,phase=t%5.6;
|
|
93
|
+
keys=[Math.floor(t)%23===17?asset.meta.clips.sleep[3]:phase>1.4&&phase<3.5?asset.meta.clips.sleep[1]:asset.meta.clips.sleep[0]];progress=0;
|
|
94
|
+
}
|
|
72
95
|
const pins=clip==='walk'?contacts.pins(s):[];
|
|
73
96
|
// Every authored key needs a real hold, including the recovery/exit key.
|
|
74
97
|
const key=keys[Math.min(keys.length-1,Math.floor(Math.max(0,Math.min(1,progress))*keys.length))];
|
|
@@ -122,7 +145,7 @@ export function createCatFromAssets({seed=731}={},lease,kernel=null){
|
|
|
122
145
|
rasterizations++;lastPaintKey=paintKey;lastText=(kernel?.braille?kernel.braille(pixels,width,height,1.22,1.08):rgbaToBraille(pixels,width,height,{method:'stable',brightness:1.22,contrast:1.08})).text;
|
|
123
146
|
return result(lastText);
|
|
124
147
|
},
|
|
125
|
-
interact(kind,options){alive();if(!['treat','toy','call','stretch','tail','greet','company','tower','wheel'].includes(kind))throw TypeError('Invalid cat interaction');const accepted=life.interact(kind,options);if(accepted&&prep)
|
|
148
|
+
interact(kind,options){alive();if(!['treat','toy','call','stretch','tail','greet','company','tower','wheel'].includes(kind))throw TypeError('Invalid cat interaction');const accepted=life.interact(kind,options);if(accepted&&prep)prep.command=null;return accepted;},
|
|
126
149
|
get report(){alive();return life.report;},
|
|
127
150
|
get stats(){alive();return {residentPixelBytes:asset.store.residentPixelBytes??asset.store.residentBytes,cachedFrames:asset.store.stats().cachedFrames,rgbaBytes:pixels?.byteLength??0,lastClip,lastFrame,leases:lease.users?.()??1,rasterizations,heldHits};},
|
|
128
151
|
dispose(){if(disposed)return;disposed=true;pixels=null;prep=null;contacts.reset();asset=null;lastText=lastPaintKey='';release();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitefoundry/retrieviewer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "A fluffy Braille desktop pet for Windows and Linux X11, with experimental macOS support and an embeddable TUI engine.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://bitefoundry.github.io/retrieviewer/",
|
|
@@ -185,6 +185,7 @@
|
|
|
185
185
|
"integrations/purrviewer/art/ginger.json",
|
|
186
186
|
"integrations/purrviewer/art/ginger.rvz",
|
|
187
187
|
"integrations/purrviewer/src/contact.mjs",
|
|
188
|
+
"integrations/purrviewer/src/facing.mjs",
|
|
188
189
|
"integrations/purrviewer/src/habitat.mjs",
|
|
189
190
|
"integrations/purrviewer/src/life.mjs",
|
|
190
191
|
"integrations/purrviewer/src/purrviewer-core.mjs",
|
package/puppy-mouth-anchor.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"canonical":320,"ballRadiusPx":17.5,"mouthOffsetPx":25.0,"minScore":0.9,"seed":{"family":"approach","frame":45,"box":[158,108,68,50],"nose":[191.7,143.3]},"method":"cv2 TM_CCOEFF_NORMED multi-scale match of measured eyes+nose seed; mouth = nose + scale*offset (down)","unsupported":"front side-view tween, rear, actions (incl. walk-enter/walk), interactions, behaviors watch/rest","families":{"approach":{"cache":"puppy-paper-approach.bin.gz","sha256":"f5558c57d5a445d396e06c060f9f8d64e6ce0ff5b9b92fa6d77ef9bb2984a2fe","samples":9,"covered":124,"frames":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[224.66,147.5,0.9,0.904],[222.44,147.33,0.9,0.915],[219.17,148.34,0.9,0.934],[215.72,149.59,0.92,0.945],[212.89,150.36,0.92,0.957],[209.34,151.71,0.94,0.966],[206.61,152.52,0.94,0.972],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[198.71,154.18,0.96,0.966],[195.56,154.22,0.96,0.97],[191.82,155.11,0.98,0.967],[188.11,155.2,0.98,0.966],[184.12,154.72,0.96,0.966],[180.5,154.77,0.96,0.968],[177.45,154.9,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[175.53,155.91,0.96,0.974],[177.69,157.9,0.98,0.976],[179.97,159.24,0.98,0.983],[182.41,161.16,0.98,0.988],[184.55,162.2,0.98,0.987],[186.96,165.39,1.0,0.991],[189.54,166.0,0.98,0.986],[191.7,168.3,1.0,1.0],[191.7,168.3,1.0,1.0],[190.78,168.33,1.0,0.999],[190.26,168.08,0.98,0.983],[189.46,169.24,1.0,0.994],[188.66,169.45,1.0,0.988],[187.9,169.62,1.0,0.977],[187.07,168.92,0.98,0.971],[186.15,171.37,1.02,0.964],[185.12,171.44,1.02,0.959],[185.12,171.44,1.02,0.959],[183.01,167.4,0.98,0.967],[180.53,166.1,1.0,0.965],[178.7,163.98,0.98,0.962],[176.6,160.9,0.96,0.958],[174.17,158.89,0.96,0.958],[172.42,158.03,0.98,0.948],[170.58,155.84,0.96,0.945],[168.27,154.8,0.98,0.932],[168.27,154.8,0.98,0.932],[168.28,154.25,0.98,0.941],[167.82,153.76,0.98,0.938],[167.36,153.07,0.98,0.941],[167.1,151.76,0.96,0.941],[166.97,152.2,0.98,0.947],[166.89,151.46,0.98,0.944],[166.21,151.32,0.98,0.944],[166.05,150.38,0.98,0.943],[166.05,150.38,0.98,0.943],[168.13,148.79,0.96,0.945],[169.85,149.25,0.98,0.951],[172.04,147.99,0.98,0.948],[174.87,146.91,0.98,0.947],[176.38,147.11,1.0,0.947],[179.35,146.95,1.02,0.941],[181.18,146.19,1.02,0.943],[183.86,145.25,1.02,0.942],[183.86,145.25,1.02,0.942],[182.95,145.34,1.02,0.946],[182.65,145.38,1.02,0.953],[181.7,145.7,1.02,0.948],[181.06,145.96,1.02,0.949],[180.46,145.26,1.0,0.954],[179.53,146.46,1.02,0.949],[179.36,146.51,1.02,0.948],[178.41,146.53,1.02,0.947],[178.41,146.53,1.02,0.947],[180.31,147.47,1.02,0.952],[181.26,147.72,1.02,0.954],[183.14,147.04,0.98,0.957],[184.8,149.17,1.0,0.967],[186.42,150.19,1.0,0.966],[188.41,150.46,1.0,0.966],[189.95,151.41,1.0,0.971],[191.61,152.4,1.0,0.971],[191.61,152.4,1.0,0.971],[189.01,151.48,1.0,0.971],[186.85,151.25,1.0,0.979],[184.64,150.57,1.0,0.975],[182.06,149.13,0.98,0.974],[179.48,149.48,1.0,0.976],[177.17,149.61,1.02,0.976],[175.2,149.27,1.02,0.979],[172.3,148.6,1.02,0.975],[172.3,148.6,1.02,0.975],[175.21,151.35,1.02,0.979],[177.27,153.34,1.02,0.982],[179.97,155.12,1.0,0.983],[181.35,158.65,1.02,0.988],[184.96,160.94,1.0,0.987],[187.54,163.29,1.0,0.996],[189.22,166.33,1.02,0.992],[191.7,168.3,1.0,1.0],[191.7,168.3,1.0,1.0],[189.18,166.28,1.0,0.99],[186.95,164.07,0.98,0.991],[184.75,163.57,1.0,0.987],[182.21,160.91,0.98,0.986],[180.15,158.8,0.96,0.98],[177.73,156.71,0.96,0.974],[175.67,155.87,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[176.75,154.83,0.96,0.966],[180.19,154.77,0.96,0.966],[183.7,154.69,0.96,0.966],[187.78,153.74,0.94,0.965],[191.91,155.07,0.98,0.968],[195.35,154.27,0.96,0.969],[199.09,154.17,0.96,0.968],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[206.07,152.72,0.94,0.968],[209.04,152.89,0.96,0.962],[211.97,151.51,0.94,0.959],[215.45,150.92,0.94,0.941],[218.71,149.41,0.92,0.933],[221.75,148.5,0.9,0.92],[224.95,147.58,0.9,0.903],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"behaviors":{"cache":"puppy-paper-behaviors.bin.gz","sha256":"7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d","samples":9,"covered":90,"frames":[[201.21,166.15,0.98,0.959],[200.4,166.14,0.98,0.961],[200.13,166.16,0.98,0.963],[199.21,166.15,0.98,0.964],[198.65,166.13,0.98,0.964],[197.98,166.12,0.98,0.967],[197.08,166.1,0.98,0.966],[196.87,166.13,0.98,0.966],[195.93,166.1,0.98,0.965],[195.93,166.1,0.98,0.965],[196.01,166.1,0.98,0.967],[196.35,166.05,0.98,0.96],[196.85,166.1,0.98,0.966],[197.08,166.07,0.98,0.964],[197.25,166.07,0.98,0.96],[197.72,166.12,0.98,0.963],[198.13,166.05,0.98,0.957],[198.18,166.04,0.98,0.954],[198.18,166.04,0.98,0.954],[198.23,166.06,0.98,0.957],[198.26,166.09,0.98,0.957],[198.28,166.12,0.98,0.958],[198.81,167.29,1.0,0.968],[198.92,167.34,1.0,0.966],[198.98,167.37,1.0,0.964],[199.06,167.41,1.0,0.962],[199.07,167.42,1.0,0.96],[199.07,167.42,1.0,0.96],[199.16,167.39,1.0,0.96],[199.43,167.35,1.0,0.96],[199.96,167.33,1.0,0.965],[200.14,166.34,0.98,0.965],[200.28,166.27,0.98,0.963],[200.84,166.24,0.98,0.965],[201.14,166.17,0.98,0.962],[201.21,166.15,0.98,0.959],[191.7,168.3,1.0,1.0],[192.77,168.21,1.0,0.999],[194.11,167.32,0.98,0.992],[195.54,167.92,1.0,0.986],[196.71,166.87,0.98,0.982],[197.88,167.48,1.0,0.978],[199.08,166.37,0.98,0.973],[200.32,166.2,0.98,0.965],[201.21,166.15,0.98,0.959],[201.21,166.15,0.98,0.959],[201.8,170.56,1.0,0.964],[202.18,172.74,0.98,0.965],[202.46,176.13,0.98,0.966],[203.09,179.85,0.98,0.968],[203.28,183.55,0.98,0.961],[203.98,187.56,1.0,0.963],[204.72,190.66,1.0,0.967],[204.91,194.05,1.0,0.954],[204.91,194.05,1.0,0.954],[203.9,194.08,1.0,0.956],[202.88,194.15,0.98,0.958],[201.8,195.0,1.0,0.958],[200.65,195.45,1.0,0.961],[199.66,196.08,1.0,0.957],[198.46,196.15,1.0,0.953],[197.37,196.24,0.98,0.95],[196.35,196.3,0.98,0.947],[196.35,196.3,0.98,0.947],[192.86,196.11,1.0,0.951],[190.53,196.01,1.0,0.951],[187.51,196.0,1.0,0.949],[184.08,194.32,0.98,0.952],[180.99,193.88,0.98,0.949],[177.81,194.62,1.0,0.949],[175.36,194.61,1.02,0.95],[171.67,193.62,1.0,0.944],[171.67,193.62,1.0,0.944],[174.59,193.5,1.02,0.952],[177.38,192.46,1.02,0.95],[180.43,190.38,1.0,0.957],[183.32,188.01,0.98,0.95],[186.05,187.0,0.98,0.954],[189.53,187.6,1.02,0.95],[192.59,185.84,1.0,0.945],[195.46,183.93,0.98,0.942],[195.46,183.93,0.98,0.942],[195.23,182.08,0.98,0.958],[194.56,180.73,1.0,0.963],[194.34,179.26,1.0,0.974],[193.93,177.12,1.0,0.982],[193.33,175.54,1.02,0.983],[192.7,173.2,1.0,0.996],[192.66,170.55,1.0,0.992],[191.7,168.3,1.0,1.0],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"seat":{"cache":"puppy-paper-seat.bin.gz","sha256":"613dbeeeaec11804e80db0216922c8f62294745514ee6283bdce61a6d784dd5e","samples":17,"covered":51,"frames":[[191.7,168.3,1.0,1.0],[187.28,167.83,0.98,0.992],[186.01,168.11,0.98,0.997],[184.36,167.85,0.96,0.997],[182.14,168.27,0.96,0.99],[179.4,167.97,0.94,0.989],[177.05,167.47,0.92,0.991],[174.39,167.11,0.9,0.982],[171.52,167.84,0.9,0.977],[169.74,168.03,0.9,0.978],[166.37,168.27,0.9,0.98],[163.95,166.65,0.86,0.975],[161.1,167.16,0.86,0.973],[158.82,167.1,0.86,0.97],[157.06,167.85,0.86,0.97],[155.39,167.09,0.84,0.966],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]},"arrivalSeat":{"cache":"puppy-paper-arrival-seat.bin.gz","sha256":"13acb62fd573ff7ef97bcf59be80757897fe9d1784f187ab278990ff94a643b9","samples":17,"covered":51,"frames":[[195.46,183.93,0.98,0.942],[191.05,182.87,0.98,0.955],[189.92,182.76,0.98,0.95],[187.17,181.29,0.96,0.954],[184.77,179.89,0.94,0.954],[182.36,179.93,0.96,0.955],[179.54,177.85,0.94,0.96],[176.3,176.4,0.92,0.959],[174.08,175.36,0.9,0.966],[171.91,174.25,0.9,0.958],[168.15,172.23,0.88,0.953],[165.17,170.82,0.86,0.963],[162.45,171.28,0.88,0.959],[160.06,170.01,0.86,0.965],[157.6,169.78,0.86,0.959],[155.67,167.31,0.82,0.96],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]}}}
|
|
1
|
+
{"version":1,"canonical":320,"ballRadiusPx":17.5,"mouthOffsetPx":25,"minScore":0.9,"seed":{"family":"approach","frame":45,"box":[158,108,68,50],"nose":[191.7,143.3]},"method":"cv2 TM_CCOEFF_NORMED multi-scale match of measured eyes+nose seed; mouth = nose + scale*offset (down)","unsupported":"front side-view tween, rear, actions (incl. walk-enter/walk), interactions, behaviors watch/rest","families":{"approach":{"cache":"puppy-paper-approach.bin.gz","sha256":"f5558c57d5a445d396e06c060f9f8d64e6ce0ff5b9b92fa6d77ef9bb2984a2fe","samples":9,"covered":124,"frames":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[224.66,147.5,0.9,0.904],[222.44,147.33,0.9,0.915],[219.17,148.34,0.9,0.934],[215.72,149.59,0.92,0.945],[212.89,150.36,0.92,0.957],[209.34,151.71,0.94,0.966],[206.61,152.52,0.94,0.972],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[198.71,154.18,0.96,0.966],[195.56,154.22,0.96,0.97],[191.82,155.11,0.98,0.967],[188.11,155.2,0.98,0.966],[184.12,154.72,0.96,0.966],[180.5,154.77,0.96,0.968],[177.45,154.9,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[175.53,155.91,0.96,0.974],[177.69,157.9,0.98,0.976],[179.97,159.24,0.98,0.983],[182.41,161.16,0.98,0.988],[184.55,162.2,0.98,0.987],[186.96,165.39,1,0.991],[189.54,166,0.98,0.986],[191.7,168.3,1,1],[191.7,168.3,1,1],[190.78,168.33,1,0.999],[190.26,168.08,0.98,0.983],[189.46,169.24,1,0.994],[188.66,169.45,1,0.988],[187.9,169.62,1,0.977],[187.07,168.92,0.98,0.971],[186.15,171.37,1.02,0.964],[185.12,171.44,1.02,0.959],[185.12,171.44,1.02,0.959],[183.01,167.4,0.98,0.967],[180.53,166.1,1,0.965],[178.7,163.98,0.98,0.962],[176.6,160.9,0.96,0.958],[174.17,158.89,0.96,0.958],[172.42,158.03,0.98,0.948],[170.58,155.84,0.96,0.945],[168.27,154.8,0.98,0.932],[168.27,154.8,0.98,0.932],[168.28,154.25,0.98,0.941],[167.82,153.76,0.98,0.938],[167.36,153.07,0.98,0.941],[167.1,151.76,0.96,0.941],[166.97,152.2,0.98,0.947],[166.89,151.46,0.98,0.944],[166.21,151.32,0.98,0.944],[166.05,150.38,0.98,0.943],[166.05,150.38,0.98,0.943],[168.13,148.79,0.96,0.945],[169.85,149.25,0.98,0.951],[172.04,147.99,0.98,0.948],[174.87,146.91,0.98,0.947],[176.38,147.11,1,0.947],[179.35,146.95,1.02,0.941],[181.18,146.19,1.02,0.943],[183.86,145.25,1.02,0.942],[183.86,145.25,1.02,0.942],[182.95,145.34,1.02,0.946],[182.65,145.38,1.02,0.953],[181.7,145.7,1.02,0.948],[181.06,145.96,1.02,0.949],[180.46,145.26,1,0.954],[179.53,146.46,1.02,0.949],[179.36,146.51,1.02,0.948],[178.41,146.53,1.02,0.947],[178.41,146.53,1.02,0.947],[180.31,147.47,1.02,0.952],[181.26,147.72,1.02,0.954],[183.14,147.04,0.98,0.957],[184.8,149.17,1,0.967],[186.42,150.19,1,0.966],[188.41,150.46,1,0.966],[189.95,151.41,1,0.971],[191.61,152.4,1,0.971],[191.61,152.4,1,0.971],[189.01,151.48,1,0.971],[186.85,151.25,1,0.979],[184.64,150.57,1,0.975],[182.06,149.13,0.98,0.974],[179.48,149.48,1,0.976],[177.17,149.61,1.02,0.976],[175.2,149.27,1.02,0.979],[172.3,148.6,1.02,0.975],[172.3,148.6,1.02,0.975],[175.21,151.35,1.02,0.979],[177.27,153.34,1.02,0.982],[179.97,155.12,1,0.983],[181.35,158.65,1.02,0.988],[184.96,160.94,1,0.987],[187.54,163.29,1,0.996],[189.22,166.33,1.02,0.992],[191.7,168.3,1,1],[191.7,168.3,1,1],[189.18,166.28,1,0.99],[186.95,164.07,0.98,0.991],[184.75,163.57,1,0.987],[182.21,160.91,0.98,0.986],[180.15,158.8,0.96,0.98],[177.73,156.71,0.96,0.974],[175.67,155.87,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[176.75,154.83,0.96,0.966],[180.19,154.77,0.96,0.966],[183.7,154.69,0.96,0.966],[187.78,153.74,0.94,0.965],[191.91,155.07,0.98,0.968],[195.35,154.27,0.96,0.969],[199.09,154.17,0.96,0.968],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[206.07,152.72,0.94,0.968],[209.04,152.89,0.96,0.962],[211.97,151.51,0.94,0.959],[215.45,150.92,0.94,0.941],[218.71,149.41,0.92,0.933],[221.75,148.5,0.9,0.92],[224.95,147.58,0.9,0.903],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"behaviors":{"cache":"puppy-paper-behaviors.bin.gz","sha256":"7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d","samples":9,"covered":90,"frames":[[201.21,166.15,0.98,0.959],[200.4,166.14,0.98,0.961],[200.13,166.16,0.98,0.963],[199.21,166.15,0.98,0.964],[198.65,166.13,0.98,0.964],[197.98,166.12,0.98,0.967],[197.08,166.1,0.98,0.966],[196.87,166.13,0.98,0.966],[195.93,166.1,0.98,0.965],[195.93,166.1,0.98,0.965],[196.01,166.1,0.98,0.967],[196.35,166.05,0.98,0.96],[196.85,166.1,0.98,0.966],[197.08,166.07,0.98,0.964],[197.25,166.07,0.98,0.96],[197.72,166.12,0.98,0.963],[198.13,166.05,0.98,0.957],[198.18,166.04,0.98,0.954],[198.18,166.04,0.98,0.954],[198.23,166.06,0.98,0.957],[198.26,166.09,0.98,0.957],[198.28,166.12,0.98,0.958],[198.81,167.29,1,0.968],[198.92,167.34,1,0.966],[198.98,167.37,1,0.964],[199.06,167.41,1,0.962],[199.07,167.42,1,0.96],[199.07,167.42,1,0.96],[199.16,167.39,1,0.96],[199.43,167.35,1,0.96],[199.96,167.33,1,0.965],[200.14,166.34,0.98,0.965],[200.28,166.27,0.98,0.963],[200.84,166.24,0.98,0.965],[201.14,166.17,0.98,0.962],[201.21,166.15,0.98,0.959],[191.7,168.3,1,1],[192.77,168.21,1,0.999],[194.11,167.32,0.98,0.992],[195.54,167.92,1,0.986],[196.71,166.87,0.98,0.982],[197.88,167.48,1,0.978],[199.08,166.37,0.98,0.973],[200.32,166.2,0.98,0.965],[201.21,166.15,0.98,0.959],[201.21,166.15,0.98,0.959],[201.8,170.56,1,0.964],[202.18,172.74,0.98,0.965],[202.46,176.13,0.98,0.966],[203.09,179.85,0.98,0.968],[203.28,183.55,0.98,0.961],[203.98,187.56,1,0.963],[204.72,190.66,1,0.967],[204.91,194.05,1,0.954],[204.91,194.05,1,0.954],[203.9,194.08,1,0.956],[202.88,194.15,0.98,0.958],[201.8,195,1,0.958],[200.65,195.45,1,0.961],[199.66,196.08,1,0.957],[198.46,196.15,1,0.953],[197.37,196.24,0.98,0.95],[196.35,196.3,0.98,0.947],[196.35,196.3,0.98,0.947],[192.86,196.11,1,0.951],[190.53,196.01,1,0.951],[187.51,196,1,0.949],[184.08,194.32,0.98,0.952],[180.99,193.88,0.98,0.949],[177.81,194.62,1,0.949],[175.36,194.61,1.02,0.95],[171.67,193.62,1,0.944],[171.67,193.62,1,0.944],[174.59,193.5,1.02,0.952],[177.38,192.46,1.02,0.95],[180.43,190.38,1,0.957],[183.32,188.01,0.98,0.95],[186.05,187,0.98,0.954],[189.53,187.6,1.02,0.95],[192.59,185.84,1,0.945],[195.46,183.93,0.98,0.942],[195.46,183.93,0.98,0.942],[195.23,182.08,0.98,0.958],[194.56,180.73,1,0.963],[194.34,179.26,1,0.974],[193.93,177.12,1,0.982],[193.33,175.54,1.02,0.983],[192.7,173.2,1,0.996],[192.66,170.55,1,0.992],[191.7,168.3,1,1],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"seat":{"cache":"puppy-paper-seat.bin.gz","sha256":"613dbeeeaec11804e80db0216922c8f62294745514ee6283bdce61a6d784dd5e","samples":17,"covered":51,"frames":[[191.7,168.3,1,1],[187.28,167.83,0.98,0.992],[186.01,168.11,0.98,0.997],[184.36,167.85,0.96,0.997],[182.14,168.27,0.96,0.99],[179.4,167.97,0.94,0.989],[177.05,167.47,0.92,0.991],[174.39,167.11,0.9,0.982],[171.52,167.84,0.9,0.977],[169.74,168.03,0.9,0.978],[166.37,168.27,0.9,0.98],[163.95,166.65,0.86,0.975],[161.1,167.16,0.86,0.973],[158.82,167.1,0.86,0.97],[157.06,167.85,0.86,0.97],[155.39,167.09,0.84,0.966],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]},"arrivalSeat":{"cache":"puppy-paper-arrival-seat.bin.gz","sha256":"13acb62fd573ff7ef97bcf59be80757897fe9d1784f187ab278990ff94a643b9","samples":17,"covered":51,"frames":[[195.46,183.93,0.98,0.942],[191.05,182.87,0.98,0.955],[189.92,182.76,0.98,0.95],[187.17,181.29,0.96,0.954],[184.77,179.89,0.94,0.954],[182.36,179.93,0.96,0.955],[179.54,177.85,0.94,0.96],[176.3,176.4,0.92,0.959],[174.08,175.36,0.9,0.966],[171.91,174.25,0.9,0.958],[168.15,172.23,0.88,0.953],[165.17,170.82,0.86,0.963],[162.45,171.28,0.88,0.959],[160.06,170.01,0.86,0.965],[157.6,169.78,0.86,0.959],[155.67,167.31,0.82,0.96],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]},"actions":{"sha256":"1e0db7138d087292a3e70c246a1d56af590b3fb50928687a026e7080d7657c38","frames":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[192,168,1,null],[197,167,1,null],[203,165,1,null],[209,165,1,null],[224,154,1,null],[235,150,1,null],[242,149,1,null],[245,149,1,null],[252,148,1,null],null,null,null,null,null,[237,150,1,null],[245,149,1,null],[248,149,1,null],[252,148,1,null],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}}}
|
package/puppy-mouth-anchor.mjs
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import {paperBehaviorPose} from './puppy-paper-behaviors.mjs';
|
|
2
|
+
import {paperActionPose} from './puppy-paper-actions.mjs';
|
|
2
3
|
|
|
3
4
|
// Measured open-mouth centers per exact cached source sample (canonical 320px
|
|
4
|
-
// source space, unflipped).
|
|
5
|
-
//
|
|
6
|
-
//
|
|
5
|
+
// source space, unflipped). Base families came from offline face annotation;
|
|
6
|
+
// standing-turn samples are maintained by tools/update-turn-mouths.mjs.
|
|
7
|
+
// Never a root height, bob curve or runtime image analysis.
|
|
8
|
+
// Families/frames missing here (unmeasured side/rear poses and actions) are
|
|
7
9
|
// unsupported: callers hide the carried ball rather than float it.
|
|
8
|
-
export const MOUTH_ANCHORS=/*BEGIN GENERATED*/{"version":1,"ballRadiusPx":17.5,"families":{"approach":{"sha256":"f5558c57d5a445d396e06c060f9f8d64e6ce0ff5b9b92fa6d77ef9bb2984a2fe","frames":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[224.66,147.5,0.9,0.904],[222.44,147.33,0.9,0.915],[219.17,148.34,0.9,0.934],[215.72,149.59,0.92,0.945],[212.89,150.36,0.92,0.957],[209.34,151.71,0.94,0.966],[206.61,152.52,0.94,0.972],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[198.71,154.18,0.96,0.966],[195.56,154.22,0.96,0.97],[191.82,155.11,0.98,0.967],[188.11,155.2,0.98,0.966],[184.12,154.72,0.96,0.966],[180.5,154.77,0.96,0.968],[177.45,154.9,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[175.53,155.91,0.96,0.974],[177.69,157.9,0.98,0.976],[179.97,159.24,0.98,0.983],[182.41,161.16,0.98,0.988],[184.55,162.2,0.98,0.987],[186.96,165.39,1.0,0.991],[189.54,166.0,0.98,0.986],[191.7,168.3,1.0,1.0],[191.7,168.3,1.0,1.0],[190.78,168.33,1.0,0.999],[190.26,168.08,0.98,0.983],[189.46,169.24,1.0,0.994],[188.66,169.45,1.0,0.988],[187.9,169.62,1.0,0.977],[187.07,168.92,0.98,0.971],[186.15,171.37,1.02,0.964],[185.12,171.44,1.02,0.959],[185.12,171.44,1.02,0.959],[183.01,167.4,0.98,0.967],[180.53,166.1,1.0,0.965],[178.7,163.98,0.98,0.962],[176.6,160.9,0.96,0.958],[174.17,158.89,0.96,0.958],[172.42,158.03,0.98,0.948],[170.58,155.84,0.96,0.945],[168.27,154.8,0.98,0.932],[168.27,154.8,0.98,0.932],[168.28,154.25,0.98,0.941],[167.82,153.76,0.98,0.938],[167.36,153.07,0.98,0.941],[167.1,151.76,0.96,0.941],[166.97,152.2,0.98,0.947],[166.89,151.46,0.98,0.944],[166.21,151.32,0.98,0.944],[166.05,150.38,0.98,0.943],[166.05,150.38,0.98,0.943],[168.13,148.79,0.96,0.945],[169.85,149.25,0.98,0.951],[172.04,147.99,0.98,0.948],[174.87,146.91,0.98,0.947],[176.38,147.11,1.0,0.947],[179.35,146.95,1.02,0.941],[181.18,146.19,1.02,0.943],[183.86,145.25,1.02,0.942],[183.86,145.25,1.02,0.942],[182.95,145.34,1.02,0.946],[182.65,145.38,1.02,0.953],[181.7,145.7,1.02,0.948],[181.06,145.96,1.02,0.949],[180.46,145.26,1.0,0.954],[179.53,146.46,1.02,0.949],[179.36,146.51,1.02,0.948],[178.41,146.53,1.02,0.947],[178.41,146.53,1.02,0.947],[180.31,147.47,1.02,0.952],[181.26,147.72,1.02,0.954],[183.14,147.04,0.98,0.957],[184.8,149.17,1.0,0.967],[186.42,150.19,1.0,0.966],[188.41,150.46,1.0,0.966],[189.95,151.41,1.0,0.971],[191.61,152.4,1.0,0.971],[191.61,152.4,1.0,0.971],[189.01,151.48,1.0,0.971],[186.85,151.25,1.0,0.979],[184.64,150.57,1.0,0.975],[182.06,149.13,0.98,0.974],[179.48,149.48,1.0,0.976],[177.17,149.61,1.02,0.976],[175.2,149.27,1.02,0.979],[172.3,148.6,1.02,0.975],[172.3,148.6,1.02,0.975],[175.21,151.35,1.02,0.979],[177.27,153.34,1.02,0.982],[179.97,155.12,1.0,0.983],[181.35,158.65,1.02,0.988],[184.96,160.94,1.0,0.987],[187.54,163.29,1.0,0.996],[189.22,166.33,1.02,0.992],[191.7,168.3,1.0,1.0],[191.7,168.3,1.0,1.0],[189.18,166.28,1.0,0.99],[186.95,164.07,0.98,0.991],[184.75,163.57,1.0,0.987],[182.21,160.91,0.98,0.986],[180.15,158.8,0.96,0.98],[177.73,156.71,0.96,0.974],[175.67,155.87,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[176.75,154.83,0.96,0.966],[180.19,154.77,0.96,0.966],[183.7,154.69,0.96,0.966],[187.78,153.74,0.94,0.965],[191.91,155.07,0.98,0.968],[195.35,154.27,0.96,0.969],[199.09,154.17,0.96,0.968],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[206.07,152.72,0.94,0.968],[209.04,152.89,0.96,0.962],[211.97,151.51,0.94,0.959],[215.45,150.92,0.94,0.941],[218.71,149.41,0.92,0.933],[221.75,148.5,0.9,0.92],[224.95,147.58,0.9,0.903],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"behaviors":{"sha256":"7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d","frames":[[201.21,166.15,0.98,0.959],[200.4,166.14,0.98,0.961],[200.13,166.16,0.98,0.963],[199.21,166.15,0.98,0.964],[198.65,166.13,0.98,0.964],[197.98,166.12,0.98,0.967],[197.08,166.1,0.98,0.966],[196.87,166.13,0.98,0.966],[195.93,166.1,0.98,0.965],[195.93,166.1,0.98,0.965],[196.01,166.1,0.98,0.967],[196.35,166.05,0.98,0.96],[196.85,166.1,0.98,0.966],[197.08,166.07,0.98,0.964],[197.25,166.07,0.98,0.96],[197.72,166.12,0.98,0.963],[198.13,166.05,0.98,0.957],[198.18,166.04,0.98,0.954],[198.18,166.04,0.98,0.954],[198.23,166.06,0.98,0.957],[198.26,166.09,0.98,0.957],[198.28,166.12,0.98,0.958],[198.81,167.29,1.0,0.968],[198.92,167.34,1.0,0.966],[198.98,167.37,1.0,0.964],[199.06,167.41,1.0,0.962],[199.07,167.42,1.0,0.96],[199.07,167.42,1.0,0.96],[199.16,167.39,1.0,0.96],[199.43,167.35,1.0,0.96],[199.96,167.33,1.0,0.965],[200.14,166.34,0.98,0.965],[200.28,166.27,0.98,0.963],[200.84,166.24,0.98,0.965],[201.14,166.17,0.98,0.962],[201.21,166.15,0.98,0.959],[191.7,168.3,1.0,1.0],[192.77,168.21,1.0,0.999],[194.11,167.32,0.98,0.992],[195.54,167.92,1.0,0.986],[196.71,166.87,0.98,0.982],[197.88,167.48,1.0,0.978],[199.08,166.37,0.98,0.973],[200.32,166.2,0.98,0.965],[201.21,166.15,0.98,0.959],[201.21,166.15,0.98,0.959],[201.8,170.56,1.0,0.964],[202.18,172.74,0.98,0.965],[202.46,176.13,0.98,0.966],[203.09,179.85,0.98,0.968],[203.28,183.55,0.98,0.961],[203.98,187.56,1.0,0.963],[204.72,190.66,1.0,0.967],[204.91,194.05,1.0,0.954],[204.91,194.05,1.0,0.954],[203.9,194.08,1.0,0.956],[202.88,194.15,0.98,0.958],[201.8,195.0,1.0,0.958],[200.65,195.45,1.0,0.961],[199.66,196.08,1.0,0.957],[198.46,196.15,1.0,0.953],[197.37,196.24,0.98,0.95],[196.35,196.3,0.98,0.947],[196.35,196.3,0.98,0.947],[192.86,196.11,1.0,0.951],[190.53,196.01,1.0,0.951],[187.51,196.0,1.0,0.949],[184.08,194.32,0.98,0.952],[180.99,193.88,0.98,0.949],[177.81,194.62,1.0,0.949],[175.36,194.61,1.02,0.95],[171.67,193.62,1.0,0.944],[171.67,193.62,1.0,0.944],[174.59,193.5,1.02,0.952],[177.38,192.46,1.02,0.95],[180.43,190.38,1.0,0.957],[183.32,188.01,0.98,0.95],[186.05,187.0,0.98,0.954],[189.53,187.6,1.02,0.95],[192.59,185.84,1.0,0.945],[195.46,183.93,0.98,0.942],[195.46,183.93,0.98,0.942],[195.23,182.08,0.98,0.958],[194.56,180.73,1.0,0.963],[194.34,179.26,1.0,0.974],[193.93,177.12,1.0,0.982],[193.33,175.54,1.02,0.983],[192.7,173.2,1.0,0.996],[192.66,170.55,1.0,0.992],[191.7,168.3,1.0,1.0],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"seat":{"sha256":"613dbeeeaec11804e80db0216922c8f62294745514ee6283bdce61a6d784dd5e","frames":[[191.7,168.3,1.0,1.0],[187.28,167.83,0.98,0.992],[186.01,168.11,0.98,0.997],[184.36,167.85,0.96,0.997],[182.14,168.27,0.96,0.99],[179.4,167.97,0.94,0.989],[177.05,167.47,0.92,0.991],[174.39,167.11,0.9,0.982],[171.52,167.84,0.9,0.977],[169.74,168.03,0.9,0.978],[166.37,168.27,0.9,0.98],[163.95,166.65,0.86,0.975],[161.1,167.16,0.86,0.973],[158.82,167.1,0.86,0.97],[157.06,167.85,0.86,0.97],[155.39,167.09,0.84,0.966],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]},"arrivalSeat":{"sha256":"13acb62fd573ff7ef97bcf59be80757897fe9d1784f187ab278990ff94a643b9","frames":[[195.46,183.93,0.98,0.942],[191.05,182.87,0.98,0.955],[189.92,182.76,0.98,0.95],[187.17,181.29,0.96,0.954],[184.77,179.89,0.94,0.954],[182.36,179.93,0.96,0.955],[179.54,177.85,0.94,0.96],[176.3,176.4,0.92,0.959],[174.08,175.36,0.9,0.966],[171.91,174.25,0.9,0.958],[168.15,172.23,0.88,0.953],[165.17,170.82,0.86,0.963],[162.45,171.28,0.88,0.959],[160.06,170.01,0.86,0.965],[157.6,169.78,0.86,0.959],[155.67,167.31,0.82,0.96],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]}}}/*END GENERATED*/;
|
|
10
|
+
export const MOUTH_ANCHORS=/*BEGIN GENERATED*/{"version":1,"canonical":320,"ballRadiusPx":17.5,"mouthOffsetPx":25,"minScore":0.9,"seed":{"family":"approach","frame":45,"box":[158,108,68,50],"nose":[191.7,143.3]},"method":"cv2 TM_CCOEFF_NORMED multi-scale match of measured eyes+nose seed; mouth = nose + scale*offset (down)","unsupported":"front side-view tween, rear, actions (incl. walk-enter/walk), interactions, behaviors watch/rest","families":{"approach":{"cache":"puppy-paper-approach.bin.gz","sha256":"f5558c57d5a445d396e06c060f9f8d64e6ce0ff5b9b92fa6d77ef9bb2984a2fe","samples":9,"covered":124,"frames":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[224.66,147.5,0.9,0.904],[222.44,147.33,0.9,0.915],[219.17,148.34,0.9,0.934],[215.72,149.59,0.92,0.945],[212.89,150.36,0.92,0.957],[209.34,151.71,0.94,0.966],[206.61,152.52,0.94,0.972],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[198.71,154.18,0.96,0.966],[195.56,154.22,0.96,0.97],[191.82,155.11,0.98,0.967],[188.11,155.2,0.98,0.966],[184.12,154.72,0.96,0.966],[180.5,154.77,0.96,0.968],[177.45,154.9,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[175.53,155.91,0.96,0.974],[177.69,157.9,0.98,0.976],[179.97,159.24,0.98,0.983],[182.41,161.16,0.98,0.988],[184.55,162.2,0.98,0.987],[186.96,165.39,1,0.991],[189.54,166,0.98,0.986],[191.7,168.3,1,1],[191.7,168.3,1,1],[190.78,168.33,1,0.999],[190.26,168.08,0.98,0.983],[189.46,169.24,1,0.994],[188.66,169.45,1,0.988],[187.9,169.62,1,0.977],[187.07,168.92,0.98,0.971],[186.15,171.37,1.02,0.964],[185.12,171.44,1.02,0.959],[185.12,171.44,1.02,0.959],[183.01,167.4,0.98,0.967],[180.53,166.1,1,0.965],[178.7,163.98,0.98,0.962],[176.6,160.9,0.96,0.958],[174.17,158.89,0.96,0.958],[172.42,158.03,0.98,0.948],[170.58,155.84,0.96,0.945],[168.27,154.8,0.98,0.932],[168.27,154.8,0.98,0.932],[168.28,154.25,0.98,0.941],[167.82,153.76,0.98,0.938],[167.36,153.07,0.98,0.941],[167.1,151.76,0.96,0.941],[166.97,152.2,0.98,0.947],[166.89,151.46,0.98,0.944],[166.21,151.32,0.98,0.944],[166.05,150.38,0.98,0.943],[166.05,150.38,0.98,0.943],[168.13,148.79,0.96,0.945],[169.85,149.25,0.98,0.951],[172.04,147.99,0.98,0.948],[174.87,146.91,0.98,0.947],[176.38,147.11,1,0.947],[179.35,146.95,1.02,0.941],[181.18,146.19,1.02,0.943],[183.86,145.25,1.02,0.942],[183.86,145.25,1.02,0.942],[182.95,145.34,1.02,0.946],[182.65,145.38,1.02,0.953],[181.7,145.7,1.02,0.948],[181.06,145.96,1.02,0.949],[180.46,145.26,1,0.954],[179.53,146.46,1.02,0.949],[179.36,146.51,1.02,0.948],[178.41,146.53,1.02,0.947],[178.41,146.53,1.02,0.947],[180.31,147.47,1.02,0.952],[181.26,147.72,1.02,0.954],[183.14,147.04,0.98,0.957],[184.8,149.17,1,0.967],[186.42,150.19,1,0.966],[188.41,150.46,1,0.966],[189.95,151.41,1,0.971],[191.61,152.4,1,0.971],[191.61,152.4,1,0.971],[189.01,151.48,1,0.971],[186.85,151.25,1,0.979],[184.64,150.57,1,0.975],[182.06,149.13,0.98,0.974],[179.48,149.48,1,0.976],[177.17,149.61,1.02,0.976],[175.2,149.27,1.02,0.979],[172.3,148.6,1.02,0.975],[172.3,148.6,1.02,0.975],[175.21,151.35,1.02,0.979],[177.27,153.34,1.02,0.982],[179.97,155.12,1,0.983],[181.35,158.65,1.02,0.988],[184.96,160.94,1,0.987],[187.54,163.29,1,0.996],[189.22,166.33,1.02,0.992],[191.7,168.3,1,1],[191.7,168.3,1,1],[189.18,166.28,1,0.99],[186.95,164.07,0.98,0.991],[184.75,163.57,1,0.987],[182.21,160.91,0.98,0.986],[180.15,158.8,0.96,0.98],[177.73,156.71,0.96,0.974],[175.67,155.87,0.96,0.97],[173.13,154.91,0.96,0.965],[173.13,154.91,0.96,0.965],[176.75,154.83,0.96,0.966],[180.19,154.77,0.96,0.966],[183.7,154.69,0.96,0.966],[187.78,153.74,0.94,0.965],[191.91,155.07,0.98,0.968],[195.35,154.27,0.96,0.969],[199.09,154.17,0.96,0.968],[202.85,153.49,0.94,0.965],[202.85,153.49,0.94,0.965],[206.07,152.72,0.94,0.968],[209.04,152.89,0.96,0.962],[211.97,151.51,0.94,0.959],[215.45,150.92,0.94,0.941],[218.71,149.41,0.92,0.933],[221.75,148.5,0.9,0.92],[224.95,147.58,0.9,0.903],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"behaviors":{"cache":"puppy-paper-behaviors.bin.gz","sha256":"7918261fb64c57a91739729841fd84c6dd53891196c7fb76ee9c27712ab6ef5d","samples":9,"covered":90,"frames":[[201.21,166.15,0.98,0.959],[200.4,166.14,0.98,0.961],[200.13,166.16,0.98,0.963],[199.21,166.15,0.98,0.964],[198.65,166.13,0.98,0.964],[197.98,166.12,0.98,0.967],[197.08,166.1,0.98,0.966],[196.87,166.13,0.98,0.966],[195.93,166.1,0.98,0.965],[195.93,166.1,0.98,0.965],[196.01,166.1,0.98,0.967],[196.35,166.05,0.98,0.96],[196.85,166.1,0.98,0.966],[197.08,166.07,0.98,0.964],[197.25,166.07,0.98,0.96],[197.72,166.12,0.98,0.963],[198.13,166.05,0.98,0.957],[198.18,166.04,0.98,0.954],[198.18,166.04,0.98,0.954],[198.23,166.06,0.98,0.957],[198.26,166.09,0.98,0.957],[198.28,166.12,0.98,0.958],[198.81,167.29,1,0.968],[198.92,167.34,1,0.966],[198.98,167.37,1,0.964],[199.06,167.41,1,0.962],[199.07,167.42,1,0.96],[199.07,167.42,1,0.96],[199.16,167.39,1,0.96],[199.43,167.35,1,0.96],[199.96,167.33,1,0.965],[200.14,166.34,0.98,0.965],[200.28,166.27,0.98,0.963],[200.84,166.24,0.98,0.965],[201.14,166.17,0.98,0.962],[201.21,166.15,0.98,0.959],[191.7,168.3,1,1],[192.77,168.21,1,0.999],[194.11,167.32,0.98,0.992],[195.54,167.92,1,0.986],[196.71,166.87,0.98,0.982],[197.88,167.48,1,0.978],[199.08,166.37,0.98,0.973],[200.32,166.2,0.98,0.965],[201.21,166.15,0.98,0.959],[201.21,166.15,0.98,0.959],[201.8,170.56,1,0.964],[202.18,172.74,0.98,0.965],[202.46,176.13,0.98,0.966],[203.09,179.85,0.98,0.968],[203.28,183.55,0.98,0.961],[203.98,187.56,1,0.963],[204.72,190.66,1,0.967],[204.91,194.05,1,0.954],[204.91,194.05,1,0.954],[203.9,194.08,1,0.956],[202.88,194.15,0.98,0.958],[201.8,195,1,0.958],[200.65,195.45,1,0.961],[199.66,196.08,1,0.957],[198.46,196.15,1,0.953],[197.37,196.24,0.98,0.95],[196.35,196.3,0.98,0.947],[196.35,196.3,0.98,0.947],[192.86,196.11,1,0.951],[190.53,196.01,1,0.951],[187.51,196,1,0.949],[184.08,194.32,0.98,0.952],[180.99,193.88,0.98,0.949],[177.81,194.62,1,0.949],[175.36,194.61,1.02,0.95],[171.67,193.62,1,0.944],[171.67,193.62,1,0.944],[174.59,193.5,1.02,0.952],[177.38,192.46,1.02,0.95],[180.43,190.38,1,0.957],[183.32,188.01,0.98,0.95],[186.05,187,0.98,0.954],[189.53,187.6,1.02,0.95],[192.59,185.84,1,0.945],[195.46,183.93,0.98,0.942],[195.46,183.93,0.98,0.942],[195.23,182.08,0.98,0.958],[194.56,180.73,1,0.963],[194.34,179.26,1,0.974],[193.93,177.12,1,0.982],[193.33,175.54,1.02,0.983],[192.7,173.2,1,0.996],[192.66,170.55,1,0.992],[191.7,168.3,1,1],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"seat":{"cache":"puppy-paper-seat.bin.gz","sha256":"613dbeeeaec11804e80db0216922c8f62294745514ee6283bdce61a6d784dd5e","samples":17,"covered":51,"frames":[[191.7,168.3,1,1],[187.28,167.83,0.98,0.992],[186.01,168.11,0.98,0.997],[184.36,167.85,0.96,0.997],[182.14,168.27,0.96,0.99],[179.4,167.97,0.94,0.989],[177.05,167.47,0.92,0.991],[174.39,167.11,0.9,0.982],[171.52,167.84,0.9,0.977],[169.74,168.03,0.9,0.978],[166.37,168.27,0.9,0.98],[163.95,166.65,0.86,0.975],[161.1,167.16,0.86,0.973],[158.82,167.1,0.86,0.97],[157.06,167.85,0.86,0.97],[155.39,167.09,0.84,0.966],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]},"arrivalSeat":{"cache":"puppy-paper-arrival-seat.bin.gz","sha256":"13acb62fd573ff7ef97bcf59be80757897fe9d1784f187ab278990ff94a643b9","samples":17,"covered":51,"frames":[[195.46,183.93,0.98,0.942],[191.05,182.87,0.98,0.955],[189.92,182.76,0.98,0.95],[187.17,181.29,0.96,0.954],[184.77,179.89,0.94,0.954],[182.36,179.93,0.96,0.955],[179.54,177.85,0.94,0.96],[176.3,176.4,0.92,0.959],[174.08,175.36,0.9,0.966],[171.91,174.25,0.9,0.958],[168.15,172.23,0.88,0.953],[165.17,170.82,0.86,0.963],[162.45,171.28,0.88,0.959],[160.06,170.01,0.86,0.965],[157.6,169.78,0.86,0.959],[155.67,167.31,0.82,0.96],[152.19,167.86,0.84,0.951],[152.19,167.86,0.84,0.951],[152.24,167.87,0.84,0.952],[152.26,167.86,0.84,0.953],[152.26,167.85,0.84,0.953],[152.27,167.85,0.84,0.953],[152.3,167.84,0.84,0.954],[152.33,167.83,0.84,0.954],[152.69,166.08,0.8,0.956],[152.75,166.06,0.8,0.956],[152.77,166.04,0.8,0.957],[153.16,166.03,0.8,0.957],[153.19,166.03,0.8,0.956],[153.21,166.02,0.8,0.955],[153.23,166.02,0.8,0.955],[153.27,166.02,0.8,0.953],[153.37,166.03,0.8,0.952],[153.28,166.02,0.8,0.952],[153.28,166.02,0.8,0.952],[154.28,166.02,0.8,0.954],[154.49,166.87,0.82,0.951],[155.31,165.99,0.8,0.953],[156.08,165.96,0.8,0.956],[156.67,166.83,0.82,0.958],[157.34,166.82,0.82,0.955],[158.31,166.73,0.82,0.956],[158.83,166.62,0.82,0.96],[159.42,166.54,0.82,0.958],[160.23,166.48,0.82,0.952],[160.85,166.5,0.82,0.954],[161.4,166.49,0.82,0.954],[162.04,166.45,0.82,0.947],[162.98,166.47,0.82,0.947],[163.19,166.46,0.82,0.946],[164.02,166.47,0.82,0.945]]},"actions":{"sha256":"1e0db7138d087292a3e70c246a1d56af590b3fb50928687a026e7080d7657c38","frames":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[192,168,1,null],[197,167,1,null],[203,165,1,null],[209,165,1,null],[224,154,1,null],[235,150,1,null],[242,149,1,null],[245,149,1,null],[252,148,1,null],null,null,null,null,null,[237,150,1,null],[245,149,1,null],[248,149,1,null],[252,148,1,null],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}}}/*END GENERATED*/;
|
|
9
11
|
|
|
10
12
|
// Exact sample the renderer's samplers read for this state (same quantization).
|
|
11
13
|
export function mouthSourceFrame(family,state,info){
|
|
14
|
+
if(family==='actions'){const p=paperActionPose(state.actionName,state.actionProgress,info);return p.pair*9+Math.round(p.blend*8);}
|
|
12
15
|
if(family==='approach')return state.approachPair*9+Math.round(state.blend*8);
|
|
13
16
|
if(family==='behaviors'){const p=paperBehaviorPose(state,info);return p.pair*9+Math.round(p.blend*8);}
|
|
14
17
|
if(family==='seat'||family==='arrivalSeat'){const q=state.seatProgress*3,pair=Math.min(2,Math.floor(q));return pair*17+Math.round((q-pair)*16);}
|
package/puppy-paper.mjs
CHANGED
|
@@ -315,8 +315,11 @@ export function createPaperActor(animal,info,{manualTricks=false,trickTimings=nu
|
|
|
315
315
|
if(activeAction?.comfort)kind=activeAction.comfort;
|
|
316
316
|
let actionName=activeAction?.name??(state==='run'&&movementMode==='walk'?'walk':null),actionProgress=activeAction?(activeAction.timing?activeAction.timing.progressAt(age):Math.min(1,age/activeAction.duration)):phase;
|
|
317
317
|
if(manualDown&&state==='down'){actionName='lie-down';actionProgress=1;}
|
|
318
|
-
if(walkTransitions&&state==='view-turn'
|
|
319
|
-
|
|
318
|
+
if(walkTransitions&&state==='view-turn'){
|
|
319
|
+
// Both directions share the same standing endpoints. The old outbound
|
|
320
|
+
// material began crouched, so reversing a journey changed the dog's mass.
|
|
321
|
+
actionName=(view==='approach'||turnView==='approach')?'walk-face-front':'walk-face-rear';
|
|
322
|
+
const t=Math.min(1,age/viewTurnSeconds());actionProgress=turnView==='front'?t:1-t;
|
|
320
323
|
}
|
|
321
324
|
// This clip is a calibrated standing half-turn, not walk-specific motion.
|
|
322
325
|
// The old turn's intro/outro added an unrelated squat to every reversal.
|
|
@@ -419,9 +422,9 @@ export function createPaperRenderer(cache,info,meta,width,height,{rear,approach,
|
|
|
419
422
|
if(kernel?.clear)kernel.clear(out);else{out.fill(0);for(let i=3;i<out.length;i+=4)out[i]=255;}
|
|
420
423
|
render.lastPlacement={left,top,side,sideX};
|
|
421
424
|
// Measured drawn mouth of the EXACT sample above (same priority, quantization,
|
|
422
|
-
// placement and mirror).
|
|
423
|
-
const mouthFamily=isInteraction
|
|
424
|
-
const mouthInfo={behaviors:behaviors?.info,seat:seat?.info,arrivalSeat:arrivalSeat?.info,approach:approach?.info}[mouthFamily];
|
|
425
|
+
// placement and mirror). Unmeasured or occluded samples remain unsupported.
|
|
426
|
+
const mouthFamily=isInteraction?null:isAction?'actions':isBehavior?'behaviors':isSeat?(state.seatVariant==='arrival'&&arrivalSeatSample?'arrivalSeat':'seat'):isApproach?'approach':null;
|
|
427
|
+
const mouthInfo={actions:actions?.info,behaviors:behaviors?.info,seat:seat?.info,arrivalSeat:arrivalSeat?.info,approach:approach?.info}[mouthFamily];
|
|
425
428
|
const mouthFrame=mouthFamily?mouthSourceFrame(mouthFamily,state,mouthInfo):null;
|
|
426
429
|
render.lastMouth=projectMouth(mouthFamily?mouthAnchor(mouthFamily,mouthFrame,mouthInfo?.sha256):null,{left,top,side,sideX},state.flip,{family:mouthFamily,frame:mouthFrame});
|
|
427
430
|
if(motion?.mouth){
|