distark-render 1.1.6 → 1.1.9

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.
Files changed (132) hide show
  1. package/README.md +0 -0
  2. package/assets/presets/jumping-jack.json +194 -0
  3. package/assets/tank.json +0 -0
  4. package/dist/cli/animate.d.ts +0 -0
  5. package/dist/cli/animate.d.ts.map +0 -0
  6. package/dist/cli/animate.js +0 -0
  7. package/dist/cli/animate.js.map +0 -0
  8. package/dist/cli/diff.d.ts +0 -0
  9. package/dist/cli/diff.d.ts.map +0 -0
  10. package/dist/cli/diff.js +0 -0
  11. package/dist/cli/diff.js.map +0 -0
  12. package/dist/cli/distark-check.d.ts +0 -0
  13. package/dist/cli/distark-check.d.ts.map +0 -0
  14. package/dist/cli/distark-check.js +20 -14
  15. package/dist/cli/distark-check.js.map +1 -1
  16. package/dist/cli/query.d.ts +0 -0
  17. package/dist/cli/query.d.ts.map +0 -0
  18. package/dist/cli/query.js +0 -0
  19. package/dist/cli/query.js.map +0 -0
  20. package/dist/cli/record.d.ts +0 -0
  21. package/dist/cli/record.d.ts.map +0 -0
  22. package/dist/cli/record.js +0 -0
  23. package/dist/cli/record.js.map +0 -0
  24. package/dist/cli/render.d.ts +0 -0
  25. package/dist/cli/render.d.ts.map +0 -0
  26. package/dist/cli/render.js +0 -0
  27. package/dist/cli/render.js.map +0 -0
  28. package/dist/cli/scene.d.ts +15 -0
  29. package/dist/cli/scene.d.ts.map +1 -0
  30. package/dist/cli/scene.js +239 -0
  31. package/dist/cli/scene.js.map +1 -0
  32. package/dist/cli/shared.d.ts +0 -0
  33. package/dist/cli/shared.d.ts.map +0 -0
  34. package/dist/cli/shared.js +0 -0
  35. package/dist/cli/shared.js.map +0 -0
  36. package/dist/cli/test.d.ts +0 -0
  37. package/dist/cli/test.d.ts.map +0 -0
  38. package/dist/cli/test.js +0 -0
  39. package/dist/cli/test.js.map +0 -0
  40. package/dist/cli/verify.d.ts +0 -0
  41. package/dist/cli/verify.d.ts.map +0 -0
  42. package/dist/cli/verify.js +0 -0
  43. package/dist/cli/verify.js.map +0 -0
  44. package/dist/modules/adapters/p5Renderer.d.ts +0 -0
  45. package/dist/modules/adapters/p5Renderer.d.ts.map +0 -0
  46. package/dist/modules/adapters/p5Renderer.js +0 -0
  47. package/dist/modules/adapters/p5Renderer.js.map +0 -0
  48. package/dist/modules/adapters/skiaRenderer.d.ts +0 -0
  49. package/dist/modules/adapters/skiaRenderer.d.ts.map +0 -0
  50. package/dist/modules/adapters/skiaRenderer.js +0 -0
  51. package/dist/modules/adapters/skiaRenderer.js.map +0 -0
  52. package/dist/modules/animationDiff.d.ts +0 -0
  53. package/dist/modules/animationDiff.d.ts.map +0 -0
  54. package/dist/modules/animationDiff.js +0 -0
  55. package/dist/modules/animationDiff.js.map +0 -0
  56. package/dist/modules/eyeSystem.d.ts +0 -0
  57. package/dist/modules/eyeSystem.d.ts.map +0 -0
  58. package/dist/modules/eyeSystem.js +0 -0
  59. package/dist/modules/eyeSystem.js.map +0 -0
  60. package/dist/modules/imageLoad.d.ts +0 -0
  61. package/dist/modules/imageLoad.d.ts.map +0 -0
  62. package/dist/modules/imageLoad.js +0 -0
  63. package/dist/modules/imageLoad.js.map +0 -0
  64. package/dist/modules/mouthSystem.d.ts +0 -0
  65. package/dist/modules/mouthSystem.d.ts.map +0 -0
  66. package/dist/modules/mouthSystem.js +0 -0
  67. package/dist/modules/mouthSystem.js.map +0 -0
  68. package/dist/modules/renderRig.d.ts +0 -0
  69. package/dist/modules/renderRig.d.ts.map +0 -0
  70. package/dist/modules/renderRig.js +0 -0
  71. package/dist/modules/renderRig.js.map +0 -0
  72. package/dist/modules/sceneRenderer.d.ts +160 -0
  73. package/dist/modules/sceneRenderer.d.ts.map +1 -0
  74. package/dist/modules/sceneRenderer.js +616 -0
  75. package/dist/modules/sceneRenderer.js.map +1 -0
  76. package/dist/tests/helpers.d.ts +0 -0
  77. package/dist/tests/helpers.d.ts.map +0 -0
  78. package/dist/tests/helpers.js +0 -0
  79. package/dist/tests/helpers.js.map +0 -0
  80. package/dist/tests/test-animation-diff-rendering.d.ts +0 -0
  81. package/dist/tests/test-animation-diff-rendering.d.ts.map +0 -0
  82. package/dist/tests/test-animation-diff-rendering.js +0 -0
  83. package/dist/tests/test-animation-diff-rendering.js.map +0 -0
  84. package/dist/tests/test-animation-diff.d.ts +0 -0
  85. package/dist/tests/test-animation-diff.d.ts.map +0 -0
  86. package/dist/tests/test-animation-diff.js +0 -0
  87. package/dist/tests/test-animation-diff.js.map +0 -0
  88. package/dist/tests/test-autofit.d.ts +0 -0
  89. package/dist/tests/test-autofit.d.ts.map +0 -0
  90. package/dist/tests/test-autofit.js +0 -0
  91. package/dist/tests/test-autofit.js.map +0 -0
  92. package/dist/tests/test-base-autofit.d.ts +0 -0
  93. package/dist/tests/test-base-autofit.d.ts.map +0 -0
  94. package/dist/tests/test-base-autofit.js +0 -0
  95. package/dist/tests/test-base-autofit.js.map +0 -0
  96. package/dist/tests/test-cli.d.ts +0 -0
  97. package/dist/tests/test-cli.d.ts.map +0 -0
  98. package/dist/tests/test-cli.js +0 -0
  99. package/dist/tests/test-cli.js.map +0 -0
  100. package/dist/tests/test-image-loading.d.ts +0 -0
  101. package/dist/tests/test-image-loading.d.ts.map +0 -0
  102. package/dist/tests/test-image-loading.js +0 -0
  103. package/dist/tests/test-image-loading.js.map +0 -0
  104. package/dist/tests/test-joint-movement.d.ts +0 -0
  105. package/dist/tests/test-joint-movement.d.ts.map +0 -0
  106. package/dist/tests/test-joint-movement.js +0 -0
  107. package/dist/tests/test-joint-movement.js.map +0 -0
  108. package/dist/tests/test-p5-image-types.d.ts +0 -0
  109. package/dist/tests/test-p5-image-types.d.ts.map +0 -0
  110. package/dist/tests/test-p5-image-types.js +0 -0
  111. package/dist/tests/test-p5-image-types.js.map +0 -0
  112. package/dist/tests/test-scene.d.ts +13 -0
  113. package/dist/tests/test-scene.d.ts.map +1 -0
  114. package/dist/tests/test-scene.js +528 -0
  115. package/dist/tests/test-scene.js.map +1 -0
  116. package/dist/tests/test-skia.d.ts +0 -0
  117. package/dist/tests/test-skia.d.ts.map +0 -0
  118. package/dist/tests/test-skia.js +0 -0
  119. package/dist/tests/test-skia.js.map +0 -0
  120. package/dist/tests/test-torso-pivot.d.ts +0 -0
  121. package/dist/tests/test-torso-pivot.d.ts.map +0 -0
  122. package/dist/tests/test-torso-pivot.js +0 -0
  123. package/dist/tests/test-torso-pivot.js.map +0 -0
  124. package/dist/tests/test-visual-verification.d.ts +0 -0
  125. package/dist/tests/test-visual-verification.d.ts.map +0 -0
  126. package/dist/tests/test-visual-verification.js +0 -0
  127. package/dist/tests/test-visual-verification.js.map +0 -0
  128. package/dist/types.d.ts +0 -0
  129. package/dist/types.d.ts.map +0 -0
  130. package/dist/types.js +0 -0
  131. package/dist/types.js.map +0 -0
  132. package/package.json +5 -1
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Scene Renderer — Composites multiple characters onto a background.
3
+ *
4
+ * Matches CAM's rendering behavior:
5
+ * - 2560×1440 base canvas (characters drawn at world coordinates)
6
+ * - Character root = xCoor/yCoor (feet/bottom-center, same as CAM's Body.js cameraOffset trick)
7
+ * - Animation interpolation via lerpAngle (shortest-path rotation), not frame snapping
8
+ * - Camera viewport maps a region of the 2560×1440 world to the output resolution
9
+ * - Background drawn at 0,0,2560,1440
10
+ *
11
+ * Performance: SceneEngine loads images once, caches rendered stamps per unique state.
12
+ */
13
+ import type { RigData } from '../types.js';
14
+ export interface WorldCharacter {
15
+ id: string;
16
+ name?: string;
17
+ xCoor?: number;
18
+ yCoor?: number;
19
+ width?: number;
20
+ height?: number;
21
+ [key: string]: any;
22
+ }
23
+ export interface WorldKeyframe {
24
+ time: number;
25
+ value: any;
26
+ easing?: string;
27
+ }
28
+ export interface WorldLane {
29
+ property: string;
30
+ keyframes: WorldKeyframe[];
31
+ }
32
+ export interface WorldCharacterTrack {
33
+ characterId: string;
34
+ lanes: WorldLane[];
35
+ }
36
+ export interface WorldAnimation {
37
+ id: string;
38
+ name: string;
39
+ frames: any[];
40
+ }
41
+ export interface WorldJSON {
42
+ scene?: {
43
+ background?: string | null;
44
+ };
45
+ characters?: WorldCharacter[];
46
+ objects?: any[];
47
+ dialogs?: any[];
48
+ timeline?: WorldCharacterTrack[];
49
+ variations?: any[];
50
+ animations?: Record<string, WorldAnimation>;
51
+ filename?: string;
52
+ }
53
+ export interface CharacterState {
54
+ id: string;
55
+ x: number;
56
+ y: number;
57
+ width: number;
58
+ height: number;
59
+ hidden: boolean;
60
+ flipX: boolean;
61
+ animationId: string | null;
62
+ animationProgress: number;
63
+ variationName: string | null;
64
+ }
65
+ export interface CameraState {
66
+ x: number;
67
+ y: number;
68
+ width: number;
69
+ height: number;
70
+ }
71
+ export interface SceneState {
72
+ time: number;
73
+ camera: CameraState;
74
+ characters: CharacterState[];
75
+ }
76
+ export interface SceneRenderReport {
77
+ time: number;
78
+ output: string;
79
+ canvas: {
80
+ width: number;
81
+ height: number;
82
+ };
83
+ camera: CameraState;
84
+ characters: Array<{
85
+ id: string;
86
+ position: {
87
+ x: number;
88
+ y: number;
89
+ };
90
+ size: {
91
+ width: number;
92
+ height: number;
93
+ };
94
+ hidden: boolean;
95
+ flipX: boolean;
96
+ animationId: string | null;
97
+ variationName: string | null;
98
+ screenBounds: {
99
+ x: number;
100
+ y: number;
101
+ w: number;
102
+ h: number;
103
+ };
104
+ }>;
105
+ quality: {
106
+ total_characters: number;
107
+ visible_characters: number;
108
+ has_camera_move: boolean;
109
+ has_animation: boolean;
110
+ has_variation: boolean;
111
+ has_background: boolean;
112
+ shot_count: number;
113
+ };
114
+ }
115
+ export declare function evaluateScene(world: WorldJSON, time: number): SceneState;
116
+ export declare class SceneEngine {
117
+ private world;
118
+ private rigDataMap;
119
+ private createCanvas;
120
+ private loadImage;
121
+ private renderers;
122
+ private bgCache;
123
+ private resolvedAnims;
124
+ private ready;
125
+ private objectImageCache;
126
+ constructor(world: WorldJSON, rigDataMap: Record<string, RigData>);
127
+ /** Draw a world-level object (prop) onto the canvas */
128
+ private drawWorldObject;
129
+ init(): Promise<void>;
130
+ /**
131
+ * Get the interpolated rig data for a character at a given animation progress.
132
+ * Applies: variation (expression swap) → animation interpolation → flip
133
+ */
134
+ private getInterpolatedRig;
135
+ /**
136
+ * Render one frame.
137
+ *
138
+ * Matches CAM's approach:
139
+ * 1. Create a 2560×1440 "world canvas"
140
+ * 2. Draw background at 0,0,2560,1440
141
+ * 3. For each visible character: compute rig at (xCoor, yCoor) using cameraOffset
142
+ * 4. Apply camera viewport: copy the camera region from world canvas to output canvas
143
+ */
144
+ renderFrame(time: number, outputPath: string, outWidth: number, outHeight: number): Promise<SceneRenderReport>;
145
+ /**
146
+ * Render one frame and return the raw canvas (no PNG encode, no file write).
147
+ * Used by video pipeline to pipe raw pixels to ffmpeg.
148
+ */
149
+ renderFrameToCanvas(time: number, outWidth: number, outHeight: number): Promise<any>;
150
+ }
151
+ export declare function renderScene(world: WorldJSON, time: number, outputPath: string, rigDataMap: Record<string, RigData>, options?: {
152
+ width?: number;
153
+ height?: number;
154
+ }): Promise<SceneRenderReport>;
155
+ export declare function renderSceneKeyFrames(world: WorldJSON, outputDir: string, rigDataMap: Record<string, RigData>, options?: {
156
+ width?: number;
157
+ height?: number;
158
+ frameCount?: number;
159
+ }): Promise<SceneRenderReport[]>;
160
+ //# sourceMappingURL=sceneRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneRenderer.d.ts","sourceRoot":"","sources":["../../modules/sceneRenderer.ts"],"names":[],"mappings":"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"}