diff --git a/Models/UriTest/README.body.md b/Models/UriTest/README.body.md new file mode 100644 index 00000000..50fedab9 --- /dev/null +++ b/Models/UriTest/README.body.md @@ -0,0 +1,24 @@ +## Screenshots + +![Screenshot from three.js](screenshot/screenshot.png) +![Screenshot from three.js](screenshot/screenshot2.png) + +## Description + +This asset demonstrates allowed usage of URIs in glTF. + +- URIs using percent encoding +- URIs using JSON-string escaping +- URIs using utf8 paths +- URIs pointing at child folders +- URIs pointing at parent folders + +According to the glTF spec, these URI types MAY be supported: +- http:// or https:// URIs pointing at absolute paths +- Non-normalized URIs + +See [glTF-2.0#uris](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#uris) for more information. + +## Creation Details + +The asset was created using [UnityGLTF](https://github.com/KhronosGroup/UnityGLTF), and the files were edited in [Visual Studio Code](https://code.visualstudio.com/) with [glTF Tools](https://github.com/AnalyticalGraphicsInc/gltf-vscode#gltf-tools-extension-for-visual-studio-code). \ No newline at end of file diff --git a/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/RelativeResourcePaths.gltf b/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/RelativeResourcePaths.gltf new file mode 100644 index 00000000..8715c579 --- /dev/null +++ b/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/RelativeResourcePaths.gltf @@ -0,0 +1,206 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeResourcePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 515, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 515, + "type": "VEC3", + "max": [ + 0.99997496604919434, + 1.0, + 0.9999769926071167 + ], + "min": [ + -0.99997496604919434, + -1.0, + -0.99997353553771973 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 515, + "type": "VEC4", + "max": [ + 1.0, + 0.056131001561880112, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -0.065983392298221588, + -1.0, + -1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 515, + "type": "VEC2", + "max": [ + 0.99833369255065918, + 0.98237103223800659 + ], + "min": [ + -0.00092136859893798828, + 0.024108767509460449 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 515, + "type": "VEC2", + "max": [ + 1.0000003576278687, + 1.0 + ], + "min": [ + 0.0, + 0.34614646434783936 + ] + }, + { + "bufferView": 5, + "componentType": 5123, + "count": 2304, + "type": "SCALAR", + "max": [ + 514.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "buffer.bin", + "byteLength": 33448 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 6180, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6180, + "byteLength": 6180, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12360, + "byteLength": 8240, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 20600, + "byteLength": 4120, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 24720, + "byteLength": 4120, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 28840, + "byteLength": 4608, + "target": 34963 + } + ], + "images": [ + { + "uri": "childFolder/texture/ChildFolder.jpg", + "name": "ChildFolder" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder" + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 0 + } + ], + "name": "RelativeResourcePaths" + } + ], + "nodes": [ + { + "mesh": 0, + "name": "RelativeResourcePaths" + } + ], + "samplers": [ + { + "minFilter": 9987 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "ChildFolder 你好,世界" + } + ] +} \ No newline at end of file diff --git a/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/buffer.bin b/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/buffer.bin new file mode 100644 index 00000000..c5a810fb Binary files /dev/null and b/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/buffer.bin differ diff --git a/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/childFolder/texture/ChildFolder.jpg b/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/childFolder/texture/ChildFolder.jpg new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-01-RelativeTexture-NoUTF8/childFolder/texture/ChildFolder.jpg differ diff --git a/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/RelativeResourcePaths.gltf b/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/RelativeResourcePaths.gltf new file mode 100644 index 00000000..06ccab9c --- /dev/null +++ b/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/RelativeResourcePaths.gltf @@ -0,0 +1,206 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeResourcePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 515, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 515, + "type": "VEC3", + "max": [ + 0.99997496604919434, + 1.0, + 0.9999769926071167 + ], + "min": [ + -0.99997496604919434, + -1.0, + -0.99997353553771973 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 515, + "type": "VEC4", + "max": [ + 1.0, + 0.056131001561880112, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -0.065983392298221588, + -1.0, + -1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 515, + "type": "VEC2", + "max": [ + 0.99833369255065918, + 0.98237103223800659 + ], + "min": [ + -0.00092136859893798828, + 0.024108767509460449 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 515, + "type": "VEC2", + "max": [ + 1.0000003576278687, + 1.0 + ], + "min": [ + 0.0, + 0.34614646434783936 + ] + }, + { + "bufferView": 5, + "componentType": 5123, + "count": 2304, + "type": "SCALAR", + "max": [ + 514.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "buffer안녕하세요, 세계.bin", + "byteLength": 33448 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 6180, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6180, + "byteLength": 6180, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12360, + "byteLength": 8240, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 20600, + "byteLength": 4120, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 24720, + "byteLength": 4120, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 28840, + "byteLength": 4608, + "target": 34963 + } + ], + "images": [ + { + "uri": "childFolder नमस्ते, दुनिया/texture/ChildFolder%20%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C.jpg", + "name": "ChildFolder 你好,世界" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder" + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 0 + } + ], + "name": "RelativeResourcePaths" + } + ], + "nodes": [ + { + "mesh": 0, + "name": "RelativeResourcePaths" + } + ], + "samplers": [ + { + "minFilter": 9987 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "ChildFolder 你好,世界" + } + ] +} \ No newline at end of file diff --git "a/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/buffer\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.bin" "b/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/buffer\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.bin" new file mode 100644 index 00000000..c5a810fb Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/buffer\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.bin" differ diff --git "a/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/texture/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/texture/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-02-RelativeTexture-UTF8/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/texture/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-03-RelativeBin/RelativeResourcePaths.gltf b/Models/UriTest/glTF-UriTest-03-RelativeBin/RelativeResourcePaths.gltf new file mode 100644 index 00000000..5bdf160f --- /dev/null +++ b/Models/UriTest/glTF-UriTest-03-RelativeBin/RelativeResourcePaths.gltf @@ -0,0 +1,206 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeResourcePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 515, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 515, + "type": "VEC3", + "max": [ + 0.99997496604919434, + 1.0, + 0.9999769926071167 + ], + "min": [ + -0.99997496604919434, + -1.0, + -0.99997353553771973 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 515, + "type": "VEC4", + "max": [ + 1.0, + 0.056131001561880112, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -0.065983392298221588, + -1.0, + -1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 515, + "type": "VEC2", + "max": [ + 0.99833369255065918, + 0.98237103223800659 + ], + "min": [ + -0.00092136859893798828, + 0.024108767509460449 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 515, + "type": "VEC2", + "max": [ + 1.0000003576278687, + 1.0 + ], + "min": [ + 0.0, + 0.34614646434783936 + ] + }, + { + "bufferView": 5, + "componentType": 5123, + "count": 2304, + "type": "SCALAR", + "max": [ + 514.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "childFolder नमस्ते, दुनिया/bin/buffer안녕하세요, 세계.bin", + "byteLength": 33448 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 6180, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6180, + "byteLength": 6180, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12360, + "byteLength": 8240, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 20600, + "byteLength": 4120, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 24720, + "byteLength": 4120, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 28840, + "byteLength": 4608, + "target": 34963 + } + ], + "images": [ + { + "uri": "childFolder नमस्ते, दुनिया/texture/ChildFolder%20%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C.jpg", + "name": "ChildFolder 你好,世界" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder" + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 0 + } + ], + "name": "RelativeResourcePaths" + } + ], + "nodes": [ + { + "mesh": 0, + "name": "RelativeResourcePaths" + } + ], + "samplers": [ + { + "minFilter": 9987 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "ChildFolder 你好,世界" + } + ] +} \ No newline at end of file diff --git "a/Models/UriTest/glTF-UriTest-03-RelativeBin/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/bin/buffer\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.bin" "b/Models/UriTest/glTF-UriTest-03-RelativeBin/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/bin/buffer\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.bin" new file mode 100644 index 00000000..c5a810fb Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-03-RelativeBin/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/bin/buffer\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.bin" differ diff --git "a/Models/UriTest/glTF-UriTest-03-RelativeBin/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/texture/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-03-RelativeBin/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/texture/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-03-RelativeBin/childFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/texture/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/ParentFolder/ParentFolder.jpg b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/ParentFolder/ParentFolder.jpg new file mode 100644 index 00000000..798fc9b0 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/ParentFolder/ParentFolder.jpg differ diff --git a/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/5.png b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/5.png new file mode 100644 index 00000000..aaf06565 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/5.png differ diff --git a/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/ChildFolder/ChildFolder.jpg b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/ChildFolder/ChildFolder.jpg new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/ChildFolder/ChildFolder.jpg differ diff --git a/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/RelativeTexturePaths.bin b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/RelativeTexturePaths.bin new file mode 100644 index 00000000..9d97e086 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/RelativeTexturePaths.bin differ diff --git a/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/RelativeTexturePaths.gltf b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/RelativeTexturePaths.gltf new file mode 100644 index 00000000..e22708d4 --- /dev/null +++ b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/RelativeTexturePaths.gltf @@ -0,0 +1,1306 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "extensionsRequired": [ + "KHR_materials_unlit" + ], + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeTexturePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 24, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0, + 1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 0.9966580867767334, + 0.99594426155090332 + ], + "min": [ + 0.0040557663887739182, + 0.34716415405273438 + ] + }, + { + "bufferView": 5, + "componentType": 5121, + "count": 36, + "type": "SCALAR", + "max": [ + 23.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 44, + "type": "VEC3", + "max": [ + 1.4417014122009277, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.380227088928223, + -0.31283187866210938, + 0.0 + ] + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 44, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 44, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 9, + "componentType": 5126, + "count": 44, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.2297060489654541 + ] + }, + { + "bufferView": 10, + "componentType": 5126, + "count": 44, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99480974674224854 + ] + }, + { + "bufferView": 11, + "componentType": 5126, + "count": 44, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 12, + "componentType": 5121, + "count": 66, + "type": "SCALAR", + "max": [ + 43.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 13, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 6.7789101600646973, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 14, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 15, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 16, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 17, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 18, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "bufferView": 19, + "componentType": 5121, + "count": 96, + "type": "SCALAR", + "max": [ + 63.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 20, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 9.1161203384399414, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 21, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 22, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 23, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 24, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 25, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "bufferView": 26, + "componentType": 5121, + "count": 96, + "type": "SCALAR", + "max": [ + 63.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 27, + "componentType": 5126, + "count": 128, + "type": "VEC3", + "max": [ + 13.324960708618164, + 2.0090982913970947, + 0.0 + ], + "min": [ + -16.729524612426758, + -0.31283175945281982, + 0.0 + ] + }, + { + "bufferView": 28, + "componentType": 5126, + "count": 128, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 29, + "componentType": 5126, + "count": 128, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 30, + "componentType": 5126, + "count": 128, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0881044864654541 + ] + }, + { + "bufferView": 31, + "componentType": 5126, + "count": 128, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 32, + "componentType": 5126, + "count": 128, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "bufferView": 33, + "componentType": 5121, + "count": 192, + "type": "SCALAR", + "max": [ + 127.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "RelativeTexturePaths.bin", + "byteLength": 23432 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 288, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 576, + "byteLength": 384, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 960, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1152, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1344, + "byteLength": 36, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 1380, + "byteLength": 528, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1908, + "byteLength": 528, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2436, + "byteLength": 704, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3140, + "byteLength": 352, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3492, + "byteLength": 352, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3844, + "byteLength": 704, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4548, + "byteLength": 68, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 4616, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 5384, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6152, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7176, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7688, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 8200, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 9224, + "byteLength": 96, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 9320, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 10088, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 10856, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 11880, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12392, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12904, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 13928, + "byteLength": 96, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 14024, + "byteLength": 1536, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 15560, + "byteLength": 1536, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 17096, + "byteLength": 2048, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 19144, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 20168, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 21192, + "byteLength": 2048, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 23240, + "byteLength": 192, + "target": 34963 + } + ], + "images": [ + { + "uri": "SameFolder.jpg", + "mimeType": "image/jpeg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "ChildFolder/ChildFolder.jpg", + "mimeType": "image/jpeg", + "name": "ChildFolder 你好,世界" + }, + { + "uri": "../ParentFolder/ParentFolder.jpg", + "mimeType": "image/jpeg", + "name": "ParentFolder नमस्ते, दुनिया" + }, + { + "uri": "https://gist.github.com/user-attachments/assets/be178975-4174-45a5-8438-0c9900229f84", + "mimeType": "image/jpeg", + "name": "AbsolutePath 안녕하세요, 세계" + }, + { + "uri": "5.png", + "name": "5" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 1 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 2 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ParentFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 3 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "AbsolutePath" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 4 + } + }, + "alphaMode": "BLEND", + "name": "LiberationSans SDF Material", + "extensions": { + "KHR_materials_unlit": {} + } + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 0 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 1 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 2 + } + ], + "name": "ParentFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 3 + } + ], + "name": "AbsolutePath" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 6, + "NORMAL": 7, + "TANGENT": 8, + "TEXCOORD_0": 9, + "TEXCOORD_1": 10, + "COLOR_0": 11 + }, + "indices": 12, + "material": 4 + } + ], + "name": "Text (TMP)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 13, + "NORMAL": 14, + "TANGENT": 15, + "TEXCOORD_0": 16, + "TEXCOORD_1": 17, + "COLOR_0": 18 + }, + "indices": 19, + "material": 4 + } + ], + "name": "Text (TMP) (1)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 20, + "NORMAL": 21, + "TANGENT": 22, + "TEXCOORD_0": 23, + "TEXCOORD_1": 24, + "COLOR_0": 25 + }, + "indices": 26, + "material": 4 + } + ], + "name": "Text (TMP) (2)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 27, + "NORMAL": 28, + "TANGENT": 29, + "TEXCOORD_0": 30, + "TEXCOORD_1": 31, + "COLOR_0": 32 + }, + "indices": 33, + "material": 4 + } + ], + "name": "Text (TMP) (3)" + } + ], + "nodes": [ + { + "children": [ + 1, + 21 + ], + "translation": [ + 0.9864774, + 0.175967216, + 0.2177962 + ], + "name": "RelativeTexturePaths" + }, + { + "children": [ + 2, + 3, + 4, + 5 + ], + "name": "UTF8 Paths" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "children": [ + 7, + 8, + 9, + 10 + ], + "translation": [ + 0.0, + 1.25, + 0.0 + ], + "name": "JSON Escaping" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "children": [ + 12, + 13, + 14, + 15 + ], + "translation": [ + 0.0, + 2.5, + 0.0 + ], + "name": "Percent Encoding" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "children": [ + 17, + 18, + 19, + 20 + ], + "translation": [ + 0.0, + 3.75, + 0.0 + ], + "name": "Non-Normalized Paths" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "mesh": 4, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -5.2284, + 0.46, + 0.0 + ], + "name": "Text (TMP)" + }, + { + "mesh": 5, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -5.2284, + 1.73, + 0.0 + ], + "name": "Text (TMP) (1)" + }, + { + "mesh": 6, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -5.2284, + 2.92, + 0.0 + ], + "name": "Text (TMP) (2)" + }, + { + "mesh": 7, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -5.5197, + 4.21, + 0.0 + ], + "name": "Text (TMP) (3)" + } + ], + "samplers": [ + { + "minFilter": 9987 + }, + { + "minFilter": 9729, + "wrapS": 33071, + "wrapT": 33071 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 1, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 0, + "source": 2, + "name": "ParentFolder नमस्ते, दुनिया" + }, + { + "sampler": 0, + "source": 3, + "name": "AbsolutePath 안녕하세요, 세계" + }, + { + "sampler": 1, + "source": 4, + "name": "5" + } + ] +} \ No newline at end of file diff --git a/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/SameFolder.jpg b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/SameFolder.jpg new file mode 100644 index 00000000..583c60db Binary files /dev/null and b/Models/UriTest/glTF-UriTest-04-Nested-NoUTF8/glTF/SameFolder.jpg differ diff --git "a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/ParentFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214/ParentFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276.jpg" "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/ParentFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214/ParentFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276.jpg" new file mode 100644 index 00000000..798fc9b0 Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/ParentFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214/ParentFolder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/5.png b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/5.png new file mode 100644 index 00000000..aaf06565 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/5.png differ diff --git "a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/AbsolutePath \354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.jpg" "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/AbsolutePath \354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.jpg" new file mode 100644 index 00000000..9613041d Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/AbsolutePath \354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\204\270\352\263\204.jpg" differ diff --git "a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/ChildFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/ChildFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/ChildFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/RelativeTexturePaths.gltf b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/RelativeTexturePaths.gltf new file mode 100644 index 00000000..2a786548 --- /dev/null +++ b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/RelativeTexturePaths.gltf @@ -0,0 +1,1195 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "extensionsRequired": [ + "KHR_materials_unlit" + ], + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeTexturePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 24, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0, + 1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 0.9966580867767334, + 0.99594426155090332 + ], + "min": [ + 0.0040557663887739182, + 0.34716415405273438 + ] + }, + { + "bufferView": 5, + "componentType": 5121, + "count": 36, + "type": "SCALAR", + "max": [ + 23.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 44, + "type": "VEC3", + "max": [ + 1.4417014122009277, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.380227088928223, + -0.31283187866210938, + 0.0 + ] + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 44, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 44, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 9, + "componentType": 5126, + "count": 44, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.2297060489654541 + ] + }, + { + "bufferView": 10, + "componentType": 5126, + "count": 44, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99480974674224854 + ] + }, + { + "bufferView": 11, + "componentType": 5126, + "count": 44, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 12, + "componentType": 5121, + "count": 66, + "type": "SCALAR", + "max": [ + 43.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 13, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 6.7789101600646973, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 14, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 15, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 16, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 17, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 18, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "bufferView": 19, + "componentType": 5121, + "count": 96, + "type": "SCALAR", + "max": [ + 63.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 20, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 9.1161203384399414, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 21, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 22, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 23, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 24, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 25, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "bufferView": 26, + "componentType": 5121, + "count": 96, + "type": "SCALAR", + "max": [ + 63.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 27, + "componentType": 5126, + "count": 128, + "type": "VEC3", + "max": [ + 13.324960708618164, + 2.0090982913970947, + 0.0 + ], + "min": [ + -16.729524612426758, + -0.31283175945281982, + 0.0 + ] + }, + { + "bufferView": 28, + "componentType": 5126, + "count": 128, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 29, + "componentType": 5126, + "count": 128, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 30, + "componentType": 5126, + "count": 128, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0881044864654541 + ] + }, + { + "bufferView": 31, + "componentType": 5126, + "count": 128, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 32, + "componentType": 5126, + "count": 128, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "bufferView": 33, + "componentType": 5121, + "count": 192, + "type": "SCALAR", + "max": [ + 127.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "bin/Buffer.bin", + "byteLength": 23432 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 288, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 576, + "byteLength": 384, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 960, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1152, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1344, + "byteLength": 36, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 1380, + "byteLength": 528, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1908, + "byteLength": 528, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2436, + "byteLength": 704, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3140, + "byteLength": 352, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3492, + "byteLength": 352, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3844, + "byteLength": 704, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4548, + "byteLength": 68, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 4616, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 5384, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6152, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7176, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7688, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 8200, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 9224, + "byteLength": 96, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 9320, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 10088, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 10856, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 11880, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12392, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12904, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 13928, + "byteLength": 96, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 14024, + "byteLength": 1536, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 15560, + "byteLength": 1536, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 17096, + "byteLength": 2048, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 19144, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 20168, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 21192, + "byteLength": 2048, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 23240, + "byteLength": 192, + "target": 34963 + } + ], + "images": [ + { + "uri": "SameFolder%20%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E4%B8%96%E7%95%8C.jpg", + "mimeType": "image/jpeg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "ChildFolder%20%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E4%B8%96%E7%95%8C/ChildFolder%20%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C.jpg", + "mimeType": "image/jpeg", + "name": "ChildFolder 你好,世界" + }, + { + "uri": "../ParentFolder%20%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E4%B8%96%E7%95%8C/ParentFolder%20%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87%2C%20%E0%A4%A6%E0%A5%81%E0%A4%A8%E0%A4%BF%E0%A4%AF%E0%A4%BE.jpg", + "mimeType": "image/jpeg", + "name": "ParentFolder नमस्ते, दुनिया" + }, + { + "uri": "https://gist.github.com/user-attachments/assets/be178975-4174-45a5-8438-0c9900229f84", + "mimeType": "image/jpeg", + "name": "AbsolutePath 안녕하세요, 세계" + }, + { + "uri": "5.png", + "name": "5" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 1 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 2 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ParentFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 3 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "AbsolutePath" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 4 + } + }, + "alphaMode": "BLEND", + "name": "LiberationSans SDF Material", + "extensions": { + "KHR_materials_unlit": {} + } + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 0 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 1 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 2 + } + ], + "name": "ParentFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 3 + } + ], + "name": "AbsolutePath" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 6, + "NORMAL": 7, + "TANGENT": 8, + "TEXCOORD_0": 9, + "TEXCOORD_1": 10, + "COLOR_0": 11 + }, + "indices": 12, + "material": 4 + } + ], + "name": "Text (TMP)" + } + ], + "nodes": [ + { + "children": [ + 1, + 21 + ], + "translation": [ + 0.9864774, + 0.175967216, + 0.2177962 + ], + "name": "RelativeTexturePaths" + }, + { + "children": [ + 2, + 3, + 4, + 5 + ], + "name": "UTF8 Paths" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "children": [ + 7, + 8, + 9, + 10 + ], + "translation": [ + 0.0, + 1.25, + 0.0 + ], + "name": "JSON Escaping" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "children": [ + 12, + 13, + 14, + 15 + ], + "translation": [ + 0.0, + 2.5, + 0.0 + ], + "name": "Percent Encoding" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "children": [ + 17, + 18, + 19, + 20 + ], + "translation": [ + 0.0, + 3.75, + 0.0 + ], + "name": "Non-Normalized Paths" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "translation": [ + -1.25, + 0.5, + 0.0 + ], + "name": "ParentFolderOfGltf" + }, + { + "mesh": 3, + "translation": [ + -2.5, + 0.5, + 0.0 + ], + "name": "AbsolutePath" + }, + { + "mesh": 4, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -5.2284, + 0.46, + 0.0 + ], + "name": "Text (TMP)" + } + ], + "samplers": [ + { + "minFilter": 9987 + }, + { + "minFilter": 9729, + "wrapS": 33071, + "wrapT": 33071 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 1, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 0, + "source": 2, + "name": "ParentFolder नमस्ते, दुनिया" + }, + { + "sampler": 0, + "source": 3, + "name": "AbsolutePath 안녕하세요, 세계" + }, + { + "sampler": 1, + "source": 4, + "name": "5" + } + ] +} \ No newline at end of file diff --git "a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..583c60db Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/bin/Buffer.bin b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/bin/Buffer.bin new file mode 100644 index 00000000..9d97e086 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-05-Nested-UTF8/glTF/bin/Buffer.bin differ diff --git a/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/3.png b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/3.png new file mode 100644 index 00000000..2c287732 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/3.png differ diff --git a/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/Buffer.bin b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/Buffer.bin new file mode 100644 index 00000000..97fb1ecb Binary files /dev/null and b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/Buffer.bin differ diff --git "a/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/Child Folder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/Child Folder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/Child Folder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/RelativeTexturePaths.gltf b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/RelativeTexturePaths.gltf new file mode 100644 index 00000000..f1ef7f36 --- /dev/null +++ b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/RelativeTexturePaths.gltf @@ -0,0 +1,585 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "extensionsRequired": [ + "KHR_materials_unlit" + ], + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeTexturePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 24, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0, + 1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 0.9966580867767334, + 0.99594426155090332 + ], + "min": [ + 0.0040557663887739182, + 0.34716415405273438 + ] + }, + { + "bufferView": 5, + "componentType": 5121, + "count": 36, + "type": "SCALAR", + "max": [ + 23.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 40, + "type": "VEC3", + "max": [ + 1.4417014122009277, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.380227088928223, + -0.31283187866210938, + 0.0 + ] + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 40, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 40, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 9, + "componentType": 5126, + "count": 40, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.2297060489654541 + ] + }, + { + "bufferView": 10, + "componentType": 5126, + "count": 40, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 11, + "componentType": 5126, + "count": 40, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 12, + "componentType": 5121, + "count": 60, + "type": "SCALAR", + "max": [ + 39.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "Buffer.bin", + "byteLength": 18728 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 288, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 576, + "byteLength": 384, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 960, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1152, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1344, + "byteLength": 36, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 1380, + "byteLength": 480, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1860, + "byteLength": 480, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2340, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2980, + "byteLength": 320, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3300, + "byteLength": 320, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3620, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4260, + "byteLength": 60, + "target": 34963 + } + ], + "images": [ + { + "uri": "SameFolder%20%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E4%B8%96%E7%95%8C.jpg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "Child%20Folder%20%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87%2C%20%E0%A4%A6%E0%A5%81%E0%A4%A8%E0%A4%BF%E0%A4%AF%E0%A4%BE/ChildFolder%20%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C.jpg", + "name": "ChildFolder 你好,世界" + }, + { + "uri": "3.png", + "name": "3" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 1 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 2 + } + }, + "alphaMode": "BLEND", + "name": "LiberationSans SDF Material", + "extensions": { + "KHR_materials_unlit": {} + } + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 0 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TANGENT": 2, + "TEXCOORD_0": 3, + "TEXCOORD_1": 4 + }, + "indices": 5, + "material": 1 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 6, + "NORMAL": 7, + "TANGENT": 8, + "TEXCOORD_0": 9, + "TEXCOORD_1": 10, + "COLOR_0": 11 + }, + "indices": 12, + "material": 2 + } + ], + "name": "Text (TMP)" + } + ], + "nodes": [ + { + "children": [ + 1, + 13 + ], + "translation": [ + 0.9864774, + 0.175967216, + 0.2177962 + ], + "name": "RelativeTexturePaths" + }, + { + "children": [ + 2, + 3 + ], + "name": "UTF8 Paths" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 5, + 6 + ], + "translation": [ + 0.0, + 1.25, + 0.0 + ], + "name": "JSON Escaping" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 8, + 9 + ], + "translation": [ + 0.0, + 2.5, + 0.0 + ], + "name": "Percent Encoding" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 11, + 12 + ], + "translation": [ + 0.0, + 3.75, + 0.0 + ], + "name": "Non-Normalized Paths" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 0.46, + 0.0 + ], + "name": "Text (TMP)" + } + ], + "samplers": [ + { + "minFilter": 9987 + }, + { + "minFilter": 9729, + "wrapS": 33071, + "wrapT": 33071 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 1, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 1, + "source": 2, + "name": "3" + } + ] +} \ No newline at end of file diff --git "a/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..583c60db Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-06-RelativeFiles-UTF8/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/3.png b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/3.png new file mode 100644 index 00000000..2c287732 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/3.png differ diff --git a/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/Buffer.bin b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/Buffer.bin new file mode 100644 index 00000000..97fb1ecb Binary files /dev/null and b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/Buffer.bin differ diff --git "a/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/Child Folder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/Child Folder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/Child Folder \340\244\250\340\244\256\340\244\270\340\245\215\340\244\244\340\245\207, \340\244\246\340\245\201\340\244\250\340\244\277\340\244\257\340\244\276/ChildFolder \344\275\240\345\245\275\357\274\214\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/RelativeTexturePaths.gltf b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/RelativeTexturePaths.gltf new file mode 100644 index 00000000..4beec8c7 --- /dev/null +++ b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/RelativeTexturePaths.gltf @@ -0,0 +1,1344 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "extensionsRequired": [ + "KHR_materials_unlit" + ], + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeTexturePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 24, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0, + 1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 0.9966580867767334, + 0.99594426155090332 + ], + "min": [ + 0.0040557663887739182, + 0.34716415405273438 + ] + }, + { + "bufferView": 5, + "componentType": 5121, + "count": 36, + "type": "SCALAR", + "max": [ + 23.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 40, + "type": "VEC3", + "max": [ + 1.4417014122009277, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.380227088928223, + -0.31283187866210938, + 0.0 + ] + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 40, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 40, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 9, + "componentType": 5126, + "count": 40, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.2297060489654541 + ] + }, + { + "bufferView": 10, + "componentType": 5126, + "count": 40, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 11, + "componentType": 5126, + "count": 40, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 12, + "componentType": 5121, + "count": 60, + "type": "SCALAR", + "max": [ + 39.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 13, + "componentType": 5126, + "count": 52, + "type": "VEC3", + "max": [ + 6.7789101600646973, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 14, + "componentType": 5126, + "count": 52, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 15, + "componentType": 5126, + "count": 52, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 16, + "componentType": 5126, + "count": 52, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 17, + "componentType": 5126, + "count": 52, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 18, + "componentType": 5126, + "count": 52, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 19, + "componentType": 5121, + "count": 78, + "type": "SCALAR", + "max": [ + 51.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 20, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 9.1161203384399414, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 21, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 22, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 23, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 24, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 25, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 26, + "componentType": 5121, + "count": 96, + "type": "SCALAR", + "max": [ + 63.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 27, + "componentType": 5126, + "count": 80, + "type": "VEC3", + "max": [ + 13.324960708618164, + 2.0090982913970947, + 0.0 + ], + "min": [ + -16.729524612426758, + -0.31283175945281982, + 0.0 + ] + }, + { + "bufferView": 28, + "componentType": 5126, + "count": 80, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 29, + "componentType": 5126, + "count": 80, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 30, + "componentType": 5126, + "count": 80, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0881044864654541 + ] + }, + { + "bufferView": 31, + "componentType": 5126, + "count": 80, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 32, + "componentType": 5126, + "count": 80, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 33, + "componentType": 5121, + "count": 120, + "type": "SCALAR", + "max": [ + 79.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "Buffer.bin", + "byteLength": 18728 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 288, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 576, + "byteLength": 384, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 960, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1152, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1344, + "byteLength": 36, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 1380, + "byteLength": 480, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1860, + "byteLength": 480, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2340, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2980, + "byteLength": 320, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3300, + "byteLength": 320, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3620, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4260, + "byteLength": 60, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 4320, + "byteLength": 624, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4944, + "byteLength": 624, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 5568, + "byteLength": 832, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6400, + "byteLength": 416, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6816, + "byteLength": 416, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7232, + "byteLength": 832, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 8064, + "byteLength": 80, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 8144, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 8912, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 9680, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 10704, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 11216, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 11728, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12752, + "byteLength": 96, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 12848, + "byteLength": 960, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 13808, + "byteLength": 960, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 14768, + "byteLength": 1280, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 16048, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 16688, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 17328, + "byteLength": 1280, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 18608, + "byteLength": 120, + "target": 34963 + } + ], + "images": [ + { + "uri": "SameFolder%20%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E4%B8%96%E7%95%8C.jpg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "Child%20Folder%20%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87%2C%20%E0%A4%A6%E0%A5%81%E0%A4%A8%E0%A4%BF%E0%A4%AF%E0%A4%BE/ChildFolder%20%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C.jpg", + "name": "ChildFolder 你好,世界" + }, + { + "uri": "3.png", + "name": "3" + }, + { + "uri": "SameFolder こんにちは世界.jpg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "Child Folder नमस्ते, दुनिया/ChildFolder 你好,世界.jpg", + "name": "ChildFolder 你好,世界" + }, + { + "uri": "SameFolder \u3053\u3093\u306B\u3061\u306F\u4E16\u754C.jpg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "Child Folder \u0928\u092E\u0938\u094D\u0924\u0947, \u0926\u0941\u0928\u093F\u092F\u093E\/ChildFolder \u4F60\u597D\uFF0C\u4E16\u754C.jpg", + "name": "ChildFolder 你好,世界" + }, + { + "uri": "Child Folder नमस्ते, दुनिया/../SameFolder \u3053\u3093\u306B\u3061\u306F\u4E16\u754C.jpg", + "name": "SameFolder こんにちは世界" + }, + { + "uri": "Child Folder नमस्ते, दुनिया/../Child Folder \u0928\u092E\u0938\u094D\u0924\u0947, \u0926\u0941\u0928\u093F\u092F\u093E\/ChildFolder \u4F60\u597D\uFF0C\u4E16\u754C.jpg", + "name": "ChildFolder 你好,世界" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (Percent Encoded)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 1 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (Percent Encoded)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 2 + } + }, + "alphaMode": "BLEND", + "name": "LiberationSans SDF Material", + "extensions": { + "KHR_materials_unlit": {} + } + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 3 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (UTF8)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 4 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (UTF8)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 5 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (JSON Escaped)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 6 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (JSON Escaped)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 7 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (Non-Normalized)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 8 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (Non-Normalized)" + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 0 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 1 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 6, + "NORMAL": 7, + "TEXCOORD_0": 9, + "COLOR_0": 11 + }, + "indices": 12, + "material": 2 + } + ], + "name": "Text (TMP)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 13, + "NORMAL": 14, + "TEXCOORD_0": 16, + "COLOR_0": 18 + }, + "indices": 19, + "material": 2 + } + ], + "name": "Text (TMP) (1)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 20, + "NORMAL": 21, + "TEXCOORD_0": 23, + "COLOR_0": 25 + }, + "indices": 26, + "material": 2 + } + ], + "name": "Text (TMP) (2)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 27, + "NORMAL": 28, + "TEXCOORD_0": 30, + "COLOR_0": 32 + }, + "indices": 33, + "material": 2 + } + ], + "name": "Text (TMP) (3)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 3 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 4 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 5 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 6 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 7 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 8 + } + ], + "name": "SubFolderOfGltf" + } + ], + "nodes": [ + { + "children": [ + 1, + 4, + 7, + 10, + 13, + 14, + 15, + 16 + ], + "translation": [ + 0.9864774, + 0.175967216, + 0.2177962 + ], + "name": "RelativeTexturePaths" + }, + { + "children": [ + 2, + 3 + ], + "name": "UTF8 Paths" + }, + { + "mesh": 6, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 7, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 5, + 6 + ], + "translation": [ + 0.0, + 1.25, + 0.0 + ], + "name": "JSON Escaping" + }, + { + "mesh": 8, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 9, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 8, + 9 + ], + "translation": [ + 0.0, + 2.5, + 0.0 + ], + "name": "Percent Encoding" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 11, + 12 + ], + "translation": [ + 0.0, + 3.75, + 0.0 + ], + "name": "Non-Normalized Paths" + }, + { + "mesh": 10, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 11, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 0.46, + 0.0 + ], + "name": "Text (TMP)" + }, + { + "mesh": 3, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 1.73, + 0.0 + ], + "name": "Text (TMP) (1)" + }, + { + "mesh": 4, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 2.92, + 0.0 + ], + "name": "Text (TMP) (2)" + }, + { + "mesh": 5, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.8713, + 4.21, + 0.0 + ], + "name": "Text (TMP) (3)" + } + ], + "samplers": [ + { + "minFilter": 9987 + }, + { + "minFilter": 9729, + "wrapS": 33071, + "wrapT": 33071 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 1, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 1, + "source": 2, + "name": "3" + }, + { + "sampler": 0, + "source": 3, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 4, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 0, + "source": 5, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 6, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 0, + "source": 7, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 8, + "name": "ChildFolder 你好,世界" + } + ] +} \ No newline at end of file diff --git "a/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" "b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" new file mode 100644 index 00000000..583c60db Binary files /dev/null and "b/Models/UriTest/glTF-UriTest-07-UriTypes-UTF8/SameFolder \343\201\223\343\202\223\343\201\253\343\201\241\343\201\257\344\270\226\347\225\214.jpg" differ diff --git a/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/3.png b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/3.png new file mode 100644 index 00000000..2c287732 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/3.png differ diff --git a/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Buffer.bin b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Buffer.bin new file mode 100644 index 00000000..97fb1ecb Binary files /dev/null and b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Buffer.bin differ diff --git a/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Child Folder/Child Folder.jpg b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Child Folder/Child Folder.jpg new file mode 100644 index 00000000..d71475f0 Binary files /dev/null and b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Child Folder/Child Folder.jpg differ diff --git a/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/RelativeTexturePaths.gltf b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/RelativeTexturePaths.gltf new file mode 100644 index 00000000..0b6196f3 --- /dev/null +++ b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/RelativeTexturePaths.gltf @@ -0,0 +1,1344 @@ +{ + "asset": { + "generator": "UnityGLTF", + "version": "2.0" + }, + "extensionsUsed": [ + "KHR_materials_unlit" + ], + "extensionsRequired": [ + "KHR_materials_unlit" + ], + "scene": 0, + "scenes": [ + { + "nodes": [ + 0 + ], + "name": "RelativeTexturePaths" + } + ], + "accessors": [ + { + "bufferView": 0, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ] + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 24, + "type": "VEC3", + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ] + }, + { + "bufferView": 2, + "componentType": 5126, + "count": 24, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0, + 1.0 + ] + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ] + }, + { + "bufferView": 4, + "componentType": 5126, + "count": 24, + "type": "VEC2", + "max": [ + 0.9966580867767334, + 0.99594426155090332 + ], + "min": [ + 0.0040557663887739182, + 0.34716415405273438 + ] + }, + { + "bufferView": 5, + "componentType": 5121, + "count": 36, + "type": "SCALAR", + "max": [ + 23.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 6, + "componentType": 5126, + "count": 40, + "type": "VEC3", + "max": [ + 1.4417014122009277, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.380227088928223, + -0.31283187866210938, + 0.0 + ] + }, + { + "bufferView": 7, + "componentType": 5126, + "count": 40, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 8, + "componentType": 5126, + "count": 40, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 9, + "componentType": 5126, + "count": 40, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.2297060489654541 + ] + }, + { + "bufferView": 10, + "componentType": 5126, + "count": 40, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 11, + "componentType": 5126, + "count": 40, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 12, + "componentType": 5121, + "count": 60, + "type": "SCALAR", + "max": [ + 39.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 13, + "componentType": 5126, + "count": 52, + "type": "VEC3", + "max": [ + 6.7789101600646973, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 14, + "componentType": 5126, + "count": 52, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 15, + "componentType": 5126, + "count": 52, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 16, + "componentType": 5126, + "count": 52, + "type": "VEC2", + "max": [ + 0.9724423885345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 17, + "componentType": 5126, + "count": 52, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 18, + "componentType": 5126, + "count": 52, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 19, + "componentType": 5121, + "count": 78, + "type": "SCALAR", + "max": [ + 51.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 20, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 9.1161203384399414, + 2.0090982913970947, + 0.0 + ], + "min": [ + -14.310456275939941, + -0.90585482120513916, + 0.0 + ] + }, + { + "bufferView": 21, + "componentType": 5126, + "count": 64, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 22, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 23, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0841982364654541 + ] + }, + { + "bufferView": 24, + "componentType": 5126, + "count": 64, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 25, + "componentType": 5126, + "count": 64, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 26, + "componentType": 5121, + "count": 96, + "type": "SCALAR", + "max": [ + 63.0 + ], + "min": [ + 0.0 + ] + }, + { + "bufferView": 27, + "componentType": 5126, + "count": 80, + "type": "VEC3", + "max": [ + 13.324960708618164, + 2.0090982913970947, + 0.0 + ], + "min": [ + -16.729524612426758, + -0.31283175945281982, + 0.0 + ] + }, + { + "bufferView": 28, + "componentType": 5126, + "count": 80, + "type": "VEC3", + "max": [ + 0.0, + 0.0, + -1.0 + ], + "min": [ + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 29, + "componentType": 5126, + "count": 80, + "type": "VEC4", + "max": [ + 1.0, + 0.0, + 0.0, + -1.0 + ], + "min": [ + 1.0, + 0.0, + 0.0, + -1.0 + ] + }, + { + "bufferView": 30, + "componentType": 5126, + "count": 80, + "type": "VEC2", + "max": [ + 0.9919736385345459, + 1.0 + ], + "min": [ + 0.0, + 0.0881044864654541 + ] + }, + { + "bufferView": 31, + "componentType": 5126, + "count": 80, + "type": "VEC2", + "max": [ + 2093567.0, + 1.0 + ], + "min": [ + 0.0, + 0.99567478895187378 + ] + }, + { + "bufferView": 32, + "componentType": 5126, + "count": 80, + "type": "VEC4", + "max": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + { + "bufferView": 33, + "componentType": 5121, + "count": 120, + "type": "SCALAR", + "max": [ + 79.0 + ], + "min": [ + 0.0 + ] + } + ], + "buffers": [ + { + "uri": "Buffer.bin", + "byteLength": 18728 + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 288, + "byteLength": 288, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 576, + "byteLength": 384, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 960, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1152, + "byteLength": 192, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1344, + "byteLength": 36, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 1380, + "byteLength": 480, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 1860, + "byteLength": 480, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2340, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 2980, + "byteLength": 320, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3300, + "byteLength": 320, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 3620, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4260, + "byteLength": 60, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 4320, + "byteLength": 624, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 4944, + "byteLength": 624, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 5568, + "byteLength": 832, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6400, + "byteLength": 416, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 6816, + "byteLength": 416, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7232, + "byteLength": 832, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 8064, + "byteLength": 80, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 8144, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 8912, + "byteLength": 768, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 9680, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 10704, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 11216, + "byteLength": 512, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 11728, + "byteLength": 1024, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 12752, + "byteLength": 96, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 12848, + "byteLength": 960, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 13808, + "byteLength": 960, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 14768, + "byteLength": 1280, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 16048, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 16688, + "byteLength": 640, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 17328, + "byteLength": 1280, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 18608, + "byteLength": 120, + "target": 34963 + } + ], + "images": [ + { + "uri": "Same%20Folder.jpg", + "name": "Same Folder" + }, + { + "uri": "Child%20Folder/Child%20Folder.jpg", + "name": "ChildFolder" + }, + { + "uri": "3.png", + "name": "3" + }, + { + "uri": "Same Folder.jpg", + "name": "Same Folder" + }, + { + "uri": "Child Folder/Child Folder.jpg", + "name": "ChildFolder" + }, + { + "uri": "Same\u0020Folder.jpg", + "name": "SameFolder" + }, + { + "uri": "Child\u0020Folder/Child\u0020Folder.jpg", + "name": "ChildFolder" + }, + { + "uri": "Child Folder/../Same Folder.jpg", + "name": "SameFolder" + }, + { + "uri": "Child Folder/../Child Folder/Child Folder.jpg", + "name": "ChildFolder" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (Percent Encoded)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 1 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (Percent Encoded)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 2 + } + }, + "alphaMode": "BLEND", + "name": "LiberationSans SDF Material", + "extensions": { + "KHR_materials_unlit": {} + } + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 3 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (UTF8)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 4 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (UTF8)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 5 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (JSON Escaped)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 6 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (JSON Escaped)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 7 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "SameFolder (Non-Normalized)" + }, + { + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 8 + }, + "metallicFactor": 0.0, + "roughnessFactor": 0.5 + }, + "name": "ChildFolder (Non-Normalized)" + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 0 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 1 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 6, + "NORMAL": 7, + "TEXCOORD_0": 9, + "COLOR_0": 11 + }, + "indices": 12, + "material": 2 + } + ], + "name": "Text (TMP)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 13, + "NORMAL": 14, + "TEXCOORD_0": 16, + "COLOR_0": 18 + }, + "indices": 19, + "material": 2 + } + ], + "name": "Text (TMP) (1)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 20, + "NORMAL": 21, + "TEXCOORD_0": 23, + "COLOR_0": 25 + }, + "indices": 26, + "material": 2 + } + ], + "name": "Text (TMP) (2)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 27, + "NORMAL": 28, + "TEXCOORD_0": 30, + "COLOR_0": 32 + }, + "indices": 33, + "material": 2 + } + ], + "name": "Text (TMP) (3)" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 3 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 4 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 5 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 6 + } + ], + "name": "SubFolderOfGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 7 + } + ], + "name": "SameFolderAsGltf" + }, + { + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 3 + }, + "indices": 5, + "material": 8 + } + ], + "name": "SubFolderOfGltf" + } + ], + "nodes": [ + { + "children": [ + 1, + 4, + 7, + 10, + 13, + 14, + 15, + 16 + ], + "translation": [ + 0.9864774, + 0.175967216, + 0.2177962 + ], + "name": "RelativeTexturePaths" + }, + { + "children": [ + 2, + 3 + ], + "name": "UTF8 Paths" + }, + { + "mesh": 6, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 7, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 5, + 6 + ], + "translation": [ + 0.0, + 1.25, + 0.0 + ], + "name": "JSON Escaping" + }, + { + "mesh": 8, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 9, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 8, + 9 + ], + "translation": [ + 0.0, + 2.5, + 0.0 + ], + "name": "Percent Encoding" + }, + { + "mesh": 0, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 1, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "children": [ + 11, + 12 + ], + "translation": [ + 0.0, + 3.75, + 0.0 + ], + "name": "Non-Normalized Paths" + }, + { + "mesh": 10, + "translation": [ + 0.0, + 0.5, + 0.0 + ], + "name": "SameFolderAsGltf" + }, + { + "mesh": 11, + "translation": [ + 1.25, + 0.5, + 0.0 + ], + "name": "SubFolderOfGltf" + }, + { + "mesh": 2, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 0.46, + 0.0 + ], + "name": "Text (TMP)" + }, + { + "mesh": 3, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 1.73, + 0.0 + ], + "name": "Text (TMP) (1)" + }, + { + "mesh": 4, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.58, + 2.92, + 0.0 + ], + "name": "Text (TMP) (2)" + }, + { + "mesh": 5, + "rotation": [ + 0.0, + 1.0, + 0.0, + -5.96046448E-08 + ], + "scale": [ + 0.123989768, + 0.123989768, + 0.123989768 + ], + "translation": [ + -2.8713, + 4.21, + 0.0 + ], + "name": "Text (TMP) (3)" + } + ], + "samplers": [ + { + "minFilter": 9987 + }, + { + "minFilter": 9729, + "wrapS": 33071, + "wrapT": 33071 + } + ], + "textures": [ + { + "sampler": 0, + "source": 0, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 1, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 1, + "source": 2, + "name": "3" + }, + { + "sampler": 0, + "source": 3, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 4, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 0, + "source": 5, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 6, + "name": "ChildFolder 你好,世界" + }, + { + "sampler": 0, + "source": 7, + "name": "SameFolder こんにちは世界" + }, + { + "sampler": 0, + "source": 8, + "name": "ChildFolder 你好,世界" + } + ] +} \ No newline at end of file diff --git a/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Same Folder.jpg b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Same Folder.jpg new file mode 100644 index 00000000..583c60db Binary files /dev/null and b/Models/UriTest/glTF-UriTest-08-UriTypes-NoUTF8/Same Folder.jpg differ diff --git a/Models/UriTest/metadata.json b/Models/UriTest/metadata.json new file mode 100644 index 00000000..3c78ba3e --- /dev/null +++ b/Models/UriTest/metadata.json @@ -0,0 +1,24 @@ +{ + "version": 2, + "legal": [ + { + "license": "CC-BY 4.0", + "licenseUrl": "https://creativecommons.org/licenses/by/4.0/legalcode", + "artist": "Felix Herbst", + "year": "2024", + "owner": "Copyright 2024 Needle Tools GmbH", + "what": "Everything", + "text": "CC BY 4.0 International", + "spdx": "CC-BY-4.0", + "icon": "https://licensebuttons.net/l/by/4.0/88x31.png" + } + ], + "tags": [ + "testing" + ], + "screenshot": "screenshot/screenshot.jpg", + "name": "Uri Test", + "path": "./Models/UriTest", + "summary": "Various URI tests with relative and non-relative URIs, utf8 paths, and non-normalized paths.", + "createReadme": true +} \ No newline at end of file diff --git a/Models/UriTest/screenshot/screenshot.png b/Models/UriTest/screenshot/screenshot.png new file mode 100644 index 00000000..e3a3f0df Binary files /dev/null and b/Models/UriTest/screenshot/screenshot.png differ diff --git a/Models/UriTest/screenshot/screenshot2.png b/Models/UriTest/screenshot/screenshot2.png new file mode 100644 index 00000000..8b046968 Binary files /dev/null and b/Models/UriTest/screenshot/screenshot2.png differ diff --git a/Models/UriTest/zip/glTF-UriTest-01-RelativeTexture-NoUTF8.zip b/Models/UriTest/zip/glTF-UriTest-01-RelativeTexture-NoUTF8.zip new file mode 100644 index 00000000..8ac825fa Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-01-RelativeTexture-NoUTF8.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-02-RelativeTexture-UTF8.zip b/Models/UriTest/zip/glTF-UriTest-02-RelativeTexture-UTF8.zip new file mode 100644 index 00000000..e81d10b7 Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-02-RelativeTexture-UTF8.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-03-RelativeBin.zip b/Models/UriTest/zip/glTF-UriTest-03-RelativeBin.zip new file mode 100644 index 00000000..98d37d2b Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-03-RelativeBin.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-04-Nested-NoUTF8.zip b/Models/UriTest/zip/glTF-UriTest-04-Nested-NoUTF8.zip new file mode 100644 index 00000000..3c415968 Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-04-Nested-NoUTF8.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-05-Nested-UTF8.zip b/Models/UriTest/zip/glTF-UriTest-05-Nested-UTF8.zip new file mode 100644 index 00000000..1f6178b9 Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-05-Nested-UTF8.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-06-RelativeFiles-UTF8.zip b/Models/UriTest/zip/glTF-UriTest-06-RelativeFiles-UTF8.zip new file mode 100644 index 00000000..81d91d6e Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-06-RelativeFiles-UTF8.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-07-UriTypes-UTF8.zip b/Models/UriTest/zip/glTF-UriTest-07-UriTypes-UTF8.zip new file mode 100644 index 00000000..26dd86fb Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-07-UriTypes-UTF8.zip differ diff --git a/Models/UriTest/zip/glTF-UriTest-08-UriTypes-NoUTF8.zip b/Models/UriTest/zip/glTF-UriTest-08-UriTypes-NoUTF8.zip new file mode 100644 index 00000000..351a109e Binary files /dev/null and b/Models/UriTest/zip/glTF-UriTest-08-UriTypes-NoUTF8.zip differ diff --git a/Models/model-index.json b/Models/model-index.json index ed76a218..31b235a2 100644 --- a/Models/model-index.json +++ b/Models/model-index.json @@ -1333,6 +1333,22 @@ "glTF-Binary": "UnlitTest.glb" } }, + { + "label": "Uri Test", + "name": "UriTest", + "screenshot": "screenshot/screenshot.png", + "tags": ["testing"], + "variants": { + "glTF-UriTest-01-RelativeTexture-NoUTF8": "RelativeResourcePaths.gltf", + "glTF-UriTest-02-RelativeTexture-UTF8": "RelativeResourcePaths.gltf", + "glTF-UriTest-03-RelativeBin": "RelativeResourcePaths.gltf", + "glTF-UriTest-04-Nested-NoUTF8": "glTF/RelativeTexturePaths.gltf", + "glTF-UriTest-05-Nested-UTF8": "glTF/RelativeTexturePaths.gltf", + "glTF-UriTest-06-RelativeFiles-UTF8": "RelativeTexturePaths.gltf", + "glTF-UriTest-07-UriTypes-UTF8": "RelativeTexturePaths.gltf", + "glTF-UriTest-08-UriTypes-NoUTF8": "RelativeTexturePaths.gltf" + } + }, { "label": "Vertex Color Test", "name": "VertexColorTest",