Open jespertheend opened 4 years ago
I guess #17745 should already implement a better error handling. It would be great if you can give it a try 👍
Hmm it seems like the issue is a bit more complex than I thought, but I think I can make this work. Do you know by any chance if there are situations where it is actually possible to serialize CompressedTextures? Or would it be ok to just generate a warning whenever you try to serialize any CompressedTexture? I don't want to break existing functionality.
Do you know by any chance if there are situations where it is actually possible to serialize CompressedTextures?
I'm not aware of anything like that. That would mean you have to decode the compressed texture on JS side and then transform it into something that can be serialized via getDataURL()
. Better to log a warning like so.
Do you know by any chance if there are situations where it is actually possible to serialize CompressedTextures?
It should be possible to implement that, but the behavior might not be what you want. For example, after loading a Basis texture, the original data is transcoded into something compatible with the device's GPU. If you serialize that, you'll be serializing data that's only compatible with certain GPUs, and other devices won't be able to use it at all.
So in terms of saving or transmitting textures, it's not ideal. :/
@donmccurdy ah yes, I was expecting that. The original basis data is lost once it is transcoded to a format that the gpu supports. My plan was not to include the texture in the serialized data. But rather to show a warning in the console and continue with the serialization of the object, instead of throwing an error.
This should do it #17978
Description of the problem
When calling
toJson()
on an object that contains a CompressedTexture, an error gets thrown:My specific use case is that I load textures in the basis universal format, and I call
toJSON()
to export my entire scene to a file in order to debug it in the threejs editor.I don't think it's easy to convert a compressed texture to a data url. But I'll try to make a pull request that at leasts gives a warning and exports it without the texture. Instead of throwing an error.
Three.js version
r110
Browser
Chrome
OS
MacOS