KhronosGroup / KhronosGroup/UnityGLTF
feature proposal: Support for Restful uris
- Dominant language
- C#
- Stars
- 2.2k
- Forks
- 536
- PR merge metrics
- No merged PRs in 30d
Description
I'd like to suggest the following addition to the GLTFComponent script to support Restful resource fetching.
Currently, the WebRequestLoader is used to download gltf models with a filename, such as: http://localhost/some/path/Avocado.gltf
This assumes the client knows the name of the entity beforehand and that the resource is available by its name. If a rest API exposes a dynamic model on a URI such as api/v1/scene/ the following problem occurs:
GLTF passes the baseURI ("http://localhost/api/v1/scene/") to the WebRequestLoader:
```csharp
string directoryPath = URIHelper.GetDirectoryName(GLTFUri);
loader = new WebRequestLoader(directoryPath);
```
and passes the folder name ("scene") to the SceneImporter object:
```csharp
sceneImporter = new GLTFSceneImporter(
URIHelper.GetFileFromUri(new Uri(GLTFUri)),
loader,
asyncCoroutineHelper
);
```
Leading to a concatenated URL that causes a 404 on the webserver: http://localhost/api/v1/scene/scene
Proposal: Add a new boolean flag to GLTF called "UseRest" to denote that URIs have trailing slashes but no filename. The default behaviour will continue to work as expected, only if the checkbox is ticked in the inspector, the specialized behaviour will come into action.
```csharp
// Do not attach file name to URI for rest interfaces
string uri = "";
if(!UseRest)
{
uri = URIHelper.GetFileFromUri(new Uri(GLTFUri));
}
sceneImporter = Factory.CreateSceneImporter(
uri,
loader,
asyncCoroutineHelper
);
```
Stay tuned for the link to the pull request. Am glad to hear thoughts on this.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.