From c390437b769eb3e56267490f9b62ae9c6488b924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 4 Mar 2025 10:03:39 +0100 Subject: [PATCH] AnySceneImporter: recognize the *.vrm extension. It's a glTF with some extra additions. Not sure why they cannot just keep the file extension and expose their stuff via glTF extensions, but whatever. --- doc/changelog.dox | 2 +- src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp | 4 +++- src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h | 4 ++-- .../AnySceneImporter/Test/AnySceneImporterTest.cpp | 1 + 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index fce6f9eaf..09139b6f1 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -967,7 +967,7 @@ See also: in @relativeref{Trade,AnyImageConverter} - Recognizing WebP files in @relativeref{Trade,AnyImageConverter} - Recognizing glTF files in @relativeref{Trade,AnySceneConverter} -- Recognizing 3MF files in @relativeref{Trade,AnySceneImporter} +- Recognizing 3MF and VRM files in @relativeref{Trade,AnySceneImporter} - Recognizing OpenVBD files in @relativeref{Trade,AnyImageImporter} and @relativeref{Trade,AnyImageConverter} - @ref Audio::AnyImporter "AnyAudioImporter", diff --git a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp index 26a2b8428..7c3860134 100644 --- a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp +++ b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp @@ -106,7 +106,9 @@ void AnySceneImporter::doOpenFile(const Containers::StringView filename) { else if(normalizedExtension == ".fbx"_s) plugin = "FbxImporter"_s; else if(normalizedExtension == ".gltf"_s || - normalizedExtension == ".glb"_s) + normalizedExtension == ".glb"_s || + /* https://github.com/vrm-c/vrm-specification/blob/master/specification/0.0/README.md#file-extension */ + normalizedExtension == ".vrm"_s) plugin = "GltfImporter"_s; else if(normalizedExtension == ".ifc"_s) plugin = "IfcImporter"_s; diff --git a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h index 95b351694..b1c1ffd24 100644 --- a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h +++ b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h @@ -71,8 +71,8 @@ tries to open the file with it. Supported formats: - DirectX X (`*.x`), loaded with any plugin that provides `DirectXImporter` - AutoCAD DXF (`*.dxf`), loaded with any plugin that provides `DxfImporter` - Autodesk FBX (`*.fbx`), loaded with any plugin that provides `FbxImporter` -- glTF (`*.gltf`, `*.glb`), loaded with @ref GltfImporter or any other plugin - that provides it +- glTF (`*.gltf`, `*.glb`) and [VRM](https://vrm.dev/en/) (`*.vrm`), loaded + with @ref GltfImporter or any other plugin that provides it - Industry Foundation Classes (IFC/Step) (`*.ifc`), loaded with any plugin that provides `IfcImporter` - Irrlicht Mesh and Scene (`*.irrmesh`, `*.irr`), loaded with any plugin that diff --git a/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp b/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp index 4330d9296..0acf8b6f9 100644 --- a/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp +++ b/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp @@ -128,6 +128,7 @@ constexpr struct { {"FBX", "autodesk.fbx", "FbxImporter"}, {"glTF", "khronos.gltf", "GltfImporter"}, {"glTF binary", "khronos.glb", "GltfImporter"}, + {"VRM", "humanoid.vrm", "GltfImporter"}, {"OpenGEX", "eric.ogex", "OpenGexImporter"}, {"Stanford PLY", "bunny.ply", "StanfordImporter"}, {"Stanford PLY uppercase", "ARMADI~1.PLY", "StanfordImporter"},