💾 Archived View for alaskalinuxuser.ddns.net › 2024-04-08.gmi captured on 2024-12-17 at 09:49:23. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-09-29)
-=-=-=-=-=-=-
">
024w, https://alaskalinuxuser3.ddns.net/wp-content/uploads/2024/04/
Working_transparentBG-300x176.png 300w, https://alaskalinuxuser3.ddns.net/wp-
content/uploads/2024/04/Working_transparentBG-768x451.png 768w, https://
alaskalinuxuser3.ddns.net/wp-content/uploads/2024/04/Working_transparentBG.png
1162w" sizes="(max-width: 1024px) 100vw, 1024px" />
If you can see the above image, you will note that the subviewport is
accurately displaying the revolver AND the 3D world is still visible. If you
are trying to use a subviewport to prevent weapon clipping in Godot 4.x, and
you see the below image (or similar to it), then you have run into the
subviewport issue I am referring to.
">
024w, https://alaskalinuxuser3.ddns.net/wp-content/uploads/2024/04/
NotWorking_transparentBG-300x176.png 300w, https://alaskalinuxuser3.ddns.net/
wp-content/uploads/2024/04/NotWorking_transparentBG-768x451.png 768w, https://
alaskalinuxuser3.ddns.net/wp-content/uploads/2024/04/
NotWorking_transparentBG.png 1162w" sizes="(max-width: 1024px) 100vw,
1024px" />
If all you see is your weapon, in this case my home made revolver, and the
environment background, but no 3D world, you may have forgotten to turn on
“transparent BG”, but if you have and you still see this, you probably have the
same issue I did. Fortunately, there is a work around.
While following a Udemy course on building 3D games with Godot, the instructor
had us create a subviewport and use a camera in that subview to look at the
weapon, and keep the player camera from seeing the weapon. On his screen, it
worked like a charm. In the tutorial video, it worked like a charm, but in my
Godot world, it was not working at all.
I rewatched the lessons and made sure to check “transparent BG” for transparent
backgrounds. I searched the web and found people saying you need to turn off
SSR in your environment variables. But it was already off. I found other people
saying that it is an issue in compatibility mode, and that there was not a good
work around. Other people were using the alpha scale to “cheat” and show a
weapon that was partly transparent just so you could see everything.
Fortunately, after playing around for an hour, I figured out a much easier work
around.
You probably have a setup like mine: SubViewport Container –> SubViewport –>
Camera3D (we will call it weaponCamera for this article). In which the
SubViewport has “transparent BG” selected. But when your player is instantiated
in your level/world, the environment and the weapon is all you see in your
SubViewport view of the world. If that sounds like you, then here is what you
need to do:
Go to your weaponCamera (the one in the SubViewport) and give it an new
environment. I tried copying the level environment, but that didn’t work. I
also saved the level environment and tried to load that and it didn’t work. I
just made a new environment, NOT choosing sky, set the color to match, and that
worked great. However, there is a catch…..
If you do this, your gun/weapon doesn’t always get lighter or darker when you
walk under items or out into a bright light. So this is only a half way fix for
the battle. But this does work well enough to do the job.
The actual problem is with your World Environment. If your world environment
uses “sky” then that causes all the issues. So, if you don’t want to do the
work around I mentioned above, a different workaround is to set a different
option for your world environment that doesn’t use “sky”, like canvas or custom
color, etc. Choosing any of these options and you will not need a custom world
environment for your weaponCamera. This keeps everything “together” better, but
you lose what I consider to be one of the best environment options, which are
the sky settings.
Anyhow, I hope that is helpful for the next person trying to web search an
answer to this problem!
Linux – keep it simple.