read, write, edit and animation test.
zig-0.13
> zig build
> zig build run -- some.vrm- glTF-2.0
- bvh
- fbx
- KHR_draco_mesh_compression
- KHR_lights_punctual
- KHR_materials_clearcoat
- KHR_materials_emissive_strength
- KHR_materials_ior
- KHR_materials_iridescence
- KHR_materials_sheen
- KHR_materials_specular
- KHR_materials_transmission
- KHR_materials_unlit
- KHR_materials_variants
- KHR_materials_volume
- KHR_mesh_quantization
- KHR_texture_basisu
- KHR_texture_transform
- KHR_xmp_json_ld
- VRM
- VRMC_vrm
- VRMC_springBone
- VRMC_node_constraint
- VRMC_materials_mtoon
- VRMC_vrm_animation
+------------+
| Renderer |
+------------+
drawlilst ^
|
+------------+
|libvrm scene| <- Skinning/MorphTarget/Pose/Animation
+------------+
import ^|
|v export
+--------+
|gltfjson| <- json dom tree: ImGui Edit
+--------+
deserialize ^|
|v serialize
gltf/glb
- read / write vrm-0.x & 1.0
- edit all json node
- fbx import
- vrma export
- motion merge
- pbr material
- mtoon material
- keyframe edit
- PBR: https://github.com/JoeyDeVries/LearnOpenGL/tree/master/src/6.pbr/2.2.2.ibl_specular_textured
- PBR/Unlit: https://github.com/KhronosGroup/glTF-Sample-Viewer
- MToon: https://github.com/pixiv/three-vrm
- depends: https://github.com/mrdoob/three.js/tree/r150 (r150 required)
| msvc17 | clang16 | ||
|---|---|---|---|
| std::spanstream | not used | ||
| std::expected | c++latest |
c++2b libc++ |
OK |
| std::format | c++latest |
removed | |
| std::span | c++latest |
c++20 |
OK |
| std::string_view | c++latest |
c++20 |
OK |
| std::filesystem | c++latest |
c++20 |
OK |
| std::optional | c++latest |
c++20 |
OK |
# msvc17
$ meson setup builddir -Dcpp_std=c++latest -Dexecutable=true
$ meson compile -C builddir
# clang16 on Ubuntu22.04
$ meson setup builddir -Dcpp_std=c++2b -Dexecutable=true
$ meson compile -C builddir
- formatter clang-format: mozilla
- class, struct name PascalCase => camelCase. conflict public member name
- free function: lower_snake
- non public memver function: lower_snake
Naming conventions for variables with a wider scope than local variables.
- local variable: camelCase
- public member: PascalCase
- non public member variable: prefix
m_ - static variable: prefix
s_ - global variable: prefix
g_ - const, enum value: UPPER_SNAKE
- enum class value: Pascal
node & morphtarget
animation / springbone / constraint
udp / bvh
boneskinning
mesh / skinning / deformed_mesh
libvrm(Node hierarchy / BaseMesh)libvrm::vrm(Humanoid, Expression, SpringBone, Constraint, LookAt)libvrm::vrmalibvrm::bvhlibvrm::runtime(NodeAnimation, MorphTarget, Skinning)libvrm::serialization(Udp pose)
vrmeditor.xml
Product{Version=} を更新する