-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot import any resource from any folder other than res:// #17848
Comments
Could be the new issue for #17748 (exactly 100 issues before) |
I looked at that, but even in I just tried with the example project, and it doesn't load images from Kinda off topic, but... Is there a way to load meshes like in the issue linked above? I looked but I didn't see anything for loading meshes from code. |
It seems like the |
No worries! I found a way around the issue for my project. |
So it's possible to load videos that are not packaged? Or do you mean a way around in general? |
I mean in general. In the end I decided to split my model viewer into it's own project, where I dump the textures/models/scenes/others I want to load into that project's resource folder. Sorry. I wish I had a better solution to offer. |
Well, I found a interesting way around the problem, it is just a bit more involved. All it requires is placing the image in a Godot project, and then saving it out using
I can provide a test project if you guys want. I think you can use the same method to save almost any resource in Godot. I've tried saving meshes this way, but I haven't quite figured out how to do it. This is probably more trouble than it's worth, but for anyone looking for a way to load files from anywhere in the file system, this method seems to work nicely. |
I know this is totally off topic from this issue, and I promise this is the last off-topic post I'll make on this issue. I just wanted to share an update for anyone trying to load files outside a project, as I found it interesting and it may help others with similar interests/problems Since I last posted, I figured out how to save and load meshes. Turns out it works almost exactly the same as saving images. You just need to use So, after figuring this out, I decided to take a small detour and see if I can save/load entire scenes using the You can save ANY node to a file using All of the properties from the node will be saved, with only resources being lost on export. You can get around this by saving the resources as well (like One interesting thing to note is that nodes will forget their name when they are stored using Another interesting problem to work around is rebuilding the scene tree. I found a way around this by storing a JSON dictionary with the names of the children for each node in the scene. Then it is just a matter rebuilding the node tree using the JSON dictionary and a depth-first algorithm. So after a few days of tinkering, I have successfully made a editor plugin that saves and loads Right now the plugin only has resource support for In theory I should be able to support most, if not all, of the default nodes Godot provides, as only a few nodes need custom resource support. Using
The one big downside with A minor downside is that in order to make a So if anyone is looking to load scene files from anywhere in the file system, I have a plugin that (hopefully) will do exactly that. Right now the code messy, poorly documented, and there are still a lot of nodes missing resource support. I do not really know when I will be able to release it, but I'm hoping for sooner rather than later. Right now I am struggling to get scripts from nodes in the open scene in the editor. It seems |
Related: #14879 |
https://github.com/TwistedTwigleg Is the solution you find eligible also for windows? |
@bitdom8 It should work on Windows. It utilizes Godot’s File class, so as long as the File class works the same across all platforms, it should work. Here is a link to the repository, if you want to try it: https://github.com/TwistedTwigleg/DSCN_Plugin |
@TwistedTwigleg Thanks, I just want to make my filedialog available for users to import from windows file system. DSCN not needed I guess |
AFAICT this solution still doesn't work for importing assets from I have a similar use case as the one here (trying to load a mesh at runtime from Google Poly). If I knew how |
@smartin015 Some people wrote custom OBJ loaders to do this, like this one: https://github.com/Ezcha/gd-obj |
asks for thing gets link to exactly the thing I'm not used to that from commenting on years-old github issues :) Thanks! I somehow missed this when looking around to see if it'd been done before. |
If it helps, this issue also show alternatives to loading assets from the user. #24768 |
I was banging my head against the table the last three hours because I "simply" wanted to load a jpg or png file from Thanks to @LinuxUserGD 's #18367 (comment) I was able to implement this functionality and it works perfectly. Was this functionality implemented somewhere else in the meantime? @fire: |
There are three in-memory importers.
Line 136 in 35e700e
|
There was also one for ogg (see #17748 (comment) ), an .escn runtime importer (all assets in one file) from @TwistedTwigleg and this OBJViewer (https://github.com/GoldenThumbs/Godot-OBJ-viewer ). |
I think I made a |
I had a similar issue when trying to load images from outside the
I don't think it's the same exact use case, but i'm gonna post it here in case someone needs it or finds it interesting. |
Thanks @Castlemark for your input. As I wanted to display the image I had to create an ImageTexture from it. So I used your functions like this: func _ready():
var img = _read_img("C:/test.jpg")
var tex = ImageTexture.new()
tex.create_from_image(img)
$texture_rect.texture = tex (Project file for testing: issue-17848.zip) Could be compressed into one function and would fit my needs perfectly (getting a texture from an external image file). I'll create an issue in the docs repository to document those functions and plugins mentioned in the comments since I asked my question. Thanks guys for your input. 👍 |
The code I shared was just a snippet. I have an I was thinking about maybe polishing it up some more and publishing it on the AssetLib as a standalone utility when I'm done with my project. |
Your repo is remarkable and deserves asset library use |
There already is one and it pretty much sums it up: godotengine/godot-docs#2148 |
@Castlemark sorry to bother... I'm having an issue using the snippet you suggested above. ERROR: texture_set_data: Condition "!read.ptr()" is true.
At: drivers/gles3/rasterizer_storage_gles3.cpp:836 Is there something obvious I'm missing? (I'm a Godot newbie). Some export settings it doesn't like..? I dug around all issues related to this one but I'm lost. Tested in Godot v3.2.2, also tested on a different PC and still occuring. |
Hey @edoartworks just a side note for you: The Github issues do not work well for helping out other people. Here you can find better alternatives: https://godotengine.org/community Apart from that you could edit your comment to add your system info, your used Godot version and upload your project (or a minimal version of it that is reproducing this behaviour) as a zip file so anyone can take a look at it and spot possible issues. |
Noted. Thanks for telling me nicely :) |
Hey @edoartworks I looked into your project files and I think your problem can easily be solved by changing line 6 in your script from var BG_file_path = OS.get_executable_path().replace("godot.exe", "BG.jpg") to var BG_file_path = OS.get_executable_path().get_base_dir() + "/BG.jpg" Your So instead of replacing the part 'godot.exe' manually you can use the builtin capabilities of the String object which is able to navigate in a path so you don't have to care how your exported exe is named as long as the BG.jpg file is next to it. |
That worked! Thank you very much for taking the time <3 |
Seems like people's issues are resolved. This is either a documentation problem or a feature request in the godot-proposals [for example runtime importers]. Edited: It seems to be working as designed, maybe the hacks can be removed.. |
Godot version:
3.0.2
OS/device including version:
Windows 10, 64 bit
Issue description:
There does not seem to be any way to import/load any resource file outside of
res://
I've tried importing files with various methods (see the example project for three methods for importing texture files). I've tried importing
.png
,.jpg
,.dae
, and.obj
files fromuser://
and other folders (not inres://
) with no avail.According to the docs, the host file system can be used, but I've had no luck.
(Not sure if this is needed, but I'll explain anyway)
The reason I want to load textures/models from folders outside of res:// is to make a PBR texture creation tool similar to Surforge. I did some initial tests and it seems it's possible to make such a system in Godot (at least a simple version), and having the ability to load textures/models would be extremely helpful.
Steps to reproduce:
Try to load any resource outside of res://
Minimal reproduction project:
LoadFileExample.zip
The text was updated successfully, but these errors were encountered: