@volter/blender-engine 0.1.148 → 0.1.149

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 (245) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +4 -11
  3. package/browser/addons/vrm/LICENSE_(OPTION1)_MIT.txt +22 -0
  4. package/browser/addons/vrm/LICENSE_(OPTION2)_GPL-3_0.txt +674 -0
  5. package/browser/addons/vrm/LICENSE_MAIN.txt +1 -0
  6. package/browser/addons/vrm/README.txt +3 -0
  7. package/browser/addons/vrm/__init__.py +41 -0
  8. package/browser/addons/vrm/blender_manifest.toml +16 -0
  9. package/browser/addons/vrm/common/__init__.py +1 -0
  10. package/browser/addons/vrm/common/animation.py +58 -0
  11. package/browser/addons/vrm/common/blender_manifest.py +82 -0
  12. package/browser/addons/vrm/common/char.py +16 -0
  13. package/browser/addons/vrm/common/convert.py +287 -0
  14. package/browser/addons/vrm/common/convert_any.py +48 -0
  15. package/browser/addons/vrm/common/debug.py +40 -0
  16. package/browser/addons/vrm/common/deep.py +162 -0
  17. package/browser/addons/vrm/common/error_dialog.py +274 -0
  18. package/browser/addons/vrm/common/fs.py +71 -0
  19. package/browser/addons/vrm/common/gl.py +20 -0
  20. package/browser/addons/vrm/common/gltf.py +1149 -0
  21. package/browser/addons/vrm/common/human_bone_mapper/__init__.py +1 -0
  22. package/browser/addons/vrm/common/human_bone_mapper/biped_mapping.py +84 -0
  23. package/browser/addons/vrm/common/human_bone_mapper/cats_blender_plugin_fix_model_mapping.py +63 -0
  24. package/browser/addons/vrm/common/human_bone_mapper/human_bone_mapper.py +203 -0
  25. package/browser/addons/vrm/common/human_bone_mapper/microsoft_rocketbox_mapping.py +69 -0
  26. package/browser/addons/vrm/common/human_bone_mapper/mixamo_mapping.py +62 -0
  27. package/browser/addons/vrm/common/human_bone_mapper/mmd_mapping.py +115 -0
  28. package/browser/addons/vrm/common/human_bone_mapper/mpfb_mapping.py +120 -0
  29. package/browser/addons/vrm/common/human_bone_mapper/ready_player_me_mapping.py +65 -0
  30. package/browser/addons/vrm/common/human_bone_mapper/reallusion_mapping.py +94 -0
  31. package/browser/addons/vrm/common/human_bone_mapper/rigify_meta_rig_mapping.py +65 -0
  32. package/browser/addons/vrm/common/human_bone_mapper/structure_based_mapping.py +891 -0
  33. package/browser/addons/vrm/common/human_bone_mapper/unreal_mapping.py +62 -0
  34. package/browser/addons/vrm/common/human_bone_mapper/vrm_addon_mapping.py +112 -0
  35. package/browser/addons/vrm/common/human_bone_mapper/vroid_mapping.py +89 -0
  36. package/browser/addons/vrm/common/legacy_gltf.py +16 -0
  37. package/browser/addons/vrm/common/logger.py +84 -0
  38. package/browser/addons/vrm/common/mtoon0.blend +0 -0
  39. package/browser/addons/vrm/common/mtoon1.blend +0 -0
  40. package/browser/addons/vrm/common/mtoon1_outline.blend +0 -0
  41. package/browser/addons/vrm/common/mtoon_auto_setup.blend +0 -0
  42. package/browser/addons/vrm/common/mtoon_unversioned.py +62 -0
  43. package/browser/addons/vrm/common/ops/__init__.py +10 -0
  44. package/browser/addons/vrm/common/ops/export_scene.py +67 -0
  45. package/browser/addons/vrm/common/ops/icyp.py +53 -0
  46. package/browser/addons/vrm/common/ops/import_scene.py +57 -0
  47. package/browser/addons/vrm/common/ops/vrm.py +2380 -0
  48. package/browser/addons/vrm/common/ops/wm.py +167 -0
  49. package/browser/addons/vrm/common/preferences.py +362 -0
  50. package/browser/addons/vrm/common/progress.py +87 -0
  51. package/browser/addons/vrm/common/rotation.py +89 -0
  52. package/browser/addons/vrm/common/safe_removal.py +46 -0
  53. package/browser/addons/vrm/common/scene_watcher.py +230 -0
  54. package/browser/addons/vrm/common/shader.py +2243 -0
  55. package/browser/addons/vrm/common/shape_key_mapper/__init__.py +1 -0
  56. package/browser/addons/vrm/common/shape_key_mapper/arkit_mapping.py +168 -0
  57. package/browser/addons/vrm/common/shape_key_mapper/mmd_mapping.py +62 -0
  58. package/browser/addons/vrm/common/shape_key_mapper/ready_player_me_mapping.py +52 -0
  59. package/browser/addons/vrm/common/shape_key_mapper/vrchat_mapping.py +17 -0
  60. package/browser/addons/vrm/common/third_party_user_extension.py +214 -0
  61. package/browser/addons/vrm/common/transparent_z_write.blend +0 -0
  62. package/browser/addons/vrm/common/version.py +161 -0
  63. package/browser/addons/vrm/common/vrm0/__init__.py +1 -0
  64. package/browser/addons/vrm/common/vrm0/human_bone.py +662 -0
  65. package/browser/addons/vrm/common/vrm0/material_property.py +346 -0
  66. package/browser/addons/vrm/common/vrm1/__init__.py +1 -0
  67. package/browser/addons/vrm/common/vrm1/expression_preset.py +207 -0
  68. package/browser/addons/vrm/common/vrm1/human_bone.py +822 -0
  69. package/browser/addons/vrm/common/workspace.py +227 -0
  70. package/browser/addons/vrm/common/writable_context.py +77 -0
  71. package/browser/addons/vrm/documentation/en-us/animation/index.md +63 -0
  72. package/browser/addons/vrm/documentation/en-us/create-humanoid-vrm-from-scratch/index.md +131 -0
  73. package/browser/addons/vrm/documentation/en-us/create-simple-vrm-from-scratch/index.md +30 -0
  74. package/browser/addons/vrm/documentation/en-us/development/index.md +136 -0
  75. package/browser/addons/vrm/documentation/en-us/index.md +41 -0
  76. package/browser/addons/vrm/documentation/en-us/installation/index.md +152 -0
  77. package/browser/addons/vrm/documentation/en-us/material-mtoon/index.md +122 -0
  78. package/browser/addons/vrm/documentation/en-us/material-pbr/index.md +94 -0
  79. package/browser/addons/vrm/documentation/en-us/scripting-api/index.md +391 -0
  80. package/browser/addons/vrm/documentation/en-us/ui/export_scene.vrm/index.md +57 -0
  81. package/browser/addons/vrm/documentation/en-us/ui/export_scene.vrma/index.md +17 -0
  82. package/browser/addons/vrm/documentation/en-us/ui/import_scene.vrm/index.md +61 -0
  83. package/browser/addons/vrm/documentation/en-us/ui/import_scene.vrma/index.md +13 -0
  84. package/browser/addons/vrm/documentation/ja-jp/animation/index.md +57 -0
  85. package/browser/addons/vrm/documentation/ja-jp/create-humanoid-vrm-from-scratch/index.md +129 -0
  86. package/browser/addons/vrm/documentation/ja-jp/create-simple-vrm-from-scratch/index.md +29 -0
  87. package/browser/addons/vrm/documentation/ja-jp/development/index.md +137 -0
  88. package/browser/addons/vrm/documentation/ja-jp/index.md +37 -0
  89. package/browser/addons/vrm/documentation/ja-jp/installation/index.md +150 -0
  90. package/browser/addons/vrm/documentation/ja-jp/material-mtoon/index.md +113 -0
  91. package/browser/addons/vrm/documentation/ja-jp/material-pbr/index.md +90 -0
  92. package/browser/addons/vrm/documentation/ja-jp/scripting-api/index.md +389 -0
  93. package/browser/addons/vrm/documentation/ja-jp/ui/export_scene.vrm/index.md +55 -0
  94. package/browser/addons/vrm/documentation/ja-jp/ui/export_scene.vrma/index.md +19 -0
  95. package/browser/addons/vrm/documentation/ja-jp/ui/import_scene.vrm/index.md +56 -0
  96. package/browser/addons/vrm/documentation/ja-jp/ui/import_scene.vrma/index.md +14 -0
  97. package/browser/addons/vrm/editor/__init__.py +1 -0
  98. package/browser/addons/vrm/editor/extension.py +425 -0
  99. package/browser/addons/vrm/editor/extension_accessor.py +75 -0
  100. package/browser/addons/vrm/editor/handler.py +84 -0
  101. package/browser/addons/vrm/editor/khr_character/__init__.py +1 -0
  102. package/browser/addons/vrm/editor/khr_character/panel.py +69 -0
  103. package/browser/addons/vrm/editor/khr_character/property_group.py +27 -0
  104. package/browser/addons/vrm/editor/khr_xmp_json_ld/__init__.py +1 -0
  105. package/browser/addons/vrm/editor/khr_xmp_json_ld/ops.py +464 -0
  106. package/browser/addons/vrm/editor/khr_xmp_json_ld/panel.py +136 -0
  107. package/browser/addons/vrm/editor/khr_xmp_json_ld/property_group.py +83 -0
  108. package/browser/addons/vrm/editor/khr_xmp_json_ld/ui_list.py +198 -0
  109. package/browser/addons/vrm/editor/make_armature.py +709 -0
  110. package/browser/addons/vrm/editor/menu.py +147 -0
  111. package/browser/addons/vrm/editor/migration.py +297 -0
  112. package/browser/addons/vrm/editor/mtoon1/__init__.py +1 -0
  113. package/browser/addons/vrm/editor/mtoon1/handler.py +20 -0
  114. package/browser/addons/vrm/editor/mtoon1/migration.py +536 -0
  115. package/browser/addons/vrm/editor/mtoon1/ops.py +304 -0
  116. package/browser/addons/vrm/editor/mtoon1/panel.py +442 -0
  117. package/browser/addons/vrm/editor/mtoon1/property_group.py +4977 -0
  118. package/browser/addons/vrm/editor/mtoon1/scene_watcher.py +381 -0
  119. package/browser/addons/vrm/editor/node_constraint1/__init__.py +1 -0
  120. package/browser/addons/vrm/editor/node_constraint1/panel.py +317 -0
  121. package/browser/addons/vrm/editor/node_constraint1/property_group.py +25 -0
  122. package/browser/addons/vrm/editor/ops.py +471 -0
  123. package/browser/addons/vrm/editor/panel.py +315 -0
  124. package/browser/addons/vrm/editor/property_group.py +888 -0
  125. package/browser/addons/vrm/editor/search.py +682 -0
  126. package/browser/addons/vrm/editor/spring_bone1/__init__.py +1 -0
  127. package/browser/addons/vrm/editor/spring_bone1/handler.py +994 -0
  128. package/browser/addons/vrm/editor/spring_bone1/menu.py +246 -0
  129. package/browser/addons/vrm/editor/spring_bone1/migration.py +86 -0
  130. package/browser/addons/vrm/editor/spring_bone1/ops.py +1679 -0
  131. package/browser/addons/vrm/editor/spring_bone1/panel.py +605 -0
  132. package/browser/addons/vrm/editor/spring_bone1/property_group.py +1457 -0
  133. package/browser/addons/vrm/editor/spring_bone1/ui_list.py +408 -0
  134. package/browser/addons/vrm/editor/subscription.py +123 -0
  135. package/browser/addons/vrm/editor/t_pose.py +713 -0
  136. package/browser/addons/vrm/editor/validation.py +1271 -0
  137. package/browser/addons/vrm/editor/vrm0/__init__.py +1 -0
  138. package/browser/addons/vrm/editor/vrm0/gizmo_group.py +63 -0
  139. package/browser/addons/vrm/editor/vrm0/handler.py +23 -0
  140. package/browser/addons/vrm/editor/vrm0/menu.py +145 -0
  141. package/browser/addons/vrm/editor/vrm0/migration.py +761 -0
  142. package/browser/addons/vrm/editor/vrm0/ops.py +2145 -0
  143. package/browser/addons/vrm/editor/vrm0/panel.py +1333 -0
  144. package/browser/addons/vrm/editor/vrm0/property_group.py +1818 -0
  145. package/browser/addons/vrm/editor/vrm0/ui_list.py +688 -0
  146. package/browser/addons/vrm/editor/vrm1/__init__.py +1 -0
  147. package/browser/addons/vrm/editor/vrm1/handler.py +28 -0
  148. package/browser/addons/vrm/editor/vrm1/menu.py +76 -0
  149. package/browser/addons/vrm/editor/vrm1/migration.py +321 -0
  150. package/browser/addons/vrm/editor/vrm1/ops.py +2679 -0
  151. package/browser/addons/vrm/editor/vrm1/panel.py +1243 -0
  152. package/browser/addons/vrm/editor/vrm1/property_group.py +2087 -0
  153. package/browser/addons/vrm/editor/vrm1/scene_watcher.py +90 -0
  154. package/browser/addons/vrm/editor/vrm1/ui_list.py +533 -0
  155. package/browser/addons/vrm/exporter/__init__.py +1 -0
  156. package/browser/addons/vrm/exporter/abstract_base_vrm_exporter.py +628 -0
  157. package/browser/addons/vrm/exporter/export_scene.py +930 -0
  158. package/browser/addons/vrm/exporter/gltf2_export_user_extension.py +45 -0
  159. package/browser/addons/vrm/exporter/khr_character_exporter.py +34 -0
  160. package/browser/addons/vrm/exporter/vrm0_exporter.py +4020 -0
  161. package/browser/addons/vrm/exporter/vrm1_exporter.py +3682 -0
  162. package/browser/addons/vrm/exporter/vrm_animation_exporter.py +1035 -0
  163. package/browser/addons/vrm/external/__init__.py +1 -0
  164. package/browser/addons/vrm/external/auto_rig_pro_support.py +3 -0
  165. package/browser/addons/vrm/external/io_scene_gltf2_support.py +418 -0
  166. package/browser/addons/vrm/external/rigify_support.py +1 -0
  167. package/browser/addons/vrm/importer/__init__.py +1 -0
  168. package/browser/addons/vrm/importer/abstract_base_vrm_importer.py +1548 -0
  169. package/browser/addons/vrm/importer/file_handler.py +34 -0
  170. package/browser/addons/vrm/importer/gltf2_import_user_extension.py +268 -0
  171. package/browser/addons/vrm/importer/import_scene.py +646 -0
  172. package/browser/addons/vrm/importer/license_validation.py +198 -0
  173. package/browser/addons/vrm/importer/vrm0_importer.py +1723 -0
  174. package/browser/addons/vrm/importer/vrm1_importer.py +2014 -0
  175. package/browser/addons/vrm/importer/vrm_animation_importer.py +763 -0
  176. package/browser/addons/vrm/importer/vrm_diff.py +316 -0
  177. package/browser/addons/vrm/locale/__init__.py +1 -0
  178. package/browser/addons/vrm/locale/ja_jp.py +826 -0
  179. package/browser/addons/vrm/locale/ruff.toml +8 -0
  180. package/browser/addons/vrm/locale/translation_dictionary.py +10 -0
  181. package/browser/addons/vrm/locale/zh_hans.py +928 -0
  182. package/browser/addons/vrm/registration.py +670 -0
  183. package/browser/addons/vrm.json +18 -0
  184. package/browser/blender-emscripten-engine.mts +60 -128
  185. package/browser/blender-engine.mts +20 -186
  186. package/browser/blender-wali-engine.mts +35 -81
  187. package/browser/describe-thrown.mts +3 -6
  188. package/browser/document-chunks.mts +4 -16
  189. package/browser/gltf_export.py +3161 -0
  190. package/browser/heap-growth.mts +23 -0
  191. package/browser/index.ts +2 -0
  192. package/browser/protocol.ts +119 -35
  193. package/browser/pull-job.mts +2 -10
  194. package/browser/rna.ts +190 -73
  195. package/browser/runtime.ts +197 -82
  196. package/browser/session-addons.mts +33 -0
  197. package/browser/session-frame.mts +5 -24
  198. package/browser/session.py +1338 -1427
  199. package/browser/three/attach-presenter.ts +11 -39
  200. package/browser/three/blender-base64.ts +1 -36
  201. package/browser/three/blender-corner-normals.ts +1 -23
  202. package/browser/three/blender-display-shaders.json +1 -1
  203. package/browser/three/blender-display-shaders.lut +0 -0
  204. package/browser/three/blender-display-transform.ts +2 -1
  205. package/browser/three/blender-frame-columns.ts +5 -13
  206. package/browser/three/blender-graph-material.ts +18 -3
  207. package/browser/three/blender-node-graph.ts +10 -34
  208. package/browser/three/blender-physical-material.ts +2 -31
  209. package/browser/three/blender-runtime-armature.ts +7 -60
  210. package/browser/three/blender-runtime-frame.ts +9 -23
  211. package/browser/three/blender-runtime-geometry.ts +22 -26
  212. package/browser/three/blender-runtime-lighting.ts +48 -178
  213. package/browser/three/blender-runtime-shadows.ts +187 -1
  214. package/browser/three/blender-runtime-skeleton.ts +53 -1
  215. package/browser/three/blender-runtime-view.ts +505 -283
  216. package/browser/three/blender-runtime-weights.ts +9 -72
  217. package/browser/three/blender-sky.ts +13 -33
  218. package/browser/three/blender-triangulate.ts +7 -35
  219. package/browser/three/blender-viewport-sampling.ts +235 -0
  220. package/browser/three/blender-workbench-material.ts +25 -29
  221. package/browser/three/blender-workbench-outline.ts +199 -0
  222. package/browser/three/blender-world-volume.ts +62 -10
  223. package/browser/three/presenter.ts +10 -26
  224. package/browser/three/release.ts +5 -21
  225. package/browser/three/sky-precompute-worker.ts +1 -18
  226. package/browser/three/sky-worker.ts +5 -23
  227. package/browser/three/world-field-sampler.ts +12 -26
  228. package/browser/volter_three.py +9 -105
  229. package/browser/worker.ts +156 -151
  230. package/package.json +5 -2
  231. package/wasm/BUNDLE.json +17 -17
  232. package/wasm/DEPENDENCY-LICENSES.txt +14 -0
  233. package/wasm/blender_browser.data.br +0 -0
  234. package/wasm/blender_browser.js +1 -1
  235. package/wasm/blender_browser.wasm.br +0 -0
  236. package/browser/frame-transfer.mts +0 -19
  237. package/browser/three/agx-base-srgb.lut +0 -0
  238. package/browser/three/agx-look-medium-high-contrast.lut +0 -0
  239. package/browser/three/agx-look-punchy.lut +0 -0
  240. package/browser/three/blender-agx.ts +0 -235
  241. package/browser/three/blender-display-lut.ts +0 -145
  242. package/browser/three/blender-filmic.ts +0 -49
  243. package/browser/three/blender-standard.ts +0 -68
  244. package/browser/three/blender-world-visibility.ts +0 -278
  245. package/browser/three/filmic-srgb.lut +0 -0
@@ -0,0 +1,346 @@
1
+ # SPDX-License-Identifier: MIT OR GPL-3.0-or-later
2
+
3
+ from collections.abc import Mapping
4
+ from dataclasses import dataclass
5
+ from enum import Enum, auto
6
+ from typing import Final, Optional
7
+
8
+
9
+ class MaterialPropertyType(Enum):
10
+ RGB = auto()
11
+ RGBA = auto()
12
+ UV = auto()
13
+ UV_S = auto()
14
+ UV_T = auto()
15
+
16
+
17
+ class MaterialPropertyTarget(Enum):
18
+ COLOR = auto()
19
+ SHADE_COLOR = auto()
20
+ MAIN_TEX = auto()
21
+ SHADE_TEXTURE = auto()
22
+ BUMP_MAP = auto()
23
+ RIM_COLOR = auto()
24
+ RIM_TEXTURE = auto()
25
+ SPHERE_ADD = auto()
26
+ EMISSION_COLOR = auto()
27
+ EMISSION_MAP = auto()
28
+ OUTLINE_WIDTH_TEXTURE = auto()
29
+ OUTLINE_COLOR = auto()
30
+ UV_ANIM_MASK_TEXTURE = auto()
31
+
32
+
33
+ @dataclass(frozen=True)
34
+ class MaterialProperty:
35
+ name: str
36
+ type: Optional[MaterialPropertyType]
37
+ target: Optional[MaterialPropertyTarget] = None
38
+
39
+
40
+ GLTF_PROPERTIES: Final[Mapping[str, MaterialProperty]] = {
41
+ material_property.name: material_property
42
+ for material_property in (
43
+ MaterialProperty(
44
+ "_Color",
45
+ MaterialPropertyType.RGBA,
46
+ MaterialPropertyTarget.COLOR,
47
+ ),
48
+ MaterialProperty(
49
+ "_MainTex_ST",
50
+ MaterialPropertyType.UV,
51
+ MaterialPropertyTarget.MAIN_TEX,
52
+ ),
53
+ MaterialProperty(
54
+ "_MainTex_ST_S",
55
+ MaterialPropertyType.UV_S,
56
+ MaterialPropertyTarget.MAIN_TEX,
57
+ ),
58
+ MaterialProperty(
59
+ "_MainTex_ST_T",
60
+ MaterialPropertyType.UV_T,
61
+ MaterialPropertyTarget.MAIN_TEX,
62
+ ),
63
+ MaterialProperty(
64
+ "_MetallicGlossMap_ST",
65
+ MaterialPropertyType.UV,
66
+ ),
67
+ MaterialProperty(
68
+ "_MetallicGlossMap_ST_S",
69
+ MaterialPropertyType.UV_S,
70
+ ),
71
+ MaterialProperty(
72
+ "_MetallicGlossMap_ST_T",
73
+ MaterialPropertyType.UV_T,
74
+ ),
75
+ MaterialProperty(
76
+ "_BumpMap_ST",
77
+ MaterialPropertyType.UV,
78
+ MaterialPropertyTarget.BUMP_MAP,
79
+ ),
80
+ MaterialProperty(
81
+ "_BumpMap_ST_S",
82
+ MaterialPropertyType.UV_S,
83
+ MaterialPropertyTarget.BUMP_MAP,
84
+ ),
85
+ MaterialProperty(
86
+ "_BumpMap_ST_T",
87
+ MaterialPropertyType.UV_T,
88
+ MaterialPropertyTarget.BUMP_MAP,
89
+ ),
90
+ MaterialProperty(
91
+ "_ParallaxMap_ST",
92
+ MaterialPropertyType.UV,
93
+ ),
94
+ MaterialProperty(
95
+ "_ParallaxMap_ST_S",
96
+ MaterialPropertyType.UV_S,
97
+ ),
98
+ MaterialProperty(
99
+ "_ParallaxMap_ST_T",
100
+ MaterialPropertyType.UV_T,
101
+ ),
102
+ MaterialProperty(
103
+ "_OcclusionMap_ST",
104
+ MaterialPropertyType.UV,
105
+ ),
106
+ MaterialProperty(
107
+ "_OcclusionMap_ST_S",
108
+ MaterialPropertyType.UV_S,
109
+ ),
110
+ MaterialProperty(
111
+ "_OcclusionMap_ST_T",
112
+ MaterialPropertyType.UV_T,
113
+ ),
114
+ MaterialProperty(
115
+ "_EmissionColor",
116
+ MaterialPropertyType.RGB,
117
+ MaterialPropertyTarget.EMISSION_COLOR,
118
+ ),
119
+ MaterialProperty(
120
+ "_EmissionMap_ST",
121
+ MaterialPropertyType.UV,
122
+ MaterialPropertyTarget.EMISSION_MAP,
123
+ ),
124
+ MaterialProperty(
125
+ "_EmissionMap_ST_S",
126
+ MaterialPropertyType.UV_S,
127
+ MaterialPropertyTarget.EMISSION_MAP,
128
+ ),
129
+ MaterialProperty(
130
+ "_EmissionMap_ST_T",
131
+ MaterialPropertyType.UV_T,
132
+ MaterialPropertyTarget.EMISSION_MAP,
133
+ ),
134
+ MaterialProperty(
135
+ "_DetailMask_ST",
136
+ MaterialPropertyType.UV,
137
+ ),
138
+ MaterialProperty(
139
+ "_DetailMask_ST_S",
140
+ MaterialPropertyType.UV_S,
141
+ ),
142
+ MaterialProperty(
143
+ "_DetailMask_ST_T",
144
+ MaterialPropertyType.UV_T,
145
+ ),
146
+ MaterialProperty(
147
+ "_DetailAlbedoMap_ST",
148
+ MaterialPropertyType.UV,
149
+ ),
150
+ MaterialProperty(
151
+ "_DetailAlbedoMap_ST_S",
152
+ MaterialPropertyType.UV_S,
153
+ ),
154
+ MaterialProperty(
155
+ "_DetailAlbedoMap_ST_T",
156
+ MaterialPropertyType.UV_T,
157
+ ),
158
+ MaterialProperty(
159
+ "_DetailNormalMap_ST",
160
+ MaterialPropertyType.UV,
161
+ ),
162
+ MaterialProperty(
163
+ "_DetailNormalMap_ST_S",
164
+ MaterialPropertyType.UV_S,
165
+ ),
166
+ MaterialProperty(
167
+ "_DetailNormalMap_ST_T",
168
+ MaterialPropertyType.UV_T,
169
+ ),
170
+ )
171
+ }
172
+
173
+ MTOON0_PROPERTIES: Final[Mapping[str, MaterialProperty]] = {
174
+ material_property.name: material_property
175
+ for material_property in (
176
+ MaterialProperty(
177
+ "_Color",
178
+ MaterialPropertyType.RGBA,
179
+ MaterialPropertyTarget.COLOR,
180
+ ),
181
+ MaterialProperty(
182
+ "_ShadeColor",
183
+ MaterialPropertyType.RGB,
184
+ MaterialPropertyTarget.SHADE_COLOR,
185
+ ),
186
+ MaterialProperty(
187
+ "_MainTex_ST",
188
+ MaterialPropertyType.UV,
189
+ MaterialPropertyTarget.MAIN_TEX,
190
+ ),
191
+ MaterialProperty(
192
+ "_MainTex_ST_S",
193
+ MaterialPropertyType.UV_S,
194
+ MaterialPropertyTarget.MAIN_TEX,
195
+ ),
196
+ MaterialProperty(
197
+ "_MainTex_ST_T",
198
+ MaterialPropertyType.UV_T,
199
+ MaterialPropertyTarget.MAIN_TEX,
200
+ ),
201
+ MaterialProperty(
202
+ "_ShadeTexture_ST",
203
+ MaterialPropertyType.UV,
204
+ MaterialPropertyTarget.SHADE_TEXTURE,
205
+ ),
206
+ MaterialProperty(
207
+ "_ShadeTexture_ST_S",
208
+ MaterialPropertyType.UV_S,
209
+ MaterialPropertyTarget.SHADE_TEXTURE,
210
+ ),
211
+ MaterialProperty(
212
+ "_ShadeTexture_ST_T",
213
+ MaterialPropertyType.UV_T,
214
+ MaterialPropertyTarget.SHADE_TEXTURE,
215
+ ),
216
+ MaterialProperty(
217
+ "_BumpMap_ST",
218
+ MaterialPropertyType.UV,
219
+ MaterialPropertyTarget.BUMP_MAP,
220
+ ),
221
+ MaterialProperty(
222
+ "_BumpMap_ST_S",
223
+ MaterialPropertyType.UV_S,
224
+ MaterialPropertyTarget.BUMP_MAP,
225
+ ),
226
+ MaterialProperty(
227
+ "_BumpMap_ST_T",
228
+ MaterialPropertyType.UV_T,
229
+ MaterialPropertyTarget.BUMP_MAP,
230
+ ),
231
+ MaterialProperty(
232
+ "_ReceiveShadowTexture_ST",
233
+ MaterialPropertyType.UV,
234
+ ),
235
+ MaterialProperty(
236
+ "_ReceiveShadowTexture_ST_S",
237
+ MaterialPropertyType.UV_S,
238
+ ),
239
+ MaterialProperty(
240
+ "_ReceiveShadowTexture_ST_T",
241
+ MaterialPropertyType.UV_T,
242
+ ),
243
+ MaterialProperty(
244
+ "_ShadingGradeTexture_ST",
245
+ MaterialPropertyType.UV,
246
+ ),
247
+ MaterialProperty(
248
+ "_ShadingGradeTexture_ST_S",
249
+ MaterialPropertyType.UV_S,
250
+ ),
251
+ MaterialProperty(
252
+ "_ShadingGradeTexture_ST_T",
253
+ MaterialPropertyType.UV_T,
254
+ ),
255
+ MaterialProperty(
256
+ "_RimColor",
257
+ MaterialPropertyType.RGB,
258
+ MaterialPropertyTarget.RIM_COLOR,
259
+ ),
260
+ MaterialProperty(
261
+ "_RimTexture_ST",
262
+ MaterialPropertyType.UV,
263
+ MaterialPropertyTarget.RIM_TEXTURE,
264
+ ),
265
+ MaterialProperty(
266
+ "_RimTexture_ST_S",
267
+ MaterialPropertyType.UV_S,
268
+ MaterialPropertyTarget.RIM_TEXTURE,
269
+ ),
270
+ MaterialProperty(
271
+ "_RimTexture_ST_T",
272
+ MaterialPropertyType.UV_T,
273
+ MaterialPropertyTarget.RIM_TEXTURE,
274
+ ),
275
+ MaterialProperty(
276
+ "_SphereAdd_ST",
277
+ MaterialPropertyType.UV,
278
+ MaterialPropertyTarget.SPHERE_ADD,
279
+ ),
280
+ MaterialProperty(
281
+ "_SphereAdd_ST_S",
282
+ MaterialPropertyType.UV_S,
283
+ MaterialPropertyTarget.SPHERE_ADD,
284
+ ),
285
+ MaterialProperty(
286
+ "_SphereAdd_ST_T",
287
+ MaterialPropertyType.UV_T,
288
+ MaterialPropertyTarget.SPHERE_ADD,
289
+ ),
290
+ MaterialProperty(
291
+ "_EmissionColor",
292
+ MaterialPropertyType.RGB,
293
+ MaterialPropertyTarget.EMISSION_COLOR,
294
+ ),
295
+ MaterialProperty(
296
+ "_EmissionMap_ST",
297
+ MaterialPropertyType.UV,
298
+ MaterialPropertyTarget.EMISSION_MAP,
299
+ ),
300
+ MaterialProperty(
301
+ "_EmissionMap_ST_S",
302
+ MaterialPropertyType.UV_S,
303
+ MaterialPropertyTarget.EMISSION_MAP,
304
+ ),
305
+ MaterialProperty(
306
+ "_EmissionMap_ST_T",
307
+ MaterialPropertyType.UV_T,
308
+ MaterialPropertyTarget.EMISSION_MAP,
309
+ ),
310
+ MaterialProperty(
311
+ "_OutlineWidthTexture_ST",
312
+ MaterialPropertyType.UV,
313
+ MaterialPropertyTarget.OUTLINE_WIDTH_TEXTURE,
314
+ ),
315
+ MaterialProperty(
316
+ "_OutlineWidthTexture_ST_S",
317
+ MaterialPropertyType.UV_S,
318
+ MaterialPropertyTarget.OUTLINE_WIDTH_TEXTURE,
319
+ ),
320
+ MaterialProperty(
321
+ "_OutlineWidthTexture_ST_T",
322
+ MaterialPropertyType.UV_T,
323
+ MaterialPropertyTarget.OUTLINE_WIDTH_TEXTURE,
324
+ ),
325
+ MaterialProperty(
326
+ "_OutlineColor",
327
+ MaterialPropertyType.RGB,
328
+ MaterialPropertyTarget.OUTLINE_COLOR,
329
+ ),
330
+ MaterialProperty(
331
+ "_UvAnimMaskTexture_ST",
332
+ MaterialPropertyType.UV,
333
+ MaterialPropertyTarget.UV_ANIM_MASK_TEXTURE,
334
+ ),
335
+ MaterialProperty(
336
+ "_UvAnimMaskTexture_ST_S",
337
+ MaterialPropertyType.UV_S,
338
+ MaterialPropertyTarget.UV_ANIM_MASK_TEXTURE,
339
+ ),
340
+ MaterialProperty(
341
+ "_UvAnimMaskTexture_ST_T",
342
+ MaterialPropertyType.UV_T,
343
+ MaterialPropertyTarget.UV_ANIM_MASK_TEXTURE,
344
+ ),
345
+ )
346
+ }
@@ -0,0 +1 @@
1
+ # SPDX-License-Identifier: MIT OR GPL-3.0-or-later
@@ -0,0 +1,207 @@
1
+ # SPDX-License-Identifier: MIT OR GPL-3.0-or-later
2
+ from dataclasses import dataclass
3
+ from typing import Final
4
+
5
+ VRM0_PRESET_UNKNOWN: Final[str] = "unknown"
6
+
7
+
8
+ @dataclass(frozen=True)
9
+ class ExpressionPreset:
10
+ name: str
11
+ icon: str
12
+ mouth: bool
13
+ blink: bool
14
+ look_at: bool
15
+ vrm0_preset: str
16
+
17
+ @classmethod
18
+ def create(
19
+ cls,
20
+ expression_preset_generator: list["ExpressionPreset"],
21
+ *,
22
+ name: str,
23
+ icon: str,
24
+ mouth: bool,
25
+ blink: bool,
26
+ look_at: bool,
27
+ vrm0_preset: str,
28
+ ) -> "ExpressionPreset":
29
+ instance = cls(
30
+ name=name,
31
+ icon=icon,
32
+ mouth=mouth,
33
+ blink=blink,
34
+ look_at=look_at,
35
+ vrm0_preset=vrm0_preset,
36
+ )
37
+ expression_preset_generator.append(instance)
38
+ return instance
39
+
40
+
41
+ class ExpressionPresets:
42
+ _expression_preset_generator: Final[list[ExpressionPreset]] = []
43
+
44
+ HAPPY: Final[ExpressionPreset] = ExpressionPreset.create(
45
+ _expression_preset_generator,
46
+ name="happy",
47
+ icon="HEART",
48
+ mouth=False,
49
+ blink=False,
50
+ look_at=False,
51
+ vrm0_preset="joy",
52
+ )
53
+ ANGRY: Final[ExpressionPreset] = ExpressionPreset.create(
54
+ _expression_preset_generator,
55
+ name="angry",
56
+ icon="ORPHAN_DATA",
57
+ mouth=False,
58
+ blink=False,
59
+ look_at=False,
60
+ vrm0_preset="angry",
61
+ )
62
+ SAD: Final[ExpressionPreset] = ExpressionPreset.create(
63
+ _expression_preset_generator,
64
+ name="sad",
65
+ icon="MOD_FLUIDSIM",
66
+ mouth=False,
67
+ blink=False,
68
+ look_at=False,
69
+ vrm0_preset="sorrow",
70
+ )
71
+ RELAXED: Final[ExpressionPreset] = ExpressionPreset.create(
72
+ _expression_preset_generator,
73
+ name="relaxed",
74
+ icon="LIGHT_SUN",
75
+ mouth=False,
76
+ blink=False,
77
+ look_at=False,
78
+ vrm0_preset="fun",
79
+ )
80
+ SURPRISED: Final[ExpressionPreset] = ExpressionPreset.create(
81
+ _expression_preset_generator,
82
+ name="surprised",
83
+ icon="LIGHT_SUN",
84
+ mouth=False,
85
+ blink=False,
86
+ look_at=False,
87
+ vrm0_preset=VRM0_PRESET_UNKNOWN,
88
+ )
89
+ NEUTRAL: Final[ExpressionPreset] = ExpressionPreset.create(
90
+ _expression_preset_generator,
91
+ name="neutral",
92
+ icon="VIEW_ORTHO",
93
+ mouth=False,
94
+ blink=False,
95
+ look_at=False,
96
+ vrm0_preset="neutral",
97
+ )
98
+ AA: Final[ExpressionPreset] = ExpressionPreset.create(
99
+ _expression_preset_generator,
100
+ name="aa",
101
+ icon="EVENT_A",
102
+ mouth=True,
103
+ blink=False,
104
+ look_at=False,
105
+ vrm0_preset="a",
106
+ )
107
+ IH: Final[ExpressionPreset] = ExpressionPreset.create(
108
+ _expression_preset_generator,
109
+ name="ih",
110
+ icon="EVENT_I",
111
+ mouth=True,
112
+ blink=False,
113
+ look_at=False,
114
+ vrm0_preset="i",
115
+ )
116
+ OU: Final[ExpressionPreset] = ExpressionPreset.create(
117
+ _expression_preset_generator,
118
+ name="ou",
119
+ icon="EVENT_U",
120
+ mouth=True,
121
+ blink=False,
122
+ look_at=False,
123
+ vrm0_preset="u",
124
+ )
125
+ EE: Final[ExpressionPreset] = ExpressionPreset.create(
126
+ _expression_preset_generator,
127
+ name="ee",
128
+ icon="EVENT_E",
129
+ mouth=True,
130
+ blink=False,
131
+ look_at=False,
132
+ vrm0_preset="e",
133
+ )
134
+ OH: Final[ExpressionPreset] = ExpressionPreset.create(
135
+ _expression_preset_generator,
136
+ name="oh",
137
+ icon="EVENT_O",
138
+ mouth=True,
139
+ blink=False,
140
+ look_at=False,
141
+ vrm0_preset="o",
142
+ )
143
+ BLINK: Final[ExpressionPreset] = ExpressionPreset.create(
144
+ _expression_preset_generator,
145
+ name="blink",
146
+ icon="HIDE_ON",
147
+ mouth=False,
148
+ blink=True,
149
+ look_at=False,
150
+ vrm0_preset="blink",
151
+ )
152
+ BLINK_LEFT: Final[ExpressionPreset] = ExpressionPreset.create(
153
+ _expression_preset_generator,
154
+ name="blinkLeft",
155
+ icon="HIDE_ON",
156
+ mouth=False,
157
+ blink=True,
158
+ look_at=False,
159
+ vrm0_preset="blink_l",
160
+ )
161
+ BLINK_RIGHT: Final[ExpressionPreset] = ExpressionPreset.create(
162
+ _expression_preset_generator,
163
+ name="blinkRight",
164
+ icon="HIDE_ON",
165
+ mouth=False,
166
+ blink=True,
167
+ look_at=False,
168
+ vrm0_preset="blink_r",
169
+ )
170
+ LOOK_UP: Final[ExpressionPreset] = ExpressionPreset.create(
171
+ _expression_preset_generator,
172
+ name="lookUp",
173
+ icon="ANCHOR_TOP",
174
+ mouth=False,
175
+ blink=False,
176
+ look_at=True,
177
+ vrm0_preset="lookup",
178
+ )
179
+ LOOK_DOWN: Final[ExpressionPreset] = ExpressionPreset.create(
180
+ _expression_preset_generator,
181
+ name="lookDown",
182
+ icon="ANCHOR_BOTTOM",
183
+ mouth=False,
184
+ blink=False,
185
+ look_at=True,
186
+ vrm0_preset="lookdown",
187
+ )
188
+ LOOK_LEFT: Final[ExpressionPreset] = ExpressionPreset.create(
189
+ _expression_preset_generator,
190
+ name="lookLeft",
191
+ icon="ANCHOR_RIGHT",
192
+ mouth=False,
193
+ blink=False,
194
+ look_at=True,
195
+ vrm0_preset="lookleft",
196
+ )
197
+ LOOK_RIGHT: Final[ExpressionPreset] = ExpressionPreset.create(
198
+ _expression_preset_generator,
199
+ name="lookRight",
200
+ icon="ANCHOR_LEFT",
201
+ mouth=False,
202
+ blink=False,
203
+ look_at=True,
204
+ vrm0_preset="lookright",
205
+ )
206
+
207
+ all: Final[tuple[ExpressionPreset, ...]] = tuple(_expression_preset_generator)