fix loading models without materials #439
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Buenas Jesus! Subo un fix de un problema que me he encontrado:
When using onAdd, if options.mtl is not specified MTLLoader.js fails and the model is not loaded.
I encountered this error using .glb file.
when url is not passed, loader.load call is made with url = current navigation path.
When testing in local this value was localhost:3000, which worked well (returned 304 and then object is loaded)
When uploading to production, url value was https://dev.immersia.eu/emplazamiento/45, (note that this is the current frontend path where map is rendered). I have frontend in aws cloudfront, the response is 404 and the model is not loaded
How to reproduce: pass https://dev.immersia.eu/emplazamiento/45, for example, as options.mtl for tb.loadObj function.
My fix:
If material is specified, try to load the material, if not, just render the object without the material.
I tried it and it works.
Temporal fix, just use a url that doesn't return an error value for mtl field (any page with allow any cors origin?), for example:
const options = {
obj: modelUrl,
type: modelType,
units: "meters",
scale: layerScale,
anchor: "bottom",
rotation: { x: 90, y: 0, z: 0 },
mtl: "https://jsonplaceholder.typicode.com/",
};