cuju-render 0.1.0__py3-none-any.whl

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 (382) hide show
  1. cuju/render/__init__.py +759 -0
  2. cuju/render/__main__.py +1065 -0
  3. cuju/render/_export/__init__.py +3 -0
  4. cuju/render/_export/feed.py +542 -0
  5. cuju/render/_export/sizes.py +157 -0
  6. cuju/render/_export/video.py +1618 -0
  7. cuju/render/_export/video_jobs.py +408 -0
  8. cuju/render/_format/__init__.py +3 -0
  9. cuju/render/_format/annotations.py +235 -0
  10. cuju/render/_format/codec.py +307 -0
  11. cuju/render/_format/keep.py +121 -0
  12. cuju/render/_format/recording.py +860 -0
  13. cuju/render/_format/writer.py +54 -0
  14. cuju/render/_guide/__init__.py +3 -0
  15. cuju/render/_guide/doctor.py +523 -0
  16. cuju/render/_guide/help.py +62 -0
  17. cuju/render/_guide/tutorial.py +254 -0
  18. cuju/render/_http/__init__.py +3 -0
  19. cuju/render/_http/commands.py +57 -0
  20. cuju/render/_http/headers.py +103 -0
  21. cuju/render/_http/launch.py +500 -0
  22. cuju/render/_http/launchers.py +408 -0
  23. cuju/render/_http/pwa.py +128 -0
  24. cuju/render/_http/server.py +2105 -0
  25. cuju/render/_http/window.py +360 -0
  26. cuju/render/_moments/__init__.py +3 -0
  27. cuju/render/_moments/captions.py +284 -0
  28. cuju/render/_moments/events.py +1123 -0
  29. cuju/render/_moments/search.py +694 -0
  30. cuju/render/_packages/__init__.py +3 -0
  31. cuju/render/_packages/glsl.py +746 -0
  32. cuju/render/_packages/loudness.py +334 -0
  33. cuju/render/_packages/pack.py +1959 -0
  34. cuju/render/_packages/presentation.py +1376 -0
  35. cuju/render/_packages/vocabulary.py +609 -0
  36. cuju/render/_playing/__init__.py +3 -0
  37. cuju/render/_playing/achievements.py +463 -0
  38. cuju/render/_playing/bench.py +609 -0
  39. cuju/render/_playing/challenges.py +1813 -0
  40. cuju/render/_playing/demo.py +323 -0
  41. cuju/render/_playing/draw.py +211 -0
  42. cuju/render/_playing/errors.py +20 -0
  43. cuju/render/_playing/game.py +645 -0
  44. cuju/render/_playing/limits.py +339 -0
  45. cuju/render/_playing/play.py +926 -0
  46. cuju/render/_playing/policy_worker.py +250 -0
  47. cuju/render/_playing/strict.py +810 -0
  48. cuju/render/_registry/__init__.py +3 -0
  49. cuju/render/_registry/clips.py +394 -0
  50. cuju/render/_registry/joints.py +108 -0
  51. cuju/render/_registry/teams.py +2058 -0
  52. cuju/render/_store/__init__.py +3 -0
  53. cuju/render/_store/home.py +70 -0
  54. cuju/render/_store/library.py +604 -0
  55. cuju/render/_store/samples.py +163 -0
  56. cuju/render/_text/__init__.py +3 -0
  57. cuju/render/_text/languages.py +637 -0
  58. cuju/render/_text/messages.py +1396 -0
  59. cuju/render/_tournaments/__init__.py +3 -0
  60. cuju/render/_tournaments/results.py +547 -0
  61. cuju/render/_tournaments/tournament.py +2742 -0
  62. cuju/render/_tournaments/tournament_cli.py +587 -0
  63. cuju/render/_tournaments/tournament_runner.py +1975 -0
  64. cuju/render/_version.py +6 -0
  65. cuju/render/_watch/__init__.py +3 -0
  66. cuju/render/_watch/grid.py +265 -0
  67. cuju/render/_watch/live.py +664 -0
  68. cuju/render/_watch/notebook.py +79 -0
  69. cuju/render/_watch/show.py +171 -0
  70. cuju/render/samples/sample-11v11.cjr +0 -0
  71. cuju/render/samples/sample-5v5.cjr +0 -0
  72. cuju/render/samples/teams/starter/main.py +33 -0
  73. cuju/render/scenarios/benchmark_full_game_11_vs_11_easy.py +46 -0
  74. cuju/render/scenarios/benchmark_full_game_11_vs_11_hard.py +46 -0
  75. cuju/render/scenarios/benchmark_full_game_11_vs_11_medium.py +46 -0
  76. cuju/render/scenarios/benchmark_full_game_5_vs_5_easy.py +34 -0
  77. cuju/render/scenarios/benchmark_full_game_5_vs_5_hard.py +34 -0
  78. cuju/render/scenarios/benchmark_full_game_5_vs_5_medium.py +34 -0
  79. cuju/render/web/assets/adboard_polygon.webp +0 -0
  80. cuju/render/web/assets/adboard_your_ad_here.webp +0 -0
  81. cuju/render/web/assets/animations/kaykit-rig-medium-combatmelee.glb +0 -0
  82. cuju/render/web/assets/animations/kaykit-rig-medium-general.glb +0 -0
  83. cuju/render/web/assets/animations/kaykit-rig-medium-movementadvanced.glb +0 -0
  84. cuju/render/web/assets/animations/kaykit-rig-medium-movementbasic.glb +0 -0
  85. cuju/render/web/assets/animations/kaykit-rig-medium-simulation.glb +0 -0
  86. cuju/render/web/assets/animations/kaykit-rig-medium-special.glb +0 -0
  87. cuju/render/web/assets/ball.glb +0 -0
  88. cuju/render/web/assets/challenges/3_vs_1_with_keeper.mp4 +0 -0
  89. cuju/render/web/assets/challenges/3_vs_1_with_keeper.webp +0 -0
  90. cuju/render/web/assets/challenges/corner.mp4 +0 -0
  91. cuju/render/web/assets/challenges/corner.webp +0 -0
  92. cuju/render/web/assets/challenges/counterattack_easy.mp4 +0 -0
  93. cuju/render/web/assets/challenges/counterattack_easy.webp +0 -0
  94. cuju/render/web/assets/challenges/counterattack_hard.mp4 +0 -0
  95. cuju/render/web/assets/challenges/counterattack_hard.webp +0 -0
  96. cuju/render/web/assets/challenges/empty_goal.mp4 +0 -0
  97. cuju/render/web/assets/challenges/empty_goal.webp +0 -0
  98. cuju/render/web/assets/challenges/empty_goal_close.mp4 +0 -0
  99. cuju/render/web/assets/challenges/empty_goal_close.webp +0 -0
  100. cuju/render/web/assets/challenges/manifest.json +375 -0
  101. cuju/render/web/assets/challenges/one_on_one.mp4 +0 -0
  102. cuju/render/web/assets/challenges/one_on_one.webp +0 -0
  103. cuju/render/web/assets/challenges/one_on_one_hard.mp4 +0 -0
  104. cuju/render/web/assets/challenges/one_on_one_hard.webp +0 -0
  105. cuju/render/web/assets/challenges/pass_and_shoot_with_keeper.mp4 +0 -0
  106. cuju/render/web/assets/challenges/pass_and_shoot_with_keeper.webp +0 -0
  107. cuju/render/web/assets/challenges/run_pass_and_shoot_with_keeper.mp4 +0 -0
  108. cuju/render/web/assets/challenges/run_pass_and_shoot_with_keeper.webp +0 -0
  109. cuju/render/web/assets/challenges/run_to_score.mp4 +0 -0
  110. cuju/render/web/assets/challenges/run_to_score.webp +0 -0
  111. cuju/render/web/assets/challenges/run_to_score_with_keeper.mp4 +0 -0
  112. cuju/render/web/assets/challenges/run_to_score_with_keeper.webp +0 -0
  113. cuju/render/web/assets/challenges/single_goal_versus_lazy.mp4 +0 -0
  114. cuju/render/web/assets/challenges/single_goal_versus_lazy.webp +0 -0
  115. cuju/render/web/assets/crowd.webp +0 -0
  116. cuju/render/web/assets/crowd_normal.webp +0 -0
  117. cuju/render/web/assets/cuju-logo-384.png +0 -0
  118. cuju/render/web/assets/cuju-logo.png +0 -0
  119. cuju/render/web/assets/cuju-logo.svg +46 -0
  120. cuju/render/web/assets/cuju-mark-light.svg +33 -0
  121. cuju/render/web/assets/cuju-mark.svg +33 -0
  122. cuju/render/web/assets/goal.glb +0 -0
  123. cuju/render/web/assets/grass.webp +0 -0
  124. cuju/render/web/assets/hair_black.png +0 -0
  125. cuju/render/web/assets/hair_blonde.png +0 -0
  126. cuju/render/web/assets/hair_brown.png +0 -0
  127. cuju/render/web/assets/hair_darkblonde.png +0 -0
  128. cuju/render/web/assets/hair_long01.glb +0 -0
  129. cuju/render/web/assets/hair_long02.glb +0 -0
  130. cuju/render/web/assets/hair_medium01.glb +0 -0
  131. cuju/render/web/assets/hair_red.png +0 -0
  132. cuju/render/web/assets/hair_short01.glb +0 -0
  133. cuju/render/web/assets/hair_short02.glb +0 -0
  134. cuju/render/web/assets/icons/cuju-192.png +0 -0
  135. cuju/render/web/assets/icons/cuju-512.png +0 -0
  136. cuju/render/web/assets/icons/cuju-maskable-512.png +0 -0
  137. cuju/render/web/assets/kit_goalkeeper.webp +0 -0
  138. cuju/render/web/assets/kit_mask.png +0 -0
  139. cuju/render/web/assets/kit_normal.webp +0 -0
  140. cuju/render/web/assets/manifest.json +601 -0
  141. cuju/render/web/assets/models/kaykit-barbarian.glb +0 -0
  142. cuju/render/web/assets/models/kaykit-barbarian.json +23 -0
  143. cuju/render/web/assets/models/kaykit-knight.glb +0 -0
  144. cuju/render/web/assets/models/kaykit-knight.json +23 -0
  145. cuju/render/web/assets/models/kaykit-mage.glb +0 -0
  146. cuju/render/web/assets/models/kaykit-mage.json +23 -0
  147. cuju/render/web/assets/models/kaykit-mannequin-medium.glb +0 -0
  148. cuju/render/web/assets/models/kaykit-mannequin-medium.json +23 -0
  149. cuju/render/web/assets/models/kaykit-ranger.glb +0 -0
  150. cuju/render/web/assets/models/kaykit-ranger.json +23 -0
  151. cuju/render/web/assets/models/kaykit-rogue-hooded.glb +0 -0
  152. cuju/render/web/assets/models/kaykit-rogue-hooded.json +23 -0
  153. cuju/render/web/assets/models/kaykit-rogue.glb +0 -0
  154. cuju/render/web/assets/models/kaykit-rogue.json +23 -0
  155. cuju/render/web/assets/models/kaykit-skeleton-mage.glb +0 -0
  156. cuju/render/web/assets/models/kaykit-skeleton-mage.json +23 -0
  157. cuju/render/web/assets/models/kaykit-skeleton-minion.glb +0 -0
  158. cuju/render/web/assets/models/kaykit-skeleton-minion.json +23 -0
  159. cuju/render/web/assets/models/kaykit-skeleton-rogue.glb +0 -0
  160. cuju/render/web/assets/models/kaykit-skeleton-rogue.json +23 -0
  161. cuju/render/web/assets/models/kaykit-skeleton-warrior.glb +0 -0
  162. cuju/render/web/assets/models/kaykit-skeleton-warrior.json +23 -0
  163. cuju/render/web/assets/pitch.webp +0 -0
  164. cuju/render/web/assets/pitch_normal.webp +0 -0
  165. cuju/render/web/assets/player.glb +0 -0
  166. cuju/render/web/assets/shoe.webp +0 -0
  167. cuju/render/web/assets/shoe_sole.png +0 -0
  168. cuju/render/web/assets/skin_01.png +0 -0
  169. cuju/render/web/assets/skin_02.png +0 -0
  170. cuju/render/web/assets/skin_03.png +0 -0
  171. cuju/render/web/assets/skin_04.png +0 -0
  172. cuju/render/web/assets/sounds/applause.ogg +0 -0
  173. cuju/render/web/assets/sounds/beach-wave-1.ogg +0 -0
  174. cuju/render/web/assets/sounds/beach-wave-2.ogg +0 -0
  175. cuju/render/web/assets/sounds/beach-wave-3.ogg +0 -0
  176. cuju/render/web/assets/sounds/beach-wave-4.ogg +0 -0
  177. cuju/render/web/assets/sounds/city-horn.ogg +0 -0
  178. cuju/render/web/assets/sounds/city-loop.ogg +0 -0
  179. cuju/render/web/assets/sounds/city-siren.ogg +0 -0
  180. cuju/render/web/assets/sounds/crowd-cheer.ogg +0 -0
  181. cuju/render/web/assets/sounds/crowd-loop.ogg +0 -0
  182. cuju/render/web/assets/sounds/crowd-ooh.ogg +0 -0
  183. cuju/render/web/assets/sounds/gulls.ogg +0 -0
  184. cuju/render/web/assets/sounds/neon-sting.ogg +0 -0
  185. cuju/render/web/assets/sounds/rain-loop.ogg +0 -0
  186. cuju/render/web/assets/sounds/sounds.json +46 -0
  187. cuju/render/web/assets/sounds/space-beep.ogg +0 -0
  188. cuju/render/web/assets/sounds/space-hum.ogg +0 -0
  189. cuju/render/web/assets/sounds/space-radio.ogg +0 -0
  190. cuju/render/web/assets/sounds/whistle-long.ogg +0 -0
  191. cuju/render/web/assets/sounds/whistle-short.ogg +0 -0
  192. cuju/render/web/assets/sounds/wind-loop.ogg +0 -0
  193. cuju/render/web/easy.css +357 -0
  194. cuju/render/web/export.html +23 -0
  195. cuju/render/web/feed.css +262 -0
  196. cuju/render/web/feed.html +28 -0
  197. cuju/render/web/flat.css +120 -0
  198. cuju/render/web/home.css +837 -0
  199. cuju/render/web/index.html +373 -0
  200. cuju/render/web/js/boot.js +50 -0
  201. cuju/render/web/js/broadcast/audio.js +2141 -0
  202. cuju/render/web/js/broadcast/celebrate.js +1238 -0
  203. cuju/render/web/js/broadcast/decisions.js +609 -0
  204. cuju/render/web/js/broadcast/hud.js +352 -0
  205. cuju/render/web/js/broadcast/show.js +3614 -0
  206. cuju/render/web/js/broadcast/transition.js +2231 -0
  207. cuju/render/web/js/broadcast/voices.js +153 -0
  208. cuju/render/web/js/capture.js +101 -0
  209. cuju/render/web/js/core/accessibility.js +90 -0
  210. cuju/render/web/js/core/api.js +429 -0
  211. cuju/render/web/js/core/comfort.js +135 -0
  212. cuju/render/web/js/core/i18n.js +705 -0
  213. cuju/render/web/js/core/icons.js +167 -0
  214. cuju/render/web/js/core/input-settings.js +156 -0
  215. cuju/render/web/js/core/keys.js +277 -0
  216. cuju/render/web/js/core/language-ui.js +125 -0
  217. cuju/render/web/js/core/menu.js +853 -0
  218. cuju/render/web/js/core/names.js +113 -0
  219. cuju/render/web/js/core/page-structure.js +110 -0
  220. cuju/render/web/js/core/scenarios.js +109 -0
  221. cuju/render/web/js/core/spoilers.js +236 -0
  222. cuju/render/web/js/core/typeahead.js +38 -0
  223. cuju/render/web/js/export/dom-picture.js +330 -0
  224. cuju/render/web/js/export/export-host.js +97 -0
  225. cuju/render/web/js/export/feed-dialog.js +191 -0
  226. cuju/render/web/js/export/feed-params.js +266 -0
  227. cuju/render/web/js/export/feed.js +363 -0
  228. cuju/render/web/js/export/mp4-mux.js +295 -0
  229. cuju/render/web/js/export/photo-core.js +313 -0
  230. cuju/render/web/js/export/photo.js +1314 -0
  231. cuju/render/web/js/export/safe-frame.js +59 -0
  232. cuju/render/web/js/export/size-fields.js +103 -0
  233. cuju/render/web/js/export/sizes.js +178 -0
  234. cuju/render/web/js/export/video-boot.js +55 -0
  235. cuju/render/web/js/export/video-browser.js +325 -0
  236. cuju/render/web/js/export/video-export.js +417 -0
  237. cuju/render/web/js/export/video-plan.js +207 -0
  238. cuju/render/web/js/export/video-range.js +185 -0
  239. cuju/render/web/js/export/webm-mux.js +198 -0
  240. cuju/render/web/js/feed-boot.js +151 -0
  241. cuju/render/web/js/feed-frame.js +101 -0
  242. cuju/render/web/js/help/doctor.js +488 -0
  243. cuju/render/web/js/help/firstrun.js +379 -0
  244. cuju/render/web/js/help/help-center.js +438 -0
  245. cuju/render/web/js/help/install-offer.js +164 -0
  246. cuju/render/web/js/help/install-state.js +104 -0
  247. cuju/render/web/js/help/lessons-core.js +207 -0
  248. cuju/render/web/js/help/lessons.js +463 -0
  249. cuju/render/web/js/help/palette.js +584 -0
  250. cuju/render/web/js/help/pwa.js +257 -0
  251. cuju/render/web/js/help/tour-core.js +241 -0
  252. cuju/render/web/js/help/tour.js +461 -0
  253. cuju/render/web/js/main.js +2513 -0
  254. cuju/render/web/js/pages/draw.js +188 -0
  255. cuju/render/web/js/pages/fieldpage.js +530 -0
  256. cuju/render/web/js/pages/home.js +521 -0
  257. cuju/render/web/js/pages/matches.js +779 -0
  258. cuju/render/web/js/pages/moments-ui.js +359 -0
  259. cuju/render/web/js/pages/queue-filters.js +63 -0
  260. cuju/render/web/js/pages/recording-groups.js +80 -0
  261. cuju/render/web/js/pages/recordings.js +1069 -0
  262. cuju/render/web/js/play/bench.js +347 -0
  263. cuju/render/web/js/play/challenges.js +1302 -0
  264. cuju/render/web/js/play/medals.js +127 -0
  265. cuju/render/web/js/play/play.js +1953 -0
  266. cuju/render/web/js/play/teasers.js +196 -0
  267. cuju/render/web/js/play/touch.js +350 -0
  268. cuju/render/web/js/play/tournament-layout.js +487 -0
  269. cuju/render/web/js/play/tournament-results.js +441 -0
  270. cuju/render/web/js/play/tournament-strict.js +560 -0
  271. cuju/render/web/js/play/tournament.js +2585 -0
  272. cuju/render/web/js/players/animate.js +972 -0
  273. cuju/render/web/js/players/clips.js +224 -0
  274. cuju/render/web/js/players/kaykit.js +162 -0
  275. cuju/render/web/js/players/kits.js +676 -0
  276. cuju/render/web/js/players/number-patch.js +82 -0
  277. cuju/render/web/js/players/players.js +2694 -0
  278. cuju/render/web/js/players/recolor.js +893 -0
  279. cuju/render/web/js/players/retarget.js +325 -0
  280. cuju/render/web/js/players/rig-numbers.js +174 -0
  281. cuju/render/web/js/presentation/animator.js +231 -0
  282. cuju/render/web/js/presentation/assign.js +85 -0
  283. cuju/render/web/js/presentation/behaviors.js +440 -0
  284. cuju/render/web/js/presentation/budget.js +209 -0
  285. cuju/render/web/js/presentation/catalog.js +1674 -0
  286. cuju/render/web/js/presentation/clocks.js +72 -0
  287. cuju/render/web/js/presentation/commands.js +301 -0
  288. cuju/render/web/js/presentation/contract.js +240 -0
  289. cuju/render/web/js/presentation/effects.js +904 -0
  290. cuju/render/web/js/presentation/flash.js +605 -0
  291. cuju/render/web/js/presentation/freeze-worklet.js +22 -0
  292. cuju/render/web/js/presentation/glsl.js +464 -0
  293. cuju/render/web/js/presentation/host.js +323 -0
  294. cuju/render/web/js/presentation/index.js +2066 -0
  295. cuju/render/web/js/presentation/loudness-worklet.js +235 -0
  296. cuju/render/web/js/presentation/loudness.js +740 -0
  297. cuju/render/web/js/presentation/moments.js +536 -0
  298. cuju/render/web/js/presentation/post.js +327 -0
  299. cuju/render/web/js/presentation/preview.js +180 -0
  300. cuju/render/web/js/presentation/protocol.js +174 -0
  301. cuju/render/web/js/presentation/reach.js +158 -0
  302. cuju/render/web/js/presentation/rigging.js +130 -0
  303. cuju/render/web/js/presentation/sandbox.js +157 -0
  304. cuju/render/web/js/presentation/shaders.js +235 -0
  305. cuju/render/web/js/presentation/stage.js +402 -0
  306. cuju/render/web/js/presentation/teamaudio.js +722 -0
  307. cuju/render/web/js/presentation/tracks.js +197 -0
  308. cuju/render/web/js/presentation/values.js +81 -0
  309. cuju/render/web/js/recording/annotation-data.js +203 -0
  310. cuju/render/web/js/recording/captions.js +491 -0
  311. cuju/render/web/js/recording/codec.js +185 -0
  312. cuju/render/web/js/recording/decode-worker.js +70 -0
  313. cuju/render/web/js/recording/decode.js +94 -0
  314. cuju/render/web/js/recording/episodes.js +46 -0
  315. cuju/render/web/js/recording/format.js +461 -0
  316. cuju/render/web/js/recording/live.js +348 -0
  317. cuju/render/web/js/recording/moments-query.js +59 -0
  318. cuju/render/web/js/recording/moments.js +149 -0
  319. cuju/render/web/js/recording/pose.js +86 -0
  320. cuju/render/web/js/recording/timeline.js +275 -0
  321. cuju/render/web/js/teams/art.js +50 -0
  322. cuju/render/web/js/teams/clip-editor.js +293 -0
  323. cuju/render/web/js/teams/editor.js +1979 -0
  324. cuju/render/web/js/teams/library.js +344 -0
  325. cuju/render/web/js/teams/painter.js +633 -0
  326. cuju/render/web/js/teams/surprise-ui.js +195 -0
  327. cuju/render/web/js/teams/surprise.js +497 -0
  328. cuju/render/web/js/teams/team-check.js +127 -0
  329. cuju/render/web/js/watch/annotations.js +270 -0
  330. cuju/render/web/js/watch/flat.js +366 -0
  331. cuju/render/web/js/watch/grid.js +436 -0
  332. cuju/render/web/js/watch/pitch2d.js +289 -0
  333. cuju/render/web/js/watch/player-tools.js +192 -0
  334. cuju/render/web/js/watch/presets.js +201 -0
  335. cuju/render/web/js/world/arenas.js +997 -0
  336. cuju/render/web/js/world/ball.js +204 -0
  337. cuju/render/web/js/world/cameras.js +982 -0
  338. cuju/render/web/js/world/crowd.js +376 -0
  339. cuju/render/web/js/world/field.js +227 -0
  340. cuju/render/web/js/world/framing.js +145 -0
  341. cuju/render/web/js/world/occlusion.js +48 -0
  342. cuju/render/web/js/world/pitch.js +703 -0
  343. cuju/render/web/js/world/scene.js +395 -0
  344. cuju/render/web/js/world/sky.js +325 -0
  345. cuju/render/web/js/world/stadium.js +1262 -0
  346. cuju/render/web/js/world/vendor-sky.js +367 -0
  347. cuju/render/web/js/world/weather.js +264 -0
  348. cuju/render/web/languages/en.json +4750 -0
  349. cuju/render/web/lessons.json +137 -0
  350. cuju/render/web/manifest.webmanifest +23 -0
  351. cuju/render/web/style.css +8399 -0
  352. cuju/render/web/sw.js +235 -0
  353. cuju/render/web/vendor/fabric/LICENSE +16 -0
  354. cuju/render/web/vendor/fabric/fabric.min.mjs +1 -0
  355. cuju/render/web/vendor/lucide/LICENSE +43 -0
  356. cuju/render/web/vendor/lucide/icons.js +141 -0
  357. cuju/render/web/vendor/three/LICENSE +21 -0
  358. cuju/render/web/vendor/three/build/three.core.js +60586 -0
  359. cuju/render/web/vendor/three/build/three.module.js +19719 -0
  360. cuju/render/web/vendor/three/examples/jsm/loaders/GLTFLoader.js +4925 -0
  361. cuju/render/web/vendor/three/examples/jsm/postprocessing/EffectComposer.js +365 -0
  362. cuju/render/web/vendor/three/examples/jsm/postprocessing/MaskPass.js +195 -0
  363. cuju/render/web/vendor/three/examples/jsm/postprocessing/OutputPass.js +148 -0
  364. cuju/render/web/vendor/three/examples/jsm/postprocessing/Pass.js +191 -0
  365. cuju/render/web/vendor/three/examples/jsm/postprocessing/RenderPass.js +193 -0
  366. cuju/render/web/vendor/three/examples/jsm/postprocessing/ShaderPass.js +135 -0
  367. cuju/render/web/vendor/three/examples/jsm/postprocessing/UnrealBloomPass.js +541 -0
  368. cuju/render/web/vendor/three/examples/jsm/shaders/CopyShader.js +52 -0
  369. cuju/render/web/vendor/three/examples/jsm/shaders/LuminosityHighPassShader.js +68 -0
  370. cuju/render/web/vendor/three/examples/jsm/shaders/OutputShader.js +103 -0
  371. cuju/render/web/vendor/three/examples/jsm/utils/BufferGeometryUtils.js +1501 -0
  372. cuju/render/web/vendor/three/examples/jsm/utils/SkeletonUtils.js +496 -0
  373. cuju_render-0.1.0.dist-info/METADATA +116 -0
  374. cuju_render-0.1.0.dist-info/RECORD +382 -0
  375. cuju_render-0.1.0.dist-info/WHEEL +4 -0
  376. cuju_render-0.1.0.dist-info/licenses/LICENSE +202 -0
  377. cuju_render-0.1.0.dist-info/licenses/LICENSES/CC-BY-4.0.txt +396 -0
  378. cuju_render-0.1.0.dist-info/licenses/LICENSES/CC0-1.0.txt +127 -0
  379. cuju_render-0.1.0.dist-info/licenses/LICENSES/ISC.txt +16 -0
  380. cuju_render-0.1.0.dist-info/licenses/LICENSES/MIT.txt +24 -0
  381. cuju_render-0.1.0.dist-info/licenses/LICENSES/Unlicense.txt +13 -0
  382. cuju_render-0.1.0.dist-info/licenses/NOTICE +35 -0
@@ -0,0 +1,601 @@
1
+ {
2
+ "version": 1,
3
+ "generator": "ci/make_assets.py",
4
+ "source": {
5
+ "project": "Google Research Football",
6
+ "path": "third_party/gfootball_engine/data/media",
7
+ "license": "Unlicense, public domain, third_party/gfootball_engine/LICENSE"
8
+ },
9
+ "frame": {
10
+ "axes": "engine frame, x along the pitch, y across it, z up, right handed",
11
+ "units": "meters",
12
+ "gltf": "every glb stays in the engine frame and is not turned to y up, so the viewer maps engine (x, y, z) to three (x, z, -y) once at the scene root, a turn of -90 degrees about x",
13
+ "quaternions": "x, y, z, w",
14
+ "texture_coordinates": "glTF, origin at the top left texel"
15
+ },
16
+ "skeleton": {
17
+ "nodes": ["player", "body", "middle", "neck", "left_shoulder", "left_elbow", "right_shoulder", "right_elbow", "left_thigh", "left_knee", "left_ankle", "right_thigh", "right_knee", "right_ankle"],
18
+ "parents": [-1, 0, 1, 2, 2, 4, 2, 6, 1, 8, 9, 1, 11, 12],
19
+ "rest_translation_local": [
20
+ [0.0, 0.0, 0.0],
21
+ [0.0, 0.0, 0.96],
22
+ [0.0, 0.0, 0.15],
23
+ [0.0, -0.03, 0.5],
24
+ [0.16, -0.01, 0.48],
25
+ [-0.01, -0.0, -0.33],
26
+ [-0.16, -0.01, 0.48],
27
+ [0.01, -0.0, -0.33],
28
+ [0.087, 0.0, -0.01],
29
+ [0.0, 0.0, -0.42],
30
+ [0.0, -0.04, -0.44],
31
+ [-0.087, 0.0, -0.01],
32
+ [0.0, 0.0, -0.42],
33
+ [0.0, -0.04, -0.44]
34
+ ],
35
+ "rest_translation_world": [
36
+ [0.0, 0.0, 0.0],
37
+ [0.0, 0.0, 0.96],
38
+ [0.0, 0.0, 1.11],
39
+ [0.0, -0.03, 1.61],
40
+ [0.16, -0.01, 1.59],
41
+ [0.15, -0.01, 1.26],
42
+ [-0.16, -0.01, 1.59],
43
+ [-0.15, -0.01, 1.26],
44
+ [0.087, 0.0, 0.95],
45
+ [0.087, 0.0, 0.53],
46
+ [0.087, -0.04, 0.09],
47
+ [-0.087, 0.0, 0.95],
48
+ [-0.087, 0.0, 0.53],
49
+ [-0.087, -0.04, 0.09]
50
+ ],
51
+ "rest_rotation": "identity for every node, local and world",
52
+ "player_object_rotations": [
53
+ [0.0, 0.0, 0.0, 1.0],
54
+ [0.0, 0.0, 0.0, 1.0],
55
+ [0.0, 0.0, 0.0, 1.0],
56
+ [0.0, 0.0, 0.0, 1.0],
57
+ [0.0, -0.087156, 0.0, 0.996195],
58
+ [-0.0, 0.052336, -0.0, 0.99863],
59
+ [0.0, 0.087156, 0.0, 0.996195],
60
+ [-0.0, -0.052336, -0.0, 0.99863],
61
+ [0.0, -0.017452, 0.0, 0.999848],
62
+ [-0.0, 0.017452, -0.0, 0.999848],
63
+ [0.0, 0.0, 0.0, 1.0],
64
+ [0.0, 0.017452, 0.0, 0.999848],
65
+ [-0.0, -0.017452, -0.0, 0.999848],
66
+ [0.0, 0.0, 0.0, 1.0]
67
+ ],
68
+ "note": "GRF's animations replace every local rotation of player.object, so the rotations written there never reach a pose. The bind pose of player.glb is straight.anim.util, player.object's positions with identity rotations, and joint world matrices from a recording, times the inverse bind matrices, give GRF's skinning exactly."
69
+ },
70
+ "player_scale": {
71
+ "reference_height_m": 1.92,
72
+ "rule": "GRF scales the skinned body by height / 1.92 about the player's ground point, the xy of node player, and moves the hair to the scaled neck without scaling the hair itself"
73
+ },
74
+ "appearance": {
75
+ "players": [
76
+ {
77
+ "index": 0,
78
+ "skin": "skin_01.png",
79
+ "hair": "hair_long02.glb",
80
+ "hair_color": "hair_blonde.png",
81
+ "height_m": 1.87
82
+ },
83
+ {
84
+ "index": 1,
85
+ "skin": "skin_02.png",
86
+ "hair": "hair_short02.glb",
87
+ "hair_color": "hair_black.png",
88
+ "height_m": 1.7
89
+ },
90
+ {
91
+ "index": 2,
92
+ "skin": "skin_04.png",
93
+ "hair": "hair_long02.glb",
94
+ "hair_color": "hair_black.png",
95
+ "height_m": 1.74
96
+ },
97
+ {
98
+ "index": 3,
99
+ "skin": "skin_01.png",
100
+ "hair": "hair_medium01.glb",
101
+ "hair_color": "hair_black.png",
102
+ "height_m": 1.93
103
+ },
104
+ {
105
+ "index": 4,
106
+ "skin": "skin_01.png",
107
+ "hair": "hair_short01.glb",
108
+ "hair_color": "hair_black.png",
109
+ "height_m": 1.72
110
+ },
111
+ {
112
+ "index": 5,
113
+ "skin": "skin_04.png",
114
+ "hair": "hair_long02.glb",
115
+ "hair_color": "hair_black.png",
116
+ "height_m": 1.71
117
+ },
118
+ {
119
+ "index": 6,
120
+ "skin": "skin_03.png",
121
+ "hair": "hair_long02.glb",
122
+ "hair_color": "hair_black.png",
123
+ "height_m": 1.89
124
+ },
125
+ {
126
+ "index": 7,
127
+ "skin": "skin_01.png",
128
+ "hair": "hair_long01.glb",
129
+ "hair_color": "hair_blonde.png",
130
+ "height_m": 1.84
131
+ },
132
+ {
133
+ "index": 8,
134
+ "skin": "skin_01.png",
135
+ "hair": "hair_medium01.glb",
136
+ "hair_color": "hair_black.png",
137
+ "height_m": 1.74
138
+ },
139
+ {
140
+ "index": 9,
141
+ "skin": "skin_02.png",
142
+ "hair": "hair_long02.glb",
143
+ "hair_color": "hair_black.png",
144
+ "height_m": 1.81
145
+ },
146
+ {
147
+ "index": 10,
148
+ "skin": "skin_03.png",
149
+ "hair": "hair_short02.glb",
150
+ "hair_color": "hair_black.png",
151
+ "height_m": 1.69
152
+ }
153
+ ],
154
+ "same_for_both_teams": true,
155
+ "goalkeepers": "kit_goalkeeper.webp",
156
+ "teams": [
157
+ {
158
+ "side": "left",
159
+ "name": "Frequentists United",
160
+ "radar_color": [255, 100, 100],
161
+ "radar_secondary": [100, 100, 255]
162
+ },
163
+ {
164
+ "side": "right",
165
+ "name": "Real Bayesians",
166
+ "radar_color": [255, 255, 255],
167
+ "radar_secondary": [50, 50, 126]
168
+ }
169
+ ]
170
+ },
171
+ "pitch": {
172
+ "goal_lines_x": [-55.0, 55.0],
173
+ "touch_lines_y": [-36.0, 36.0],
174
+ "full_extent_m": {
175
+ "x": [-60.0, 60.0],
176
+ "y": [-40.0, 40.0]
177
+ },
178
+ "specular": "GRF bakes 2 plus 18 times the Perlin noise, without the noise 11 of 255"
179
+ },
180
+ "files": [
181
+ {
182
+ "file": "player.glb",
183
+ "role": "player",
184
+ "source": [
185
+ "objects/players/models/fullbody.ase",
186
+ "objects/players/player.object",
187
+ "animations/base.anim.util",
188
+ "animations/straight.anim.util"
189
+ ],
190
+ "skinned": true,
191
+ "joints": ["player", "body", "middle", "neck", "left_shoulder", "left_elbow", "right_shoulder", "right_elbow", "left_thigh", "left_knee", "left_ankle", "right_thigh", "right_knee", "right_ankle"],
192
+ "vertices": 542,
193
+ "triangles": 747,
194
+ "materials": {
195
+ "kit": ["sock_right", "sock_left", "body"],
196
+ "skin": ["knee_right", "knee_left", "arm_left", "arm_right", "head"],
197
+ "shoe": ["shoe_right", "shoe_left"],
198
+ "sole": ["sole_right", "sole_left"]
199
+ },
200
+ "material_textures": {
201
+ "kit": "a texture painted from kit_mask.png, or kit_goalkeeper.webp",
202
+ "skin": "skin_0N.png for the player, N in 1 to 4",
203
+ "shoe": "shoe.webp",
204
+ "sole": "shoe_sole.png"
205
+ },
206
+ "normal_textures": {
207
+ "kit": "kit_normal.webp"
208
+ },
209
+ "bind_pose": "each joint at its straight position with identity world rotation",
210
+ "bytes": 37440
211
+ },
212
+ {
213
+ "file": "hair_long01.glb",
214
+ "role": "hair",
215
+ "source": [
216
+ "objects/players/hairstyles/long01.ase"
217
+ ],
218
+ "attach_joint": "neck",
219
+ "attach_index": 3,
220
+ "offset": {
221
+ "translation": [0, 0, 0],
222
+ "rotation": [0, 0, 0, 1]
223
+ },
224
+ "material_textures": {
225
+ "hair": "hair_<color>.png"
226
+ },
227
+ "bytes": 4660
228
+ },
229
+ {
230
+ "file": "hair_long02.glb",
231
+ "role": "hair",
232
+ "source": [
233
+ "objects/players/hairstyles/long02.ase"
234
+ ],
235
+ "attach_joint": "neck",
236
+ "attach_index": 3,
237
+ "offset": {
238
+ "translation": [0, 0, 0],
239
+ "rotation": [0, 0, 0, 1]
240
+ },
241
+ "material_textures": {
242
+ "hair": "hair_<color>.png"
243
+ },
244
+ "bytes": 4656
245
+ },
246
+ {
247
+ "file": "hair_medium01.glb",
248
+ "role": "hair",
249
+ "source": [
250
+ "objects/players/hairstyles/medium01.ase"
251
+ ],
252
+ "attach_joint": "neck",
253
+ "attach_index": 3,
254
+ "offset": {
255
+ "translation": [0, 0, 0],
256
+ "rotation": [0, 0, 0, 1]
257
+ },
258
+ "material_textures": {
259
+ "hair": "hair_<color>.png"
260
+ },
261
+ "bytes": 4672
262
+ },
263
+ {
264
+ "file": "hair_short01.glb",
265
+ "role": "hair",
266
+ "source": [
267
+ "objects/players/hairstyles/short01.ase"
268
+ ],
269
+ "attach_joint": "neck",
270
+ "attach_index": 3,
271
+ "offset": {
272
+ "translation": [0, 0, 0],
273
+ "rotation": [0, 0, 0, 1]
274
+ },
275
+ "material_textures": {
276
+ "hair": "hair_<color>.png"
277
+ },
278
+ "bytes": 4672
279
+ },
280
+ {
281
+ "file": "hair_short02.glb",
282
+ "role": "hair",
283
+ "source": [
284
+ "objects/players/hairstyles/short02.ase"
285
+ ],
286
+ "attach_joint": "neck",
287
+ "attach_index": 3,
288
+ "offset": {
289
+ "translation": [0, 0, 0],
290
+ "rotation": [0, 0, 0, 1]
291
+ },
292
+ "material_textures": {
293
+ "hair": "hair_<color>.png"
294
+ },
295
+ "bytes": 4672
296
+ },
297
+ {
298
+ "file": "ball.glb",
299
+ "role": "ball",
300
+ "source": [
301
+ "objects/balls/generic.ase",
302
+ "objects/balls/ball.bmp"
303
+ ],
304
+ "origin": "the ball centre, place it at the saved ball position and rotation",
305
+ "radius_m": 0.11,
306
+ "embedded_textures": [
307
+ "ball.bmp as WebP"
308
+ ],
309
+ "bytes": 9624
310
+ },
311
+ {
312
+ "file": "goal.glb",
313
+ "role": "goals",
314
+ "source": [
315
+ "objects/stadiums/goals.ase",
316
+ "textures/stadium/goalnetting.bmp"
317
+ ],
318
+ "placement": "both goals in world coordinates of the engine frame, place at the origin",
319
+ "frame_bounds_m": {
320
+ "min": [-55.0536, -3.76, 0.0],
321
+ "max": [55.0485, 3.76, 2.54]
322
+ },
323
+ "net_bounds_m": {
324
+ "min": [-57.5539, -3.7, 0.0],
325
+ "max": [57.5483, 3.7, 2.5]
326
+ },
327
+ "embedded_textures": [
328
+ "goalnetting.bmp as PNG"
329
+ ],
330
+ "note": "GRF deforms the netting where the ball touches it, the mesh is the rest shape",
331
+ "bytes": 108724
332
+ },
333
+ {
334
+ "file": "kit_goalkeeper.webp",
335
+ "role": "kit of both goalkeepers",
336
+ "source": [
337
+ "objects/players/textures/goalie_kit.bmp"
338
+ ],
339
+ "srgb": true,
340
+ "applies_to": "material kit of player.glb",
341
+ "region_colors": {
342
+ "shirt": [80, 80, 80],
343
+ "shorts": [173, 222, 23],
344
+ "socks": [173, 222, 23]
345
+ },
346
+ "bytes": 5084
347
+ },
348
+ {
349
+ "file": "kit_mask.png",
350
+ "role": "kit recolor mask",
351
+ "source": [
352
+ "objects/players/textures/kit_template.bmp",
353
+ "objects/players/models/fullbody.ase"
354
+ ],
355
+ "channels": {
356
+ "r": "shirt and collar",
357
+ "g": "shorts",
358
+ "b": "socks"
359
+ },
360
+ "use": "albedo = r * shirt + g * shorts + b * socks, in sRGB, on the kit material",
361
+ "template_rows": {
362
+ "shirt_hem": 420,
363
+ "socks_top": 585,
364
+ "of": 1024
365
+ },
366
+ "bytes": 1737
367
+ },
368
+ {
369
+ "file": "kit_normal.webp",
370
+ "role": "kit normal map",
371
+ "source": [
372
+ "objects/players/textures/kit_UVWnormal.bmp"
373
+ ],
374
+ "srgb": false,
375
+ "applies_to": "material kit of player.glb, tangent space",
376
+ "bytes": 111304
377
+ },
378
+ {
379
+ "file": "skin_01.png",
380
+ "role": "skin tone",
381
+ "source": [
382
+ "objects/players/textures/skin01.bmp"
383
+ ],
384
+ "srgb": true,
385
+ "color": [228, 185, 163],
386
+ "applies_to": "material skin of player.glb",
387
+ "bytes": 83
388
+ },
389
+ {
390
+ "file": "skin_02.png",
391
+ "role": "skin tone",
392
+ "source": [
393
+ "objects/players/textures/skin02.bmp"
394
+ ],
395
+ "srgb": true,
396
+ "color": [183, 151, 132],
397
+ "applies_to": "material skin of player.glb",
398
+ "bytes": 83
399
+ },
400
+ {
401
+ "file": "skin_03.png",
402
+ "role": "skin tone",
403
+ "source": [
404
+ "objects/players/textures/skin03.bmp"
405
+ ],
406
+ "srgb": true,
407
+ "color": [144, 115, 96],
408
+ "applies_to": "material skin of player.glb",
409
+ "bytes": 83
410
+ },
411
+ {
412
+ "file": "skin_04.png",
413
+ "role": "skin tone",
414
+ "source": [
415
+ "objects/players/textures/skin04.bmp"
416
+ ],
417
+ "srgb": true,
418
+ "color": [102, 74, 55],
419
+ "applies_to": "material skin of player.glb",
420
+ "bytes": 82
421
+ },
422
+ {
423
+ "file": "hair_black.png",
424
+ "role": "hair color",
425
+ "source": [
426
+ "objects/players/textures/hair/black.bmp"
427
+ ],
428
+ "srgb": true,
429
+ "applies_to": "material hair of hair_<style>.glb",
430
+ "bytes": 2086
431
+ },
432
+ {
433
+ "file": "hair_blonde.png",
434
+ "role": "hair color",
435
+ "source": [
436
+ "objects/players/textures/hair/blonde.bmp"
437
+ ],
438
+ "srgb": true,
439
+ "applies_to": "material hair of hair_<style>.glb",
440
+ "bytes": 2590
441
+ },
442
+ {
443
+ "file": "hair_brown.png",
444
+ "role": "hair color",
445
+ "source": [
446
+ "objects/players/textures/hair/brown.bmp"
447
+ ],
448
+ "srgb": true,
449
+ "applies_to": "material hair of hair_<style>.glb",
450
+ "bytes": 2262
451
+ },
452
+ {
453
+ "file": "hair_darkblonde.png",
454
+ "role": "hair color",
455
+ "source": [
456
+ "objects/players/textures/hair/darkblonde.bmp"
457
+ ],
458
+ "srgb": true,
459
+ "applies_to": "material hair of hair_<style>.glb",
460
+ "bytes": 2449
461
+ },
462
+ {
463
+ "file": "hair_red.png",
464
+ "role": "hair color",
465
+ "source": [
466
+ "objects/players/textures/hair/red.bmp"
467
+ ],
468
+ "srgb": true,
469
+ "applies_to": "material hair of hair_<style>.glb",
470
+ "bytes": 2364
471
+ },
472
+ {
473
+ "file": "shoe.webp",
474
+ "role": "shoe",
475
+ "source": [
476
+ "objects/players/textures/shoe.bmp"
477
+ ],
478
+ "srgb": true,
479
+ "applies_to": "material shoe of player.glb",
480
+ "bytes": 1786
481
+ },
482
+ {
483
+ "file": "shoe_sole.png",
484
+ "role": "shoe sole",
485
+ "source": [
486
+ "objects/players/textures/shoe_sole.bmp"
487
+ ],
488
+ "srgb": true,
489
+ "applies_to": "material sole of player.glb",
490
+ "bytes": 82
491
+ },
492
+ {
493
+ "file": "pitch.webp",
494
+ "role": "pitch albedo with line markings",
495
+ "source": [
496
+ "textures/pitch/seamlessgrass08.bmp",
497
+ "textures/pitch/overlay.bmp"
498
+ ],
499
+ "srgb": true,
500
+ "extent_m": {
501
+ "x": [-60.0, 60.0],
502
+ "y": [-40.0, 40.0]
503
+ },
504
+ "orientation": "north up, top row at y = 40, left column at x = -60",
505
+ "note": "replaces pitch_01 to pitch_04, which GRF overwrites with this procedural bake",
506
+ "bytes": 26526
507
+ },
508
+ {
509
+ "file": "pitch_normal.webp",
510
+ "role": "pitch normal map, the mowing bands",
511
+ "source": [
512
+ "onthepitch/proceduralpitch.cpp GetPitchNormalColor"
513
+ ],
514
+ "srgb": false,
515
+ "extent_m": {
516
+ "x": [-60.0, 60.0],
517
+ "y": [-40.0, 40.0]
518
+ },
519
+ "orientation": "north up, as pitch.webp",
520
+ "encoding": "rgb = (n + 1) / 2 with r along +x, g along +y, b along +z of the engine",
521
+ "bytes": 1980
522
+ },
523
+ {
524
+ "file": "grass.webp",
525
+ "role": "tiling grass detail",
526
+ "source": [
527
+ "textures/pitch/seamlessgrass08.bmp"
528
+ ],
529
+ "srgb": true,
530
+ "tile_m": [20.8333, 20.8333],
531
+ "bytes": 69438
532
+ },
533
+ {
534
+ "file": "crowd.webp",
535
+ "role": "crowd, tiling, with alpha",
536
+ "source": [
537
+ "textures/stadium/crowd01.bmp"
538
+ ],
539
+ "srgb": true,
540
+ "bytes": 4388
541
+ },
542
+ {
543
+ "file": "crowd_normal.webp",
544
+ "role": "crowd normal map",
545
+ "source": [
546
+ "textures/stadium/crowd01_normal.bmp"
547
+ ],
548
+ "srgb": false,
549
+ "bytes": 9372
550
+ },
551
+ {
552
+ "file": "adboard_polygon.webp",
553
+ "role": "adboard",
554
+ "source": [
555
+ "textures/adboards/ad_polygon01.bmp"
556
+ ],
557
+ "srgb": true,
558
+ "bytes": 7406
559
+ },
560
+ {
561
+ "file": "adboard_your_ad_here.webp",
562
+ "role": "adboard",
563
+ "source": [
564
+ "textures/adboards/ad_your_ad_here.bmp"
565
+ ],
566
+ "srgb": true,
567
+ "bytes": 13606
568
+ }
569
+ ],
570
+ "checks": [
571
+ {
572
+ "file": "player.glb",
573
+ "base_pose_error_m": {
574
+ "single_bone_max": 9.000885811076055e-08,
575
+ "blended_max": 0.026938303540886516,
576
+ "blended_mean": 0.006303726890941258
577
+ }
578
+ },
579
+ {
580
+ "file": "hair_long01.glb"
581
+ },
582
+ {
583
+ "file": "hair_long02.glb"
584
+ },
585
+ {
586
+ "file": "hair_medium01.glb"
587
+ },
588
+ {
589
+ "file": "hair_short01.glb"
590
+ },
591
+ {
592
+ "file": "hair_short02.glb"
593
+ },
594
+ {
595
+ "file": "ball.glb"
596
+ },
597
+ {
598
+ "file": "goal.glb"
599
+ }
600
+ ]
601
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "kaykit-barbarian",
3
+ "name": "Barbarian",
4
+ "author": "Kay Lousberg, www.kaylousberg.com",
5
+ "source": "KayKit Character Pack Adventurers 2.0",
6
+ "license": "CC0 1.0",
7
+ "joints": {
8
+ "player": "root",
9
+ "body": "hips",
10
+ "middle": "chest",
11
+ "neck": "head",
12
+ "left_shoulder": "upperarm.l",
13
+ "left_elbow": "lowerarm.l",
14
+ "right_shoulder": "upperarm.r",
15
+ "right_elbow": "lowerarm.r",
16
+ "left_thigh": "upperleg.l",
17
+ "left_knee": "lowerleg.l",
18
+ "left_ankle": "foot.l",
19
+ "right_thigh": "upperleg.r",
20
+ "right_knee": "lowerleg.r",
21
+ "right_ankle": "foot.r"
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "kaykit-knight",
3
+ "name": "Knight",
4
+ "author": "Kay Lousberg, www.kaylousberg.com",
5
+ "source": "KayKit Character Pack Adventurers 2.0",
6
+ "license": "CC0 1.0",
7
+ "joints": {
8
+ "player": "root",
9
+ "body": "hips",
10
+ "middle": "chest",
11
+ "neck": "head",
12
+ "left_shoulder": "upperarm.l",
13
+ "left_elbow": "lowerarm.l",
14
+ "right_shoulder": "upperarm.r",
15
+ "right_elbow": "lowerarm.r",
16
+ "left_thigh": "upperleg.l",
17
+ "left_knee": "lowerleg.l",
18
+ "left_ankle": "foot.l",
19
+ "right_thigh": "upperleg.r",
20
+ "right_knee": "lowerleg.r",
21
+ "right_ankle": "foot.r"
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "kaykit-mage",
3
+ "name": "Mage",
4
+ "author": "Kay Lousberg, www.kaylousberg.com",
5
+ "source": "KayKit Character Pack Adventurers 2.0",
6
+ "license": "CC0 1.0",
7
+ "joints": {
8
+ "player": "root",
9
+ "body": "hips",
10
+ "middle": "chest",
11
+ "neck": "head",
12
+ "left_shoulder": "upperarm.l",
13
+ "left_elbow": "lowerarm.l",
14
+ "right_shoulder": "upperarm.r",
15
+ "right_elbow": "lowerarm.r",
16
+ "left_thigh": "upperleg.l",
17
+ "left_knee": "lowerleg.l",
18
+ "left_ankle": "foot.l",
19
+ "right_thigh": "upperleg.r",
20
+ "right_knee": "lowerleg.r",
21
+ "right_ankle": "foot.r"
22
+ }
23
+ }