Godot Can't See GLB Files On Quest3?

Godot Version

4.x

Question

I am puzzled about how this can happen. My program can read text files from the Quest 3, and it can write text files to the Quest 3. It can not, however, see GLB files on the Quest 3, nor can it read GLB files from the Quest 3. Here is an example. I can see these files through MTP:

The testfiles and the film files are written by the program, so I know I have the right path. The skeleton.glb file was placed there by me using my file manager.
But if I get a list of files through Godot, I get this:

image

Godot only sees the plain text files, and I’m at a loss at to why.

Any chance it doesn’t have read permissions? Not exactly sure how android permissions work, mtp might not show them exactly

They have read permissions:

I have partially solved the problem, but certainly not to my satisfaction. If I go into the app permission manager on my Quest and enable my program in the Storage section, then the skeleton.glb file loads as it should.

However, setting the Read External Storage permission in the export dialog has no effect. In fact, none of the storage-related permissions have any effect.

While I have a workaround for now, this is far from ideal.

Even manually granting permissions as I described above is not a good solution, because the Quest will usually not have my program in the list of programs for which I can modify permissions.

However, the Quest will allow me to write files and read the files my program owns. So I have determined that the best way to achieve what I want is to make my program client/server. This is not exactly what I had in mind, but it will open up multi-user possibilities. My brain is overflowing with possible features, so this is the route I will take.

My proof of concept works. I inserted my model into my database on my server, and wrote a small web service that returns the model upon request. I then wrote a small Godot script to request the model via HTTPRequest and display it upon receipt.

I exported the client to the Quest, which then requested the model from the server, received it, and wrote it to the Quest’s Document storage. I exited the program, and ran it again in read mode. It found the model in its Document storage and displayed it as it should.

I did have to enable “Read External Storage” and “Write External Storage.”

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.