@volter/blender-engine 0.1.147 → 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,90 @@
1
+ ---
2
+ title: "物理ベースのマテリアル設定"
3
+ description: "プリンシプルBSDFシェーダーを用いた物理ベースのマテリアルを設定します。"
4
+ ---
5
+
6
+ リアルな物理ベースのマテリアルをVRMに設定します。
7
+
8
+ ![](/assets/images/material_pbr.gif)
9
+
10
+ VRM Add-on for Blenderでは、リアルな物理ベースのマテリアルの設定はBlenderのglTF
11
+ 2.0アドオンの処理と全く同じ処理を行っています。
12
+ 詳しくは該当するドキュメントを参照ください
13
+
14
+ https://docs.blender.org/manual/ja/2.93/addons/import_export/scene_gltf2.html#exported-materials
15
+
16
+ Blenderを起動したら、初めから表示されている立方体を削除します。まずその立方体にマウスの左クリックして選択します。
17
+
18
+ ![](1.png)
19
+
20
+ 選択すると、立方体の周りがオレンジ色になります。その状態でキーボードの `x`
21
+ キーを押してください。
22
+
23
+ ![](2.png)
24
+
25
+ 削除の確認表示がされるので、そのままキーボードの `Enter` キーを押してください。
26
+
27
+ ![](3.png)
28
+
29
+ 成功すると立方体が削除されます。次に、三角形からなる球を追加します。
30
+ 3Dビューポート内にカーソルを置いた状態で、キーボードの `Shift` キーを押したまま
31
+ `a` キーを押してください。 オブジェクトの追加メニューが表示されるため `メッシュ`
32
+ → `ICO球` を選択してください。
33
+
34
+ ![](4.png)
35
+
36
+ 成功すると、三角形からなる球が追加されます。
37
+
38
+ ![](5.png)
39
+
40
+ 次にマテリアルの色を確認できるようにします。
41
+ 3Dビューポート内にカーソルを置いた状態で、キーボードの `z`
42
+ キーを押すことでプレビュー表示選択メニューが出ます。
43
+ その状態でマウスを下に移動し `マテリアルプレビュー` を選択します。
44
+
45
+ ![](6.png)
46
+
47
+ 成功すると、表示の灰色っぽさが増します。とはいえ変化はほとんどないですが、デフォルトのままだと色つけても表示に反映されないので注意してください。
48
+
49
+ ![](7.png)
50
+
51
+ この状態でマテリアルの設定を行います。右下の「![](/assets/images/material_property_tab_icon.png)」アイコンのタブを選び
52
+ `新規` ボタンを押します。
53
+
54
+ ![](8.png)
55
+
56
+ `マテリアル` という名前のマテリアルが追加されます。 また `サーフェス` の設定が
57
+ `プリンシプルBSDF` になっていることを確認してください。
58
+
59
+ ![](9.png)
60
+
61
+ `プリンシプルBSDF`
62
+ を設定することで、リアルな物理ベースの質感の設定ができ、その設定をそのままVRMにエクスポートすることができます。
63
+
64
+ ![](10.png)
65
+
66
+ 次に `ベースカラー` を選択し、色選択ポップアップが出るので青を入力します。
67
+
68
+ ![](11.png)
69
+
70
+ 次に `メタリック` の値を `0.5` に設定します。
71
+
72
+ ![](12.png)
73
+
74
+ このモデルをVRMとして保存します。メニューの `ファイル` → `エクスポート` →
75
+ `VRM (.vrm)` を選択します。
76
+
77
+ ![](13.png)
78
+
79
+ ファイル保存用のウィンドウが出るので、ファイル名と保存先を入力し
80
+ `VRMをエクスポート` を押します。
81
+
82
+ ![](14.png)
83
+
84
+ 成功するとVRMファイルが指定された場所に保存されます。
85
+
86
+ ![](/assets/images/material_pbr.gif)
87
+
88
+ こちらのページで動作確認ができます。
89
+
90
+ - https://hub.vroid.com/characters/3819557420301868457/models/3988362170085862123
@@ -0,0 +1,389 @@
1
+ ---
2
+ title: "Pythonスクリプトによる自動化サンプル"
3
+ description: "Pythonスクリプトを利用してVRM関連処理を自動化するサンプルです。"
4
+ ---
5
+
6
+ Pythonスクリプトを利用してVRM関連処理を自動化するサンプルです。
7
+
8
+ ![](/assets/images/scripting_api.gif)
9
+
10
+ ## VRMファイルのインポート
11
+
12
+ ```python
13
+ import bpy
14
+
15
+ result = bpy.ops.import_scene.vrm(filepath="path_to_your_vrm_model.vrm")
16
+ if result != {"FINISHED"}:
17
+ raise Exception(f"Failed to import vrm: {result}")
18
+ ```
19
+
20
+ ## VRMファイルのエクスポート
21
+
22
+ ```python
23
+ import bpy
24
+ from pathlib import Path
25
+
26
+ output_filepath = str(Path.home() / "path_to_your_new_vrm_model.vrm")
27
+ result = bpy.ops.export_scene.vrm(filepath=output_filepath)
28
+ if result != {"FINISHED"}:
29
+ raise Exception(f"Failed to export vrm: {result}")
30
+
31
+ print(f"{output_filepath=}")
32
+ ```
33
+
34
+ ## VRMメタデータの設定
35
+
36
+ VRM 1.0のモデルを想定します。
37
+
38
+ ```python
39
+ import bpy
40
+
41
+ context = bpy.context
42
+
43
+ bpy.ops.object.add(type="ARMATURE", location=(0, 0, 0))
44
+
45
+ armature = context.object
46
+ armature.data.vrm_addon_extension.spec_version = "1.0"
47
+
48
+ meta = armature.data.vrm_addon_extension.vrm1.meta
49
+ meta.vrm_name = "Your Model Name"
50
+ meta.version = "1.0.0"
51
+ meta.authors.add().value = "Author 1"
52
+ meta.copyright_information = "Copyright Information"
53
+ meta.contact_information = "Contact Information"
54
+ meta.references.add().value = "https://example.com"
55
+ meta.third_party_licenses = "Third Party Licenses"
56
+ thumbnail_image = context.blend_data.images.new(name="New Image", width=32, height=32)
57
+ meta.thumbnail_image = thumbnail_image
58
+ meta.avatar_permission = "onlyAuthor" # or "onlySeparatelyLicensedPerson", "everyone"
59
+ meta.allow_excessively_violent_usage = False
60
+ meta.allow_excessively_sexual_usage = False
61
+ meta.commercial_usage = "personalNonProfit" # or "personalProfit", "corporation"
62
+ meta.allow_political_or_religious_usage = False
63
+ meta.allow_antisocial_or_hate_usage = False
64
+ meta.credit_notation = "required" # or "unnecessary"
65
+ meta.allow_redistribution = False
66
+ meta.modification = (
67
+ "prohibited" # or "allowModification", "allowModificationRedistribution"
68
+ )
69
+ meta.other_license_url = ""
70
+ ```
71
+
72
+ ## VRMヒューマンボーンの設定
73
+
74
+ VRM 1.0のモデルを想定します。
75
+
76
+ ```python
77
+ import bpy
78
+
79
+ context = bpy.context
80
+
81
+ bpy.ops.object.add(type="ARMATURE", location=(0, 0, 0))
82
+ armature = context.object
83
+ armature.data.vrm_addon_extension.spec_version = "1.0"
84
+
85
+ bpy.ops.object.mode_set(mode="EDIT")
86
+
87
+ hips_bone = armature.data.edit_bones.new("hips")
88
+ hips_bone.head = (0, 0, 0.5)
89
+ hips_bone.tail = (0, 0, 0.75)
90
+
91
+ spine_bone = armature.data.edit_bones.new("spine")
92
+ spine_bone.parent = hips_bone
93
+ spine_bone.head = (0, 0, 0.75)
94
+ spine_bone.tail = (0, 0, 1)
95
+
96
+ bpy.ops.object.mode_set(mode="OBJECT")
97
+
98
+ armature.data.vrm_addon_extension.vrm1.humanoid.human_bones.hips.node.bone_name = "hips"
99
+ armature.data.vrm_addon_extension.vrm1.humanoid.human_bones.spine.node.bone_name = (
100
+ "spine"
101
+ )
102
+ ```
103
+
104
+ ## VRM MToonマテリアルの値を設定
105
+
106
+ ```python
107
+ import bpy
108
+
109
+ context = bpy.context
110
+
111
+ image = context.blend_data.images.new(name="New Image", width=32, height=32)
112
+
113
+ material = context.blend_data.materials.new("New MToon Material")
114
+ material.vrm_addon_extension.mtoon1.enabled = True
115
+
116
+ gltf = material.vrm_addon_extension.mtoon1
117
+ gltf.pbr_metallic_roughness.base_color_factor = (0, 1, 0, 1)
118
+ gltf.pbr_metallic_roughness.base_color_texture.index.source = image
119
+
120
+ # base_color_texture以外のテクスチャにも同様の設定が可能
121
+ gltf.pbr_metallic_roughness.base_color_texture.index.sampler.mag_filter = (
122
+ "NEAREST" # or "LINEAR"
123
+ )
124
+ gltf.pbr_metallic_roughness.base_color_texture.index.sampler.min_filter = "NEAREST" # or "LINEAR", "NEAREST_MIPMAP_NEAREST", "LINEAR_MIPMAP_NEAREST", "NEAREST_MIPMAP_LINEAR", "LINEAR_MIPMAP_LINEAR"
125
+ gltf.pbr_metallic_roughness.base_color_texture.index.sampler.wrap_s = (
126
+ "REPEAT" # or "CLAMP_TO_EDGE", "MIRRORED_REPEAT"
127
+ )
128
+ gltf.pbr_metallic_roughness.base_color_texture.index.sampler.wrap_t = (
129
+ "REPEAT" # or "CLAMP_TO_EDGE", "MIRRORED_REPEAT"
130
+ )
131
+ gltf.pbr_metallic_roughness.base_color_texture.extensions.khr_texture_transform.offset = (
132
+ 0,
133
+ 0,
134
+ )
135
+ gltf.pbr_metallic_roughness.base_color_texture.extensions.khr_texture_transform.scale = (
136
+ 1,
137
+ 1,
138
+ )
139
+
140
+ gltf.alpha_mode = "OPAQUE" # or "MASK", "BLEND"
141
+ gltf.double_sided = False
142
+ gltf.alpha_cutoff = 0.5
143
+ gltf.normal_texture.index.source = image
144
+ gltf.normal_texture.scale = 1
145
+ gltf.emissive_texture.index.source = image
146
+ gltf.emissive_factor = (0, 0, 0)
147
+ gltf.extensions.khr_materials_emissive_strength.emissive_strength = 1.0
148
+
149
+ mtoon = gltf.extensions.vrmc_materials_mtoon
150
+ mtoon.transparent_with_z_write = False
151
+ mtoon.render_queue_offset_number = 0
152
+ mtoon.shade_multiply_texture.index.source = image
153
+ mtoon.shade_color_factor = (0, 0, 1)
154
+ mtoon.shading_shift_texture.index.source = image
155
+ mtoon.shading_shift_texture.scale = 1
156
+ mtoon.shading_shift_factor = 0
157
+ mtoon.shading_toony_factor = 0
158
+ mtoon.gi_equalization_factor = 0
159
+ mtoon.matcap_factor = (1, 1, 1)
160
+ mtoon.matcap_texture.index.source = image
161
+ mtoon.parametric_rim_color_factor = (0, 0, 0)
162
+ mtoon.rim_multiply_texture.index.source = image
163
+ mtoon.rim_lighting_mix_factor = 0
164
+ mtoon.parametric_rim_fresnel_power_factor = 1.0
165
+ mtoon.parametric_rim_lift_factor = 1.0
166
+ mtoon.outline_width_mode = "worldCoordinates" # or "none", "screenCoordinates"
167
+ mtoon.outline_width_factor = 0.01
168
+ mtoon.outline_width_multiply_texture.index.source = image
169
+ mtoon.outline_color_factor = (0, 0, 0)
170
+ mtoon.outline_lighting_mix_factor = 0
171
+ mtoon.uv_animation_mask_texture.index.source = image
172
+ mtoon.uv_animation_scroll_x_speed_factor = 0
173
+ mtoon.uv_animation_scroll_y_speed_factor = 0
174
+ mtoon.uv_animation_rotation_speed_factor = 0
175
+ ```
176
+
177
+ ## VRMのキャラクターを動的に生成しファイルにエクスポート
178
+
179
+ ![](/assets/images/humanoid.gif)
180
+
181
+ [人型のVRMモデルを作る](../create-humanoid-vrm-from-scratch/)の手順をスクリプトで自動化し、VRMとしてエクスポートします。
182
+
183
+ ```python
184
+ from pathlib import Path
185
+
186
+ import bpy
187
+
188
+ # 初期化
189
+
190
+ if bpy.app.module:
191
+ bpy.ops.preferences.addon_enable(module="io_scene_vrm")
192
+
193
+ # アーマチュアを作成
194
+
195
+ armature_data = bpy.data.armatures.new("Armature")
196
+ armature_object = bpy.data.objects.new("Armature", armature_data)
197
+ bpy.context.scene.collection.objects.link(armature_object)
198
+ bpy.context.view_layer.objects.active = armature_object
199
+
200
+ bpy.ops.object.mode_set(mode="EDIT")
201
+
202
+ hips_bone = armature_data.edit_bones.new("hips")
203
+ hips_bone.head = (0, 0, 0.5)
204
+ hips_bone.tail = (0, 1, 0.5)
205
+ hips_bone_name = hips_bone.name
206
+
207
+ right_upper_leg_bone = armature_data.edit_bones.new("upper_leg.R")
208
+ right_upper_leg_bone.head = (-0.125, 0, 0.5)
209
+ right_upper_leg_bone.tail = (-0.125, 1, 0.5)
210
+ right_upper_leg_bone.parent = hips_bone
211
+ right_upper_leg_bone_name = right_upper_leg_bone.name
212
+
213
+ right_lower_leg_bone = armature_data.edit_bones.new("lower_leg.R")
214
+ right_lower_leg_bone.head = (-0.125, 0, 0.25)
215
+ right_lower_leg_bone.tail = (-0.125, 1, 0.25)
216
+ right_lower_leg_bone.parent = right_upper_leg_bone
217
+ right_lower_leg_bone_name = right_lower_leg_bone.name
218
+
219
+ right_foot_bone = armature_data.edit_bones.new("foot.R")
220
+ right_foot_bone.head = (-0.125, 0, 0)
221
+ right_foot_bone.tail = (-0.125, 1, 0)
222
+ right_foot_bone.parent = right_lower_leg_bone
223
+ right_foot_bone_name = right_foot_bone.name
224
+
225
+ left_upper_leg_bone = armature_data.edit_bones.new("upper_leg.L")
226
+ left_upper_leg_bone.head = (0.125, 0, 0.5)
227
+ left_upper_leg_bone.tail = (0.125, 1, 0.5)
228
+ left_upper_leg_bone.parent = hips_bone
229
+ left_upper_leg_bone_name = left_upper_leg_bone.name
230
+
231
+ left_lower_leg_bone = armature_data.edit_bones.new("lower_leg.L")
232
+ left_lower_leg_bone.head = (0.125, 0, 0.25)
233
+ left_lower_leg_bone.tail = (0.125, 1, 0.25)
234
+ left_lower_leg_bone.parent = left_upper_leg_bone
235
+ left_lower_leg_bone_name = left_lower_leg_bone.name
236
+
237
+ left_foot_bone = armature_data.edit_bones.new("foot.L")
238
+ left_foot_bone.head = (0.125, 0, 0)
239
+ left_foot_bone.tail = (0.125, 1, 0)
240
+ left_foot_bone.parent = left_lower_leg_bone
241
+ left_foot_bone_name = left_foot_bone.name
242
+
243
+ spine_bone = armature_data.edit_bones.new("spine")
244
+ spine_bone.head = (0, 0, 0.625)
245
+ spine_bone.tail = (0, 1, 0.625)
246
+ spine_bone.parent = hips_bone
247
+ spine_bone_name = spine_bone.name
248
+
249
+ right_upper_arm_bone = armature_data.edit_bones.new("upper_arm.R")
250
+ right_upper_arm_bone.head = (-0.125, 0, 0.75)
251
+ right_upper_arm_bone.tail = (-0.125, 1, 0.75)
252
+ right_upper_arm_bone.parent = spine_bone
253
+ right_upper_arm_bone_name = right_upper_arm_bone.name
254
+
255
+ right_lower_arm_bone = armature_data.edit_bones.new("lower_arm.R")
256
+ right_lower_arm_bone.head = (-0.25, 0, 0.75)
257
+ right_lower_arm_bone.tail = (-0.25, 1, 0.75)
258
+ right_lower_arm_bone.parent = right_upper_arm_bone
259
+ right_lower_arm_bone_name = right_lower_arm_bone.name
260
+
261
+ right_hand_bone = armature_data.edit_bones.new("hand.R")
262
+ right_hand_bone.head = (-0.375, 0, 0.75)
263
+ right_hand_bone.tail = (-0.375, 1, 0.75)
264
+ right_hand_bone.parent = right_lower_arm_bone
265
+ right_hand_bone_name = right_hand_bone.name
266
+
267
+ left_upper_arm_bone = armature_data.edit_bones.new("upper_arm.L")
268
+ left_upper_arm_bone.head = (0.125, 0, 0.75)
269
+ left_upper_arm_bone.tail = (0.125, 1, 0.75)
270
+ left_upper_arm_bone.parent = spine_bone
271
+ left_upper_arm_bone_name = left_upper_arm_bone.name
272
+
273
+ left_lower_arm_bone = armature_data.edit_bones.new("lower_arm.L")
274
+ left_lower_arm_bone.head = (0.25, 0, 0.75)
275
+ left_lower_arm_bone.tail = (0.25, 1, 0.75)
276
+ left_lower_arm_bone.parent = left_upper_arm_bone
277
+ left_lower_arm_bone_name = left_lower_arm_bone.name
278
+
279
+ left_hand_bone = armature_data.edit_bones.new("hand.L")
280
+ left_hand_bone.head = (0.375, 0, 0.75)
281
+ left_hand_bone.tail = (0.375, 1, 0.75)
282
+ left_hand_bone.parent = left_lower_arm_bone
283
+ left_hand_bone_name = left_hand_bone.name
284
+
285
+ head_bone = armature_data.edit_bones.new("head")
286
+ head_bone.head = (0, 0, 0.75)
287
+ head_bone.tail = (0, 1, 0.75)
288
+ head_bone.parent = spine_bone
289
+ head_bone_name = head_bone.name
290
+
291
+ bpy.ops.object.mode_set(mode="OBJECT")
292
+
293
+ # VRM Human Boneを割り当て
294
+
295
+ humanoid = armature_data.vrm_addon_extension.vrm1.humanoid
296
+ humanoid.human_bones.head.node.bone_name = head_bone_name
297
+ humanoid.human_bones.spine.node.bone_name = spine_bone_name
298
+ humanoid.human_bones.hips.node.bone_name = hips_bone_name
299
+ humanoid.human_bones.right_upper_arm.node.bone_name = right_upper_arm_bone_name
300
+ humanoid.human_bones.right_lower_arm.node.bone_name = right_lower_arm_bone_name
301
+ humanoid.human_bones.right_hand.node.bone_name = right_hand_bone_name
302
+ humanoid.human_bones.left_upper_arm.node.bone_name = left_upper_arm_bone_name
303
+ humanoid.human_bones.left_lower_arm.node.bone_name = left_lower_arm_bone_name
304
+ humanoid.human_bones.left_hand.node.bone_name = left_hand_bone_name
305
+ humanoid.human_bones.right_upper_leg.node.bone_name = right_upper_leg_bone_name
306
+ humanoid.human_bones.right_lower_leg.node.bone_name = right_lower_leg_bone_name
307
+ humanoid.human_bones.right_foot.node.bone_name = right_foot_bone_name
308
+ humanoid.human_bones.left_upper_leg.node.bone_name = left_upper_leg_bone_name
309
+ humanoid.human_bones.left_lower_leg.node.bone_name = left_lower_leg_bone_name
310
+ humanoid.human_bones.left_foot.node.bone_name = left_foot_bone_name
311
+
312
+ # メッシュを追加
313
+
314
+ bpy.ops.mesh.primitive_uv_sphere_add(radius=0.25)
315
+ head = bpy.context.active_object
316
+ head.parent = armature_object
317
+ head.parent_bone = humanoid.human_bones.head.node.bone_name
318
+ head.parent_type = "BONE"
319
+
320
+ bpy.ops.mesh.primitive_cube_add(size=0.4)
321
+ spine = bpy.context.active_object
322
+ spine.parent = armature_object
323
+ spine.parent_bone = humanoid.human_bones.spine.node.bone_name
324
+ spine.parent_type = "BONE"
325
+
326
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
327
+ left_upper_arm = bpy.context.active_object
328
+ left_upper_arm.parent = armature_object
329
+ left_upper_arm.parent_bone = humanoid.human_bones.left_upper_arm.node.bone_name
330
+ left_upper_arm.parent_type = "BONE"
331
+
332
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
333
+ left_hand = bpy.context.active_object
334
+ left_hand.parent = armature_object
335
+ left_hand.parent_bone = humanoid.human_bones.left_hand.node.bone_name
336
+ left_hand.parent_type = "BONE"
337
+
338
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
339
+ right_upper_arm = bpy.context.active_object
340
+ right_upper_arm.parent = armature_object
341
+ right_upper_arm.parent_bone = humanoid.human_bones.right_upper_arm.node.bone_name
342
+ right_upper_arm.parent_type = "BONE"
343
+
344
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
345
+ right_hand = bpy.context.active_object
346
+ right_hand.parent = armature_object
347
+ right_hand.parent_bone = humanoid.human_bones.right_hand.node.bone_name
348
+ right_hand.parent_type = "BONE"
349
+
350
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
351
+ left_upper_leg = bpy.context.active_object
352
+ left_upper_leg.parent = armature_object
353
+ left_upper_leg.parent_bone = humanoid.human_bones.left_upper_leg.node.bone_name
354
+ left_upper_leg.parent_type = "BONE"
355
+
356
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
357
+ right_upper_leg = bpy.context.active_object
358
+ right_upper_leg.parent = armature_object
359
+ right_upper_leg.parent_bone = humanoid.human_bones.right_upper_leg.node.bone_name
360
+ right_upper_leg.parent_type = "BONE"
361
+
362
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
363
+ left_lower_leg = bpy.context.active_object
364
+ left_lower_leg.parent = armature_object
365
+ left_lower_leg.parent_bone = humanoid.human_bones.left_lower_leg.node.bone_name
366
+ left_lower_leg.parent_type = "BONE"
367
+
368
+ bpy.ops.mesh.primitive_ico_sphere_add(radius=0.1)
369
+ right_lower_leg = bpy.context.active_object
370
+ right_lower_leg.parent = armature_object
371
+ right_lower_leg.parent_bone = humanoid.human_bones.right_lower_leg.node.bone_name
372
+ right_lower_leg.parent_type = "BONE"
373
+
374
+ # メタデータを設定
375
+
376
+ meta = armature_data.vrm_addon_extension.vrm1.meta
377
+ meta.vrm_name = "Your Model Name"
378
+ meta.version = "1.0.0"
379
+
380
+ # ファイルに保存
381
+
382
+ output_filepath = str(Path(__file__).parent / "path_to_your_vrm_model.vrm")
383
+ result = bpy.ops.export_scene.vrm(filepath=output_filepath)
384
+ if result != {"FINISHED"}:
385
+ message = f"Failed to export vrm: {result}"
386
+ raise RuntimeError(message)
387
+
388
+ print(f'Saved the VRM file to "{output_filepath}"')
389
+ ```
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: "VRM(.vrm)のエクスポート"
3
+ description: "BlenderからVRM(.vrm)を書き出す手順と各オプションを説明します。"
4
+ ---
5
+
6
+ メニューの `ファイル` → `エクスポート` → `VRM (.vrm)`
7
+ を選択することで、VRMのエクスポートダイアログが表示されます。 `保存`
8
+ ボタンを押すと、現在編集中のアーマチュアがVRMファイルとしてエクスポートされます。
9
+
10
+ ![](1.png)
11
+
12
+ ## オプション
13
+
14
+ ### ✅ 非表示のオブジェクトを含める
15
+
16
+ エクスポート時に非表示のオブジェクトを含めます。
17
+ 例外的に、エクスポート対象のアーマチュアだけは非表示でもエクスポートします。
18
+
19
+ ### ✅ 選択されたオブジェクトのみ
20
+
21
+ 選択中のオブジェクトのみエクスポートします。
22
+
23
+ ### ✅ 高度なオプションを有効にする
24
+
25
+ 【高度なオプション】の項目を有効にします。
26
+ これらの項目を変更すると、VRMファイルのアプリケーション間の互換性が失われることがあるので注意してください。
27
+
28
+ ### ✅ 【高度なオプション】【VRM 1.0のみ】スパースアクセッサを利用する
29
+
30
+ シェイプキーのエクスポート時にスパースアクセッサを利用します。
31
+ シェイプキーを利用しているモデルでファイルサイズが削減される可能性がありますが、
32
+ [UniVRM 0.115.0以下](https://github.com/saturday06/VRM-Addon-for-Blender/issues/381#issuecomment-1838365762)を利用している古いアプリでVRMファイルが読めなくなります。
33
+
34
+ ### ✅ 【高度なオプション】【VRM 1.0のみ】全てのボーンウェイトをエクスポートする
35
+
36
+ 全てのボーンウェイトをエクスポートします。VRMは仕様上は、
37
+ 1つの頂点に対して255個までのボーンウェイトを割り当てることができます。
38
+ しかし、ほとんどのVRMを扱うアプリケーションは、1つの頂点にあたり4つのウェイトまでしか解釈しません。
39
+ そのため、デフォルトでは表示互換性のためエクスポートするウェイトは4つまでに制限しています。
40
+ この制限を外し、すべてのボーンウェイトをエクスポートするようにします。
41
+ アプリケーションによってメッシュが大きく崩れることがあるため、慎重にウェイトを設定するか、
42
+ エクスポート結果を特定のアプリケーションのみで利用する場合にご利用ください。
43
+
44
+ ### ✅ 【高度なオプション】【VRM 1.0のみ】ライトをエクスポートする
45
+
46
+ ライトオブジェクトをエクスポート対象に含めます。VRMにおけるライトの扱いは現在コンセンサスが無く、
47
+ どのような結果になるかが予測できません。ライトを扱えるアプリケーションのみで利用する場合にご利用ください。
48
+
49
+ ### ✅ 【高度なオプション】【VRM 1.0のみ】glTFアニメーションをエクスポートする
50
+
51
+ glTFアニメーションをエクスポートします。デフォルトではglTFアニメーションはエクスポートしません。
52
+ VRMファイルはモーションのリターゲッティングをすることが前提のフォーマットのため、
53
+ そのままglTFのアニメーションがそのまま適用できないことが多いです。 代わりに
54
+ [VRM Animation](https://vrm-addon-for-blender.info/ja-jp/animation/)
55
+ の利用を検討してください。
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: "VRM Animation(.vrma)のエクスポート"
3
+ description: "BlenderからVRM Animation(.vrma)を書き出す方法と含まれるデータを説明します。"
4
+ ---
5
+
6
+ メニューの `ファイル` → `エクスポート` → `VRM Animation (.vrma)`
7
+ を選択することで、 [VRM Animation](../../animation/)
8
+ のエクスポートダイアログが表示されます。
9
+
10
+ ![](1.png)
11
+
12
+ `保存` ボタンを押すと、シーンに配置されているVRM
13
+ 1.0に割り当てられているアニメーションのうち、
14
+ 次に条件に当てはまるものがVRMAファイルとしてエクスポートされます。
15
+
16
+ - VRM Humanoidボーンに割り当てられているボーンの回転値
17
+ - VRM Humanoidボーンのうち、Hipsボーンに割り当てられているボーンの移動値
18
+ - VRM Expressionsのプレビューの値
19
+ - VRM Look AtのPreview Targetに指定されているオブジェクトの移動値
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: "VRM(.vrm)のインポート"
3
+ description: "BlenderにVRM(.vrm)を読み込み、インポート設定を調整する方法を説明します。"
4
+ ---
5
+
6
+ メニューの `ファイル` → `インポート` → `VRM (.vrm)`
7
+ を選択することで、VRMのインポートダイアログが表示されます。VRMファイルを選択して
8
+ `開く` ボタンを押すとシーンにVRMファイルが展開されます。
9
+
10
+ ![](1.png)
11
+
12
+ ## オプション
13
+
14
+ ### ✅ テクスチャ画像をフォルダに展開
15
+
16
+ VRMファイルの配置場所と同じ場所にフォルダを作成し、VRMファイル内に存在するテクスチャを展開します。
17
+ チェックをしない場合、テクスチャは現在編集中の `.blend`
18
+ ファイル内に埋め込まれます。
19
+
20
+ ### ✅ 既に存在するテクスチャ画像のフォルダを上書きしない
21
+
22
+ テクスチャ画像用のフォルダ作成時に、既にフォルダが存在している場合は連番を付与し、
23
+ フォルダの上書きが発生しないようにします。
24
+
25
+ ### ✅ 3Dビューをマテリアルプレビューに設定
26
+
27
+ VRMファイルの読み込み後、3Dビューポートのシェーディング設定をマテリアルプレビューに設定します。
28
+ こちら、Blenderに慣れている人にとってはあまり意味のない設定ではありますが、
29
+ まだ慣れていない人がインポート直後に、別プラットフォームでの表示とほぼ同じ表示を再現することによって、
30
+ テンションを上げて欲しいという思いがあります。
31
+
32
+ ### ✅ ビュー変換を「標準」に設定
33
+
34
+ VRMファイルの読み込み後、カラーマネージメントのビュー変換を「標準」に設定します。
35
+ VRMファイルはBlenderのデフォルトのビュー変換設定と相性が悪く、若干くすんだ表示になることが多いです。
36
+ ビュー変換を「標準」にすることで、この問題を解決します。
37
+
38
+ ### ✅ アーマチュアのビューポート表示を「ワイヤーフレーム」に設定
39
+
40
+ VRMファイルの読み込み後、アーマチュアのビューポート表示を「ワイヤーフレーム」に設定します。
41
+
42
+ ### ✅ アーマチュアを最前面に表示
43
+
44
+ VRMファイルの読み込み後、アーマチュアを最前面に表示します。
45
+
46
+ ### ✅ ボーンの形状表示をデフォルトのものにする
47
+
48
+ VRMの親仕様であるglTF形式の公式インポーターは、ボーンの形状表示をICO球などに自動で変更することがあります。
49
+ しかし、アドオン作者としては、主に人型のアーマチュアが展開されるVRMファイルに対してはこの動作は不自然に感じています。
50
+ これを抑制し、デフォルトの角錐に設定します。
51
+
52
+ ### ✅ MToonアウトラインのプレビューを有効にする
53
+
54
+ VRMに含まれるトゥーンシェーダーである「MToon」は、アニメ風のアウトラインの描画機能を含みます。
55
+ こちらは背面法により実装されているため、有効にすると統計オーバーレイに表示される頂点数が増えたり、
56
+ ビューポートの動作負荷が高まることがあります。無効にすることで、これらの問題を解決できます。
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "VRM Animation(.vrma)のインポート"
3
+ description: "VRM 1.0モデルにVRM Animation(.vrma)を読み込む手順を説明します。"
4
+ ---
5
+
6
+ メニューの `ファイル` → `インポート` → `VRM Animation (.vrma)`
7
+ を選択することで、 [VRM Animation](../../animation/)
8
+ のインポートダイアログが表示されます。
9
+
10
+ ![](1.png)
11
+
12
+ VRMAファイルを選択して `開く` ボタンを押すと、 現在のシーンのVRM
13
+ 1.0モデルにアニメーションが反映されます。 現在のシーンにVRM
14
+ 1.0モデルが存在しない場合、最小のモデルを自動生成します。
@@ -0,0 +1 @@
1
+ # SPDX-License-Identifier: MIT OR GPL-3.0-or-later