{"id":16699364,"url":"https://github.com/ousttrue/vrmeditor","last_synced_at":"2025-04-10T03:41:42.833Z","repository":{"id":150706817,"uuid":"615256620","full_name":"ousttrue/VrmEditor","owner":"ousttrue","description":"vrm editor","archived":false,"fork":false,"pushed_at":"2024-11-07T04:23:44.000Z","size":6129,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T05:01:41.583Z","etag":null,"topics":["bvh","gltf","vrm"],"latest_commit_sha":null,"homepage":"https://ousttrue.github.io/VrmEditor/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ousttrue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.rtf","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-17T09:43:26.000Z","updated_at":"2025-03-06T20:59:57.000Z","dependencies_parsed_at":"2024-11-07T05:32:41.726Z","dependency_job_id":null,"html_url":"https://github.com/ousttrue/VrmEditor","commit_stats":null,"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ousttrue%2FVrmEditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ousttrue%2FVrmEditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ousttrue%2FVrmEditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ousttrue%2FVrmEditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ousttrue","download_url":"https://codeload.github.com/ousttrue/VrmEditor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154964,"owners_count":21056541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bvh","gltf","vrm"],"created_at":"2024-10-12T18:06:46.249Z","updated_at":"2025-04-10T03:41:42.811Z","avatar_url":"https://github.com/ousttrue.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vrmeditor\n\nread, write, edit and animation test.\n\n![vrmeditor](./docs/vrmeditor.jpg)\n\n## TODO: restart\n\n`zig-0.13`\n\n```sh\n\u003e zig build\n\u003e zig build run -- some.vrm\n```\n\n## features\n\n- [x] glTF-2.0\n- [x] bvh\n- [ ] fbx\n\n### glTF Extensions\n\n- [ ] KHR_draco_mesh_compression\n- [ ] [KHR_lights_punctual](https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_lights_punctual)\n- [ ] KHR_materials_clearcoat\n- [ ] [KHR_materials_emissive_strength](https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_emissive_strength)\n- [ ] KHR_materials_ior\n- [ ] KHR_materials_iridescence\n- [ ] KHR_materials_sheen\n- [ ] KHR_materials_specular\n- [ ] KHR_materials_transmission\n- [x] [KHR_materials_unlit](https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_unlit)\n- [ ] KHR_materials_variants\n- [ ] KHR_materials_volume\n- [ ] KHR_mesh_quantization\n- [ ] KHR_texture_basisu\n- [ ] [KHR_texture_transform](https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_texture_transform)\n- [ ] KHR_xmp_json_ld\n- [x] [VRM](https://github.com/vrm-c/vrm-specification/tree/master/specification/0.0)\n- [x] [VRMC_vrm](https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_vrm-1.0)\n- [x] [VRMC_springBone](https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_springBone-1.0)\n- [x] [VRMC_node_constraint](https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0)\n- [x] [VRMC_materials_mtoon](https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_materials_mtoon-1.0)\n- [ ] [VRMC_vrm_animation](https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_vrm_animation-1.0)\n\n## Memo\n\n```\n        +------------+\n        | Renderer   |\n        +------------+\n  drawlilst ^\n            |\n        +------------+\n        |libvrm scene| \u003c- Skinning/MorphTarget/Pose/Animation\n        +------------+\n     import ^|\n            |v export\n        +--------+\n        |gltfjson| \u003c- json dom tree: ImGui Edit\n        +--------+\ndeserialize ^|\n            |v serialize\n        gltf/glb\n```\n\n## milestone\n\n### 1\n\n- [x] read / write vrm-0.x \u0026 1.0\n\n### 2\n\n- [ ] edit all json node\n\n### x\n\n- fbx import\n- vrma export\n- motion merge\n- pbr material\n- mtoon material\n- keyframe edit\n\n## dependencies\n\n- [imgui](https://github.com/ocornut/imgui)\n  - [ImGuizmo](https://github.com/CedricGuillemet/ImGuizmo)\n  - [ImGuiFileDialog](https://github.com/dfranx/ImFileDialog)\n  - [ImNodes](https://github.com/Nelarius/imnodes)\n- [glfw3](https://www.glfw.org/)\n- [glew](https://github.com/nigels-com/glew)\n- [DirectXMath](https://github.com/microsoft/DirectXMath)\n- [lua-jit](https://luajit.org/)\n- [stb](https://github.com/nothings/stb)\n- [IconFontCppHeaders](https://github.com/juliettef/IconFontCppHeaders)\n- [asio](https://think-async.com/Asio/)\n- [simplefilewatcher](https://code.google.com/archive/p/simplefilewatcher/)\n- [plog](https://github.com/SergiusTheBest/plog)\n\n### test\n\n- [googletest](https://github.com/google/googletest)\n\n### shaders\n\n- PBR: https://github.com/JoeyDeVries/LearnOpenGL/tree/master/src/6.pbr/2.2.2.ibl_specular_textured\n- PBR/Unlit: https://github.com/KhronosGroup/glTF-Sample-Viewer\n- MToon: https://github.com/pixiv/three-vrm\n  - depends: https://github.com/mrdoob/three.js/tree/r150 (r150 required)\n\n### subprojects\n\n- [gltfjson](https://github.com/ousttrue/gltfjson) (JSON utility)\n- [grapho](https://github.com/ousttrue/grapho) (OpenGL/Imgui wrapper)\n- [cuber](https://github.com/ousttrue/cuber) (bone draw helper)\n\n## build\n\n|                  | msvc17      | clang16          |          |\n| ---------------- | ----------- | ---------------- | -------- |\n| std::spanstream  |             |                  | not used |\n| std::expected    | `c++latest` | `c++2b` `libc++` | OK       |\n| std::format      | `c++latest` |                  | removed  |\n| std::span        | `c++latest` | `c++20`          | OK       |\n| std::string_view | `c++latest` | `c++20`          | OK       |\n| std::filesystem  | `c++latest` | `c++20`          | OK       |\n| std::optional    | `c++latest` | `c++20`          | OK       |\n\n```\n# msvc17\n$ meson setup builddir -Dcpp_std=c++latest -Dexecutable=true\n$ meson compile -C builddir\n```\n\n```\n# clang16 on Ubuntu22.04\n$ meson setup builddir -Dcpp_std=c++2b -Dexecutable=true\n$ meson compile -C builddir\n```\n\n## naming plan\n\n- formatter clang-format: mozilla\n- class, struct name PascalCase =\u003e camelCase. conflict public member name\n- free function: lower_snake\n- non public memver function: lower_snake\n\n### variables\n\nNaming conventions for variables with a wider scope than local variables.\n\n- local variable: camelCase\n- public member: PascalCase\n- non public member variable: prefix `m_`\n- static variable: prefix `s_`\n- global variable: prefix `g_`\n- const, enum value: UPPER_SNAKE\n- enum class value: Pascal\n\n### folder / namespace\n\n#### libvrm\n\nnode \u0026 morphtarget\n\nanimation / springbone / constraint\n\n##### humanoid\n\nudp / bvh\n\n#### boneskin\n\nboneskinning\n\nmesh / skinning / deformed_mesh\n\n#### namespace\n\n- `libvrm` (Node hierarchy / BaseMesh)\n- `libvrm::vrm` (Humanoid, Expression, SpringBone, Constraint, LookAt)\n- `libvrm::vrma`\n- `libvrm::bvh`\n- `libvrm::runtime` (NodeAnimation, MorphTarget, Skinning)\n- `libvrm::serialization` (Udp pose)\n\n## WIX の管理\n\nvrmeditor.xml\n\n`Product{Version=}` を更新する\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fousttrue%2Fvrmeditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fousttrue%2Fvrmeditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fousttrue%2Fvrmeditor/lists"}