@volter/editor-blender 0.1.150 → 0.1.152

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 (93) hide show
  1. package/LICENSE +18 -9
  2. package/README.md +5 -5
  3. package/contributions/blender-animation-editors.tsx +17 -69
  4. package/contributions/blender-display-settings.ts +36 -0
  5. package/contributions/blender-export-gltf.ts +228 -0
  6. package/contributions/blender-export.verbs.ts +39 -0
  7. package/contributions/blender-gltf-export.verbs.ts +312 -0
  8. package/contributions/blender-header-menus.tsx +37 -133
  9. package/contributions/blender-icon-trace.mjs +8 -98
  10. package/contributions/blender-icons.source.mjs +96 -860
  11. package/contributions/blender-mixer-pose.ts +369 -0
  12. package/contributions/blender-model-opening.tsx +26 -56
  13. package/contributions/blender-node-editor.document.tsx +30 -181
  14. package/contributions/blender-node-geometry.ts +44 -230
  15. package/contributions/blender-node-panels.source.mjs +7 -121
  16. package/contributions/blender-outliner-authoring.ts +61 -415
  17. package/contributions/blender-outliner-model.ts +15 -112
  18. package/contributions/blender-play-area.tsx +99 -0
  19. package/contributions/blender-playback-movie.ts +409 -0
  20. package/contributions/blender-pose.ts +18 -368
  21. package/contributions/blender-properties-context.ts +1 -1
  22. package/contributions/blender-properties-model.ts +59 -91
  23. package/contributions/blender-properties-tab.tsx +3 -50
  24. package/contributions/blender-properties-view.tsx +39 -181
  25. package/contributions/blender-remedy.ts +14 -0
  26. package/contributions/blender-runtime-skin.ts +103 -99
  27. package/contributions/blender-runtime.document.tsx +170 -618
  28. package/contributions/blender-scene-mixer.ts +51 -0
  29. package/contributions/blender-screenshot.service.ts +28 -0
  30. package/contributions/blender-timeline-geometry.ts +16 -136
  31. package/contributions/blender-timeline.document.tsx +145 -333
  32. package/contributions/blender-uv-editor.document.tsx +48 -112
  33. package/contributions/blender-uv-geometry.ts +14 -179
  34. package/contributions/blender-version.status.tsx +45 -31
  35. package/contributions/blender.environment.ts +2 -2
  36. package/contributions/blender.icons.json +0 -9
  37. package/contributions/blender.keymap.ts +9 -51
  38. package/contributions/blender.node-panels.json +4 -13
  39. package/contributions/blender.page.ts +64 -0
  40. package/contributions/blender.status.tsx +8 -150
  41. package/contributions/blender.style.ts +25 -152
  42. package/contributions/blender.verbs.ts +52 -0
  43. package/contributions/model.layout.ts +2 -34
  44. package/contributions/models.finder.ts +3 -30
  45. package/contributions/properties-bone-constraints.inspector.tsx +1 -16
  46. package/contributions/properties-bone.inspector.tsx +2 -31
  47. package/contributions/properties-collection.inspector.tsx +1 -34
  48. package/contributions/properties-constraints.inspector.tsx +1 -21
  49. package/contributions/properties-data.inspector.tsx +2 -39
  50. package/contributions/properties-material.inspector.tsx +2 -33
  51. package/contributions/properties-modifiers.inspector.tsx +2 -30
  52. package/contributions/properties-object.inspector.tsx +2 -44
  53. package/contributions/properties-output.inspector.tsx +1 -27
  54. package/contributions/properties-particles.inspector.tsx +2 -46
  55. package/contributions/properties-physics.inspector.tsx +2 -41
  56. package/contributions/properties-render.inspector.tsx +1 -45
  57. package/contributions/properties-scene.inspector.tsx +1 -35
  58. package/contributions/properties-texture.inspector.tsx +1 -49
  59. package/contributions/properties-view-layer.inspector.tsx +1 -29
  60. package/contributions/properties-world.inspector.tsx +2 -39
  61. package/contributions/shading.layout.ts +3 -78
  62. package/contributions/uv-editing.layout.ts +3 -70
  63. package/dist-node/serving.mjs +13 -32
  64. package/host/blender-runtime-host.ts +795 -412
  65. package/host/scene-sound.ts +143 -0
  66. package/node/blender-mcp.ts +52 -95
  67. package/package.json +1221 -46
  68. package/producticons/blender-icons.otf +0 -0
  69. package/producticons/blender-product-icon-theme.json +129 -0
  70. package/serving/blender-routes.ts +9 -48
  71. package/serving/blender-wasm-artifact.ts +29 -166
  72. package/serving/index.ts +1 -1
  73. package/src/api.ts +9 -0
  74. package/src/layouts.tsx +1 -17
  75. package/src/looks.ts +1 -12
  76. package/src/model-document-saving.ts +25 -0
  77. package/src/node-view-state.ts +3 -25
  78. package/src/play-mode.ts +13 -42
  79. package/src/play-tool.ts +44 -0
  80. package/src/presentation.ts +6 -18
  81. package/src/regions.ts +3 -43
  82. package/src/start-document.ts +15 -0
  83. package/src/timeline-view-state.ts +4 -39
  84. package/src/uv-view-state.ts +4 -20
  85. package/themes/blender.json +299 -0
  86. package/view/blender-view-routes.ts +1 -1
  87. package/contributions/blender-game-panel.tsx +0 -809
  88. package/contributions/blender-palette.source.mjs +0 -350
  89. package/contributions/blender-play-skin.ts +0 -508
  90. package/contributions/blender-screenshot.menu.ts +0 -32
  91. package/contributions/blender.command.ts +0 -109
  92. package/contributions/blender.palette.json +0 -102
  93. package/src/play-live.ts +0 -27
package/package.json CHANGED
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "name": "@volter/editor-blender",
3
+ "publisher": "volter",
3
4
  "author": "Volter AI, Inc.",
4
5
  "license": "AGPL-3.0-only AND GPL-3.0-or-later",
5
- "version": "0.1.150",
6
+ "version": "0.1.152",
7
+ "engines": {
8
+ "vscode": "*"
9
+ },
6
10
  "publishConfig": {
7
11
  "access": "public"
8
12
  },
@@ -22,69 +26,1240 @@
22
26
  "LICENSE-MCP",
23
27
  "serving",
24
28
  "view",
25
- "dist-node"
29
+ "dist-node",
30
+ "themes",
31
+ "producticons"
26
32
  ],
27
33
  "exports": {
28
34
  "./contributions/*": "./contributions/*",
29
35
  "./looks": "./src/looks.ts",
30
36
  "./layouts": "./src/layouts.tsx",
37
+ "./api": "./src/api.ts",
31
38
  "./mcp": "./node/blender-mcp.ts",
32
39
  "./package.json": "./package.json"
33
40
  },
34
- "volter": {
35
- "contributions": [
36
- "./contributions/blender-node-editor.document.tsx",
37
- "./contributions/blender-timeline.document.tsx",
38
- "./contributions/blender-uv-editor.document.tsx",
39
- "./contributions/blender-runtime.document.tsx",
40
- "./contributions/blender-screenshot.menu.ts",
41
- "./contributions/blender-version.status.tsx",
42
- "./contributions/blender.command.ts",
43
- "./contributions/blender.environment.ts",
44
- "./contributions/blender.keymap.ts",
45
- "./contributions/blender.status.tsx",
46
- "./contributions/blender.style.ts",
47
- "./contributions/model.layout.ts",
48
- "./contributions/models.finder.ts",
49
- "./contributions/properties-bone-constraints.inspector.tsx",
50
- "./contributions/properties-bone.inspector.tsx",
51
- "./contributions/properties-collection.inspector.tsx",
52
- "./contributions/properties-constraints.inspector.tsx",
53
- "./contributions/properties-data.inspector.tsx",
54
- "./contributions/properties-material.inspector.tsx",
55
- "./contributions/properties-modifiers.inspector.tsx",
56
- "./contributions/properties-object.inspector.tsx",
57
- "./contributions/properties-output.inspector.tsx",
58
- "./contributions/properties-particles.inspector.tsx",
59
- "./contributions/properties-physics.inspector.tsx",
60
- "./contributions/properties-render.inspector.tsx",
61
- "./contributions/properties-scene.inspector.tsx",
62
- "./contributions/properties-texture.inspector.tsx",
63
- "./contributions/properties-view-layer.inspector.tsx",
64
- "./contributions/properties-world.inspector.tsx",
65
- "./contributions/sculpt.layout.ts",
66
- "./contributions/shading.layout.ts",
67
- "./contributions/uv-editing.layout.ts",
68
- "./contributions/texture.layout.ts"
41
+ "extensionDependencies": [
42
+ "volter.@volter/editor-threejs"
43
+ ],
44
+ "contributes": {
45
+ "volter": {
46
+ "serving": [
47
+ "./dist-node/serving.mjs"
48
+ ],
49
+ "viewRoutes": [
50
+ "./view/blender-view-routes.ts"
51
+ ],
52
+ "page": [
53
+ "./contributions/blender.page.ts"
54
+ ],
55
+ "editors": [
56
+ {
57
+ "viewType": "volter.blender.model",
58
+ "displayName": "Blender Model",
59
+ "document": "./contributions/blender-runtime.document.tsx",
60
+ "selector": [
61
+ {
62
+ "filenamePattern": "*.blend"
63
+ }
64
+ ],
65
+ "priority": "default",
66
+ "kind": "model"
67
+ },
68
+ {
69
+ "document": "./contributions/blender-node-editor.document.tsx"
70
+ },
71
+ {
72
+ "document": "./contributions/blender-timeline.document.tsx"
73
+ },
74
+ {
75
+ "document": "./contributions/blender-uv-editor.document.tsx"
76
+ }
77
+ ],
78
+ "inspectors": [
79
+ "./contributions/properties-bone-constraints.inspector.tsx",
80
+ "./contributions/properties-bone.inspector.tsx",
81
+ "./contributions/properties-collection.inspector.tsx",
82
+ "./contributions/properties-constraints.inspector.tsx",
83
+ "./contributions/properties-data.inspector.tsx",
84
+ "./contributions/properties-material.inspector.tsx",
85
+ "./contributions/properties-modifiers.inspector.tsx",
86
+ "./contributions/properties-object.inspector.tsx",
87
+ "./contributions/properties-output.inspector.tsx",
88
+ "./contributions/properties-particles.inspector.tsx",
89
+ "./contributions/properties-physics.inspector.tsx",
90
+ "./contributions/properties-render.inspector.tsx",
91
+ "./contributions/properties-scene.inspector.tsx",
92
+ "./contributions/properties-texture.inspector.tsx",
93
+ "./contributions/properties-view-layer.inspector.tsx",
94
+ "./contributions/properties-world.inspector.tsx"
95
+ ],
96
+ "views": {
97
+ "statusbar": [
98
+ {
99
+ "id": "version",
100
+ "name": "Version",
101
+ "alignment": "right",
102
+ "priority": -5998,
103
+ "module": "./contributions/blender-version.status.tsx"
104
+ },
105
+ {
106
+ "id": "mouseHints",
107
+ "name": "Mouse hints",
108
+ "alignment": "left",
109
+ "priority": 5000,
110
+ "module": "./contributions/blender.status.tsx"
111
+ }
112
+ ]
113
+ },
114
+ "finders": [
115
+ {
116
+ "name": "modelsFromBlendFiles",
117
+ "module": "./contributions/models.finder.ts"
118
+ }
119
+ ],
120
+ "looks": [
121
+ "./contributions/model.layout.ts",
122
+ "./contributions/sculpt.layout.ts",
123
+ "./contributions/shading.layout.ts",
124
+ "./contributions/uv-editing.layout.ts",
125
+ "./contributions/texture.layout.ts",
126
+ "./contributions/blender.keymap.ts",
127
+ "./contributions/blender.style.ts",
128
+ "./contributions/blender.environment.ts"
129
+ ],
130
+ "services": [
131
+ "./contributions/blender-screenshot.service.ts"
132
+ ]
133
+ },
134
+ "commands": [
135
+ {
136
+ "command": "volter.blender.saveScreenshotEditor",
137
+ "title": "Save Screenshot (Editor)…",
138
+ "category": "Blender"
139
+ },
140
+ {
141
+ "command": "volter.blender-draw-batching",
142
+ "title": "blender-draw-batching",
143
+ "category": "Blender",
144
+ "volter": {
145
+ "derivedRefresh": "none"
146
+ }
147
+ },
148
+ {
149
+ "command": "volter.blender-start",
150
+ "title": "blender-start",
151
+ "category": "Blender",
152
+ "volter": {
153
+ "timeoutMs": 120000,
154
+ "derivedRefresh": "none"
155
+ }
156
+ },
157
+ {
158
+ "command": "volter.blender-stop",
159
+ "title": "blender-stop",
160
+ "category": "Blender",
161
+ "volter": {
162
+ "timeoutMs": 1800000,
163
+ "derivedRefresh": "none"
164
+ }
165
+ },
166
+ {
167
+ "command": "volter.blender-execute",
168
+ "title": "blender-execute",
169
+ "category": "Blender",
170
+ "volter": {
171
+ "timeoutMs": 1800000
172
+ }
173
+ },
174
+ {
175
+ "command": "volter.blender-render-movie",
176
+ "title": "blender-render-movie",
177
+ "category": "Blender",
178
+ "volter": {
179
+ "derivedRefresh": "none"
180
+ }
181
+ },
182
+ {
183
+ "command": "volter.blender-render-status",
184
+ "title": "blender-render-status",
185
+ "category": "Blender",
186
+ "volter": {
187
+ "derivedRefresh": "none"
188
+ }
189
+ },
190
+ {
191
+ "command": "volter.blender-native-preview",
192
+ "title": "blender-native-preview",
193
+ "category": "Blender",
194
+ "volter": {
195
+ "timeoutMs": 120000,
196
+ "derivedRefresh": "none"
197
+ }
198
+ },
199
+ {
200
+ "command": "volter.blender-scene-info",
201
+ "title": "blender-scene-info",
202
+ "category": "Blender",
203
+ "volter": {
204
+ "timeoutMs": 60000,
205
+ "derivedRefresh": "none"
206
+ }
207
+ },
208
+ {
209
+ "command": "volter.blender-object-info",
210
+ "title": "blender-object-info",
211
+ "category": "Blender",
212
+ "volter": {
213
+ "timeoutMs": 60000,
214
+ "derivedRefresh": "none"
215
+ }
216
+ },
217
+ {
218
+ "command": "volter.blender-screenshot-view",
219
+ "title": "blender-screenshot-view",
220
+ "category": "Blender",
221
+ "volter": {
222
+ "timeoutMs": 60000
223
+ }
224
+ },
225
+ {
226
+ "command": "volter.blender-read-file",
227
+ "title": "blender-read-file",
228
+ "category": "Blender",
229
+ "volter": {
230
+ "timeoutMs": 60000,
231
+ "derivedRefresh": "none"
232
+ }
233
+ },
234
+ {
235
+ "command": "volter.blender-write-file",
236
+ "title": "blender-write-file",
237
+ "category": "Blender",
238
+ "volter": {
239
+ "timeoutMs": 60000,
240
+ "derivedRefresh": "none"
241
+ }
242
+ },
243
+ {
244
+ "command": "volter.blender-list-files",
245
+ "title": "blender-list-files",
246
+ "category": "Blender",
247
+ "volter": {
248
+ "timeoutMs": 60000,
249
+ "derivedRefresh": "none"
250
+ }
251
+ },
252
+ {
253
+ "command": "volter.blender-rna",
254
+ "title": "blender-rna",
255
+ "category": "Blender",
256
+ "volter": {
257
+ "timeoutMs": 60000,
258
+ "derivedRefresh": "none"
259
+ }
260
+ },
261
+ {
262
+ "command": "volter.blender-rna-context",
263
+ "title": "blender-rna-context",
264
+ "category": "Blender",
265
+ "volter": {
266
+ "timeoutMs": 60000,
267
+ "derivedRefresh": "none"
268
+ }
269
+ },
270
+ {
271
+ "command": "volter.blender-rna-set",
272
+ "title": "blender-rna-set",
273
+ "category": "Blender",
274
+ "volter": {
275
+ "timeoutMs": 60000
276
+ }
277
+ },
278
+ {
279
+ "command": "volter.blender-outliner",
280
+ "title": "blender-outliner",
281
+ "category": "Blender",
282
+ "volter": {
283
+ "timeoutMs": 60000,
284
+ "derivedRefresh": "none"
285
+ }
286
+ },
287
+ {
288
+ "command": "volter.blender-node-tree",
289
+ "title": "blender-node-tree",
290
+ "category": "Blender",
291
+ "volter": {
292
+ "timeoutMs": 60000,
293
+ "derivedRefresh": "none"
294
+ }
295
+ },
296
+ {
297
+ "command": "volter.blender-uv-layout",
298
+ "title": "blender-uv-layout",
299
+ "category": "Blender",
300
+ "volter": {
301
+ "timeoutMs": 60000,
302
+ "derivedRefresh": "none"
303
+ }
304
+ },
305
+ {
306
+ "command": "volter.blender-action-clip",
307
+ "title": "blender-action-clip",
308
+ "category": "Blender",
309
+ "volter": {
310
+ "timeoutMs": 120000,
311
+ "derivedRefresh": "none"
312
+ }
313
+ },
314
+ {
315
+ "command": "volter.blender-node-view",
316
+ "title": "blender-node-view",
317
+ "category": "Blender",
318
+ "volter": {
319
+ "derivedRefresh": "none"
320
+ }
321
+ },
322
+ {
323
+ "command": "volter.blender-outliner-set",
324
+ "title": "blender-outliner-set",
325
+ "category": "Blender",
326
+ "volter": {
327
+ "timeoutMs": 60000
328
+ }
329
+ },
330
+ {
331
+ "command": "volter.blender-status",
332
+ "title": "blender-status",
333
+ "category": "Blender",
334
+ "volter": {
335
+ "derivedRefresh": "none"
336
+ }
337
+ },
338
+ {
339
+ "command": "volter.blender-export-gltf",
340
+ "title": "blender-export-gltf",
341
+ "category": "Blender",
342
+ "volter": {
343
+ "timeoutMs": 1800000,
344
+ "derivedRefresh": "none"
345
+ }
346
+ },
347
+ {
348
+ "command": "volter.blender-export-component",
349
+ "title": "blender-export-component",
350
+ "category": "Blender",
351
+ "volter": {
352
+ "timeoutMs": 95000,
353
+ "derivedRefresh": "none"
354
+ }
355
+ },
356
+ {
357
+ "command": "volter.blender-export-level",
358
+ "title": "blender-export-level",
359
+ "category": "Blender",
360
+ "volter": {
361
+ "timeoutMs": 95000,
362
+ "derivedRefresh": "none"
363
+ }
364
+ },
365
+ {
366
+ "command": "volter.blender-node-view.state",
367
+ "title": "state",
368
+ "category": "Node Editor"
369
+ },
370
+ {
371
+ "command": "volter.blender-node-view.look",
372
+ "title": "look",
373
+ "category": "Node Editor"
374
+ },
375
+ {
376
+ "command": "volter.blender-node-view.view-all",
377
+ "title": "Frame All",
378
+ "category": "Node Editor"
379
+ },
380
+ {
381
+ "command": "volter.blender-node-view.zoom",
382
+ "title": "zoom",
383
+ "category": "Node Editor"
384
+ },
385
+ {
386
+ "command": "volter.blender-node-view.pan",
387
+ "title": "pan",
388
+ "category": "Node Editor"
389
+ },
390
+ {
391
+ "command": "volter.blender-node-view.move",
392
+ "title": "move",
393
+ "category": "Node Editor"
394
+ },
395
+ {
396
+ "command": "volter.blender-node-view.link",
397
+ "title": "link",
398
+ "category": "Node Editor"
399
+ },
400
+ {
401
+ "command": "volter.blender-node-view.set-value",
402
+ "title": "set-value",
403
+ "category": "Node Editor"
404
+ },
405
+ {
406
+ "command": "volter.blender-node-view.use-nodes",
407
+ "title": "use-nodes",
408
+ "category": "Node Editor"
409
+ },
410
+ {
411
+ "command": "volter.blender-node-view.collapse-panel",
412
+ "title": "collapse-panel",
413
+ "category": "Node Editor"
414
+ },
415
+ {
416
+ "command": "volter.timeline.state",
417
+ "title": "state",
418
+ "category": "Timeline"
419
+ },
420
+ {
421
+ "command": "volter.timeline.editor",
422
+ "title": "Show Editor",
423
+ "category": "Animation"
424
+ },
425
+ {
426
+ "command": "volter.timeline.frame",
427
+ "title": "Set Frame",
428
+ "category": "Timeline"
429
+ },
430
+ {
431
+ "command": "volter.timeline.play",
432
+ "title": "Play",
433
+ "category": "Timeline"
434
+ },
435
+ {
436
+ "command": "volter.timeline.pause",
437
+ "title": "Pause",
438
+ "category": "Timeline"
439
+ },
440
+ {
441
+ "command": "volter.timeline.jump-start",
442
+ "title": "Jump to Start",
443
+ "category": "Timeline"
444
+ },
445
+ {
446
+ "command": "volter.timeline.jump-end",
447
+ "title": "Jump to End",
448
+ "category": "Timeline"
449
+ },
450
+ {
451
+ "command": "volter.timeline.next-keyframe",
452
+ "title": "Next Keyframe",
453
+ "category": "Timeline"
454
+ },
455
+ {
456
+ "command": "volter.timeline.prev-keyframe",
457
+ "title": "Previous Keyframe",
458
+ "category": "Timeline"
459
+ },
460
+ {
461
+ "command": "volter.timeline.view-all",
462
+ "title": "View All",
463
+ "category": "Timeline"
464
+ },
465
+ {
466
+ "command": "volter.timeline.zoom",
467
+ "title": "Zoom",
468
+ "category": "Timeline"
469
+ },
470
+ {
471
+ "command": "volter.timeline.pan",
472
+ "title": "Pan",
473
+ "category": "Timeline"
474
+ },
475
+ {
476
+ "command": "volter.timeline.set-range",
477
+ "title": "set-range",
478
+ "category": "Timeline"
479
+ },
480
+ {
481
+ "command": "volter.timeline.insert-key",
482
+ "title": "insert-key",
483
+ "category": "Timeline"
484
+ },
485
+ {
486
+ "command": "volter.timeline.move-key",
487
+ "title": "move-key",
488
+ "category": "Timeline"
489
+ },
490
+ {
491
+ "command": "volter.timeline.delete-key",
492
+ "title": "delete-key",
493
+ "category": "Timeline"
494
+ },
495
+ {
496
+ "command": "volter.timeline.set-interpolation",
497
+ "title": "set-interpolation",
498
+ "category": "Timeline"
499
+ },
500
+ {
501
+ "command": "volter.timeline.select-key",
502
+ "title": "select-key",
503
+ "category": "Timeline"
504
+ },
505
+ {
506
+ "command": "volter.blender-uv-view.state",
507
+ "title": "state",
508
+ "category": "UV Editor"
509
+ },
510
+ {
511
+ "command": "volter.blender-uv-view.view-all",
512
+ "title": "View All",
513
+ "category": "UV Editor"
514
+ },
515
+ {
516
+ "command": "volter.blender-uv-view.zoom",
517
+ "title": "Zoom",
518
+ "category": "UV Editor"
519
+ },
520
+ {
521
+ "command": "volter.blender-uv-view.pan",
522
+ "title": "Pan",
523
+ "category": "UV Editor"
524
+ },
525
+ {
526
+ "command": "volter.blender-uv-view.move-uv",
527
+ "title": "move-uv",
528
+ "category": "UV Editor"
529
+ },
530
+ {
531
+ "command": "volter.blender-uv-view.select",
532
+ "title": "select",
533
+ "category": "UV Editor"
534
+ },
535
+ {
536
+ "command": "volter.blender-uv-view.pin",
537
+ "title": "pin",
538
+ "category": "UV Editor"
539
+ },
540
+ {
541
+ "command": "volter.blender-uv-view.unwrap",
542
+ "title": "unwrap",
543
+ "category": "UV Editor"
544
+ }
545
+ ],
546
+ "keybindings": [
547
+ {
548
+ "command": "volter.edit.duplicate",
549
+ "key": "shift+D",
550
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
551
+ },
552
+ {
553
+ "command": "volter.edit.selectAll",
554
+ "key": "A",
555
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
556
+ },
557
+ {
558
+ "command": "volter.edit.deselectAll",
559
+ "key": "alt+A",
560
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
561
+ },
562
+ {
563
+ "command": "volter.edit.delete",
564
+ "key": "X",
565
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
566
+ },
567
+ {
568
+ "command": "volter.transform.select",
569
+ "key": "W",
570
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
571
+ },
572
+ {
573
+ "command": "volter.transform.translate",
574
+ "key": "G",
575
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
576
+ },
577
+ {
578
+ "command": "volter.transform.rotate",
579
+ "key": "R",
580
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
581
+ },
582
+ {
583
+ "command": "volter.transform.scale",
584
+ "key": "S",
585
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
586
+ },
587
+ {
588
+ "command": "volter.viewport.frameSelection",
589
+ "key": "NumPad_Decimal",
590
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
591
+ },
592
+ {
593
+ "command": "volter.viewport.frameSelection",
594
+ "key": ".",
595
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
596
+ },
597
+ {
598
+ "command": "volter.viewport.cyclePivot",
599
+ "key": ",",
600
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
601
+ },
602
+ {
603
+ "command": "volter.view.bottom",
604
+ "key": "ctrl+NumPad7",
605
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
606
+ },
607
+ {
608
+ "command": "volter.view.back",
609
+ "key": "ctrl+NumPad1",
610
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
611
+ },
612
+ {
613
+ "command": "volter.view.left",
614
+ "key": "ctrl+NumPad3",
615
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
616
+ },
617
+ {
618
+ "command": "volter.view.orbitLeft",
619
+ "key": "NumPad4",
620
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
621
+ },
622
+ {
623
+ "command": "volter.view.orbitRight",
624
+ "key": "NumPad6",
625
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
626
+ },
627
+ {
628
+ "command": "volter.view.orbitUp",
629
+ "key": "NumPad8",
630
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
631
+ },
632
+ {
633
+ "command": "volter.view.orbitDown",
634
+ "key": "NumPad2",
635
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
636
+ },
637
+ {
638
+ "command": "volter.view.opposite",
639
+ "key": "NumPad9",
640
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
641
+ },
642
+ {
643
+ "command": "volter.view.rollLeft",
644
+ "key": "shift+NumPad4",
645
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
646
+ },
647
+ {
648
+ "command": "volter.view.rollRight",
649
+ "key": "shift+NumPad6",
650
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
651
+ },
652
+ {
653
+ "command": "volter.view.all",
654
+ "key": "Home",
655
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
656
+ },
657
+ {
658
+ "command": "volter.view.zoomIn",
659
+ "key": "ctrl+=",
660
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
661
+ },
662
+ {
663
+ "command": "volter.view.zoomIn",
664
+ "key": "NumPad_Add",
665
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
666
+ },
667
+ {
668
+ "command": "volter.view.zoomOut",
669
+ "key": "ctrl+-",
670
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
671
+ },
672
+ {
673
+ "command": "volter.view.zoomOut",
674
+ "key": "NumPad_Subtract",
675
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
676
+ },
677
+ {
678
+ "command": "volter.view.projection",
679
+ "key": "NumPad5",
680
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
681
+ },
682
+ {
683
+ "command": "volter.unboundKey",
684
+ "key": "ctrl+D",
685
+ "mac": "cmd+D",
686
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
687
+ },
688
+ {
689
+ "command": "volter.edit.delete",
690
+ "key": "Delete",
691
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
692
+ },
693
+ {
694
+ "command": "volter.unboundKey",
695
+ "key": "Backspace",
696
+ "when": "volter.focused && !inputFocus && volter.keymap == 'blender'"
697
+ },
698
+ {
699
+ "command": "volter.unboundKey",
700
+ "key": "Q",
701
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
702
+ },
703
+ {
704
+ "command": "volter.unboundKey",
705
+ "key": "E",
706
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
707
+ },
708
+ {
709
+ "command": "volter.unboundKey",
710
+ "key": "F",
711
+ "when": "volter.stage.focused && volter.keymap == 'blender'"
712
+ },
713
+ {
714
+ "command": "volter.unboundKey",
715
+ "key": "M",
716
+ "when": "volter.stage.focused && volter.stage.surface == 'canvas' && volter.keymap == 'blender'"
717
+ },
718
+ {
719
+ "command": "volter.unboundKey",
720
+ "key": "ctrl+'",
721
+ "mac": "cmd+'",
722
+ "when": "volter.stage.focused && volter.stage.surface == 'canvas' && volter.keymap == 'blender'"
723
+ }
724
+ ],
725
+ "languageModelTools": [
726
+ {
727
+ "name": "blender-status",
728
+ "tags": [
729
+ "volter"
730
+ ],
731
+ "displayName": "Blender status",
732
+ "modelDescription": "Whether Blender is running in this editor and which document it holds.",
733
+ "inputSchema": {
734
+ "type": "object",
735
+ "properties": {},
736
+ "required": [],
737
+ "additionalProperties": false
738
+ }
739
+ },
740
+ {
741
+ "name": "blender-execute",
742
+ "tags": [
743
+ "volter"
744
+ ],
745
+ "displayName": "Run Blender Python",
746
+ "modelDescription": "Run Python in the Blender open in this editor (bpy is available). Answers what the script printed, or its traceback.",
747
+ "inputSchema": {
748
+ "type": "object",
749
+ "properties": {
750
+ "code": {
751
+ "type": "string",
752
+ "description": "The Python to run."
753
+ }
754
+ },
755
+ "required": [
756
+ "code"
757
+ ],
758
+ "additionalProperties": false
759
+ }
760
+ },
761
+ {
762
+ "name": "blender-scene-info",
763
+ "tags": [
764
+ "volter"
765
+ ],
766
+ "displayName": "Blender scene",
767
+ "modelDescription": "Describe the open Blender scene: its objects, materials and settings.",
768
+ "inputSchema": {
769
+ "type": "object",
770
+ "properties": {},
771
+ "required": [],
772
+ "additionalProperties": false
773
+ }
774
+ },
775
+ {
776
+ "name": "blender-object-info",
777
+ "tags": [
778
+ "volter"
779
+ ],
780
+ "displayName": "Blender object",
781
+ "modelDescription": "Describe one Blender object by name.",
782
+ "inputSchema": {
783
+ "type": "object",
784
+ "properties": {
785
+ "name": {
786
+ "type": "string",
787
+ "description": "The object's name."
788
+ }
789
+ },
790
+ "required": [
791
+ "name"
792
+ ],
793
+ "additionalProperties": false
794
+ }
795
+ },
796
+ {
797
+ "name": "blender-rna",
798
+ "tags": [
799
+ "volter"
800
+ ],
801
+ "displayName": "Blender properties",
802
+ "modelDescription": "Read one datablock's properties, by its path such as bpy.data.objects[\"Cube\"].",
803
+ "inputSchema": {
804
+ "type": "object",
805
+ "properties": {
806
+ "path": {
807
+ "type": "string",
808
+ "description": "The datablock's path."
809
+ },
810
+ "names": {
811
+ "type": "number",
812
+ "description": "How many enum names to list."
813
+ }
814
+ },
815
+ "required": [
816
+ "path"
817
+ ],
818
+ "additionalProperties": false
819
+ }
820
+ },
821
+ {
822
+ "name": "blender-rna-context",
823
+ "tags": [
824
+ "volter"
825
+ ],
826
+ "displayName": "Blender context",
827
+ "modelDescription": "The active object, bone, material slot and modifier the Properties tabs key on, and the tabs.",
828
+ "inputSchema": {
829
+ "type": "object",
830
+ "properties": {
831
+ "object": {
832
+ "type": "string",
833
+ "description": "The object being looked at."
834
+ },
835
+ "collection": {
836
+ "type": "string",
837
+ "description": "The collection being looked at."
838
+ }
839
+ },
840
+ "required": [],
841
+ "additionalProperties": false
842
+ }
843
+ },
844
+ {
845
+ "name": "blender-rna-set",
846
+ "tags": [
847
+ "volter"
848
+ ],
849
+ "displayName": "Set a Blender property",
850
+ "modelDescription": "Set one property of a datablock.",
851
+ "inputSchema": {
852
+ "type": "object",
853
+ "properties": {
854
+ "path": {
855
+ "type": "string",
856
+ "description": "The datablock's path."
857
+ },
858
+ "property": {
859
+ "type": "string",
860
+ "description": "The property's name."
861
+ },
862
+ "value": {
863
+ "description": "The new value."
864
+ },
865
+ "index": {
866
+ "type": "number",
867
+ "description": "An array property's index."
868
+ }
869
+ },
870
+ "required": [
871
+ "path",
872
+ "property",
873
+ "value"
874
+ ],
875
+ "additionalProperties": false
876
+ }
877
+ },
878
+ {
879
+ "name": "blender-outliner",
880
+ "tags": [
881
+ "volter"
882
+ ],
883
+ "displayName": "Blender outliner",
884
+ "modelDescription": "Read Blender's outliner: the view layer's collections and objects.",
885
+ "inputSchema": {
886
+ "type": "object",
887
+ "properties": {
888
+ "selected": {
889
+ "type": "array",
890
+ "items": {
891
+ "type": "string"
892
+ },
893
+ "description": "Names to report as selected."
894
+ }
895
+ },
896
+ "required": [],
897
+ "additionalProperties": false
898
+ }
899
+ },
900
+ {
901
+ "name": "blender-outliner-set",
902
+ "tags": [
903
+ "volter"
904
+ ],
905
+ "displayName": "Set an outliner column",
906
+ "modelDescription": "Set one outliner column (visibility, selectability) on an item.",
907
+ "inputSchema": {
908
+ "type": "object",
909
+ "properties": {
910
+ "path": {
911
+ "type": "string",
912
+ "description": "The item's path."
913
+ },
914
+ "column": {
915
+ "type": "string",
916
+ "description": "The column."
917
+ },
918
+ "value": {
919
+ "type": "boolean"
920
+ }
921
+ },
922
+ "required": [
923
+ "path",
924
+ "column",
925
+ "value"
926
+ ],
927
+ "additionalProperties": false
928
+ }
929
+ },
930
+ {
931
+ "name": "blender-node-tree",
932
+ "tags": [
933
+ "volter"
934
+ ],
935
+ "displayName": "Blender node tree",
936
+ "modelDescription": "Read one material's shader node tree, whole.",
937
+ "inputSchema": {
938
+ "type": "object",
939
+ "properties": {
940
+ "material": {
941
+ "type": "string",
942
+ "description": "The material's name."
943
+ },
944
+ "path": {
945
+ "type": "string",
946
+ "description": "A node tree's path."
947
+ }
948
+ },
949
+ "required": [],
950
+ "additionalProperties": false
951
+ }
952
+ },
953
+ {
954
+ "name": "blender-node-view",
955
+ "tags": [
956
+ "volter"
957
+ ],
958
+ "displayName": "Blender node view",
959
+ "modelDescription": "Drive the node editor's view: state (the default) and its other actions.",
960
+ "inputSchema": {
961
+ "type": "object",
962
+ "properties": {
963
+ "action": {
964
+ "type": "string",
965
+ "description": "The action; state when omitted."
966
+ }
967
+ },
968
+ "required": [],
969
+ "additionalProperties": false
970
+ }
971
+ },
972
+ {
973
+ "name": "blender-uv-layout",
974
+ "tags": [
975
+ "volter"
976
+ ],
977
+ "displayName": "Blender UV layout",
978
+ "modelDescription": "Read an object's UV layout.",
979
+ "inputSchema": {
980
+ "type": "object",
981
+ "properties": {
982
+ "object": {
983
+ "type": "string",
984
+ "description": "The object's name."
985
+ },
986
+ "uvLayer": {
987
+ "type": "string",
988
+ "description": "The UV layer's name."
989
+ }
990
+ },
991
+ "required": [],
992
+ "additionalProperties": false
993
+ }
994
+ },
995
+ {
996
+ "name": "blender-action-clip",
997
+ "tags": [
998
+ "volter"
999
+ ],
1000
+ "displayName": "Blender animation",
1001
+ "modelDescription": "Read an object's animation clip, optionally baking constraints.",
1002
+ "inputSchema": {
1003
+ "type": "object",
1004
+ "properties": {
1005
+ "object": {
1006
+ "type": "string",
1007
+ "description": "The object's name."
1008
+ },
1009
+ "bake": {
1010
+ "type": "boolean"
1011
+ }
1012
+ },
1013
+ "required": [],
1014
+ "additionalProperties": false
1015
+ }
1016
+ },
1017
+ {
1018
+ "name": "blender-list-files",
1019
+ "tags": [
1020
+ "volter"
1021
+ ],
1022
+ "displayName": "Blender files",
1023
+ "modelDescription": "List the files Blender sees under a project path.",
1024
+ "inputSchema": {
1025
+ "type": "object",
1026
+ "properties": {
1027
+ "path": {
1028
+ "type": "string",
1029
+ "description": "A project-relative folder."
1030
+ }
1031
+ },
1032
+ "required": [
1033
+ "path"
1034
+ ],
1035
+ "additionalProperties": false
1036
+ }
1037
+ }
1038
+ ],
1039
+ "themes": [
1040
+ {
1041
+ "id": "blender",
1042
+ "label": "Blender",
1043
+ "uiTheme": "vs-dark",
1044
+ "path": "./themes/blender.json"
1045
+ }
1046
+ ],
1047
+ "productIconThemes": [
1048
+ {
1049
+ "id": "blender",
1050
+ "label": "Blender",
1051
+ "path": "./producticons/blender-product-icon-theme.json"
1052
+ }
69
1053
  ],
70
- "serving": "./dist-node/serving.mjs",
71
- "viewServing": "./view/blender-view-routes.ts"
1054
+ "menus": {
1055
+ "commandPalette": [
1056
+ {
1057
+ "command": "volter.blender-draw-batching",
1058
+ "when": "false"
1059
+ },
1060
+ {
1061
+ "command": "volter.blender-start",
1062
+ "when": "false"
1063
+ },
1064
+ {
1065
+ "command": "volter.blender-stop",
1066
+ "when": "false"
1067
+ },
1068
+ {
1069
+ "command": "volter.blender-execute",
1070
+ "when": "false"
1071
+ },
1072
+ {
1073
+ "command": "volter.blender-render-movie",
1074
+ "when": "false"
1075
+ },
1076
+ {
1077
+ "command": "volter.blender-render-status",
1078
+ "when": "false"
1079
+ },
1080
+ {
1081
+ "command": "volter.blender-native-preview",
1082
+ "when": "false"
1083
+ },
1084
+ {
1085
+ "command": "volter.blender-scene-info",
1086
+ "when": "false"
1087
+ },
1088
+ {
1089
+ "command": "volter.blender-object-info",
1090
+ "when": "false"
1091
+ },
1092
+ {
1093
+ "command": "volter.blender-screenshot-view",
1094
+ "when": "false"
1095
+ },
1096
+ {
1097
+ "command": "volter.blender-read-file",
1098
+ "when": "false"
1099
+ },
1100
+ {
1101
+ "command": "volter.blender-write-file",
1102
+ "when": "false"
1103
+ },
1104
+ {
1105
+ "command": "volter.blender-list-files",
1106
+ "when": "false"
1107
+ },
1108
+ {
1109
+ "command": "volter.blender-rna",
1110
+ "when": "false"
1111
+ },
1112
+ {
1113
+ "command": "volter.blender-rna-context",
1114
+ "when": "false"
1115
+ },
1116
+ {
1117
+ "command": "volter.blender-rna-set",
1118
+ "when": "false"
1119
+ },
1120
+ {
1121
+ "command": "volter.blender-outliner",
1122
+ "when": "false"
1123
+ },
1124
+ {
1125
+ "command": "volter.blender-node-tree",
1126
+ "when": "false"
1127
+ },
1128
+ {
1129
+ "command": "volter.blender-uv-layout",
1130
+ "when": "false"
1131
+ },
1132
+ {
1133
+ "command": "volter.blender-action-clip",
1134
+ "when": "false"
1135
+ },
1136
+ {
1137
+ "command": "volter.blender-node-view",
1138
+ "when": "false"
1139
+ },
1140
+ {
1141
+ "command": "volter.blender-outliner-set",
1142
+ "when": "false"
1143
+ },
1144
+ {
1145
+ "command": "volter.blender-status",
1146
+ "when": "false"
1147
+ },
1148
+ {
1149
+ "command": "volter.blender-export-gltf",
1150
+ "when": "false"
1151
+ },
1152
+ {
1153
+ "command": "volter.blender-export-component",
1154
+ "when": "false"
1155
+ },
1156
+ {
1157
+ "command": "volter.blender-export-level",
1158
+ "when": "false"
1159
+ },
1160
+ {
1161
+ "command": "volter.blender-node-view.state",
1162
+ "when": "false"
1163
+ },
1164
+ {
1165
+ "command": "volter.blender-node-view.look",
1166
+ "when": "false"
1167
+ },
1168
+ {
1169
+ "command": "volter.blender-node-view.zoom",
1170
+ "when": "false"
1171
+ },
1172
+ {
1173
+ "command": "volter.blender-node-view.pan",
1174
+ "when": "false"
1175
+ },
1176
+ {
1177
+ "command": "volter.blender-node-view.move",
1178
+ "when": "false"
1179
+ },
1180
+ {
1181
+ "command": "volter.blender-node-view.link",
1182
+ "when": "false"
1183
+ },
1184
+ {
1185
+ "command": "volter.blender-node-view.set-value",
1186
+ "when": "false"
1187
+ },
1188
+ {
1189
+ "command": "volter.blender-node-view.use-nodes",
1190
+ "when": "false"
1191
+ },
1192
+ {
1193
+ "command": "volter.blender-node-view.collapse-panel",
1194
+ "when": "false"
1195
+ },
1196
+ {
1197
+ "command": "volter.timeline.state",
1198
+ "when": "false"
1199
+ },
1200
+ {
1201
+ "command": "volter.timeline.set-range",
1202
+ "when": "false"
1203
+ },
1204
+ {
1205
+ "command": "volter.timeline.insert-key",
1206
+ "when": "false"
1207
+ },
1208
+ {
1209
+ "command": "volter.timeline.move-key",
1210
+ "when": "false"
1211
+ },
1212
+ {
1213
+ "command": "volter.timeline.delete-key",
1214
+ "when": "false"
1215
+ },
1216
+ {
1217
+ "command": "volter.timeline.set-interpolation",
1218
+ "when": "false"
1219
+ },
1220
+ {
1221
+ "command": "volter.timeline.select-key",
1222
+ "when": "false"
1223
+ },
1224
+ {
1225
+ "command": "volter.blender-uv-view.state",
1226
+ "when": "false"
1227
+ },
1228
+ {
1229
+ "command": "volter.blender-uv-view.move-uv",
1230
+ "when": "false"
1231
+ },
1232
+ {
1233
+ "command": "volter.blender-uv-view.select",
1234
+ "when": "false"
1235
+ },
1236
+ {
1237
+ "command": "volter.blender-uv-view.pin",
1238
+ "when": "false"
1239
+ },
1240
+ {
1241
+ "command": "volter.blender-uv-view.unwrap",
1242
+ "when": "false"
1243
+ }
1244
+ ]
1245
+ }
72
1246
  },
73
1247
  "dependencies": {
1248
+ "@volter/editor-movie": "0.5.213",
74
1249
  "@modelcontextprotocol/sdk": "1.32.1",
75
- "@volter/blender-engine": "0.1.148",
76
- "@volter/editor-threejs": "0.5.211",
1250
+ "@volter/blender-engine": "0.1.150",
1251
+ "@volter/editor-threejs": "0.5.213",
77
1252
  "zod": "^4.3.6",
78
1253
  "@fortawesome/free-solid-svg-icons": "^7.2.0"
79
1254
  },
80
1255
  "peerDependencies": {
81
- "@volter/live": "0.5.211",
82
- "@volter/project": "0.5.211",
83
- "@volter/sdk": "0.5.211",
1256
+ "@volter/live": "0.5.213",
1257
+ "@volter/project": "0.5.213",
1258
+ "@volter/sdk": "0.5.213",
84
1259
  "react": "^19.0.0",
85
1260
  "react-dom": "^19.0.0",
86
- "three": "^0.180.0",
87
- "vite": "^6.4.3"
1261
+ "three": "^0.186.1",
1262
+ "vite": "^6.4.3 || ^7.0.0 || ^8.0.0"
88
1263
  },
89
1264
  "scripts": {
90
1265
  "typecheck": "tsc -p tsconfig.json",