I am a software developer by trade who's got a passion for indie games but the artistic talent of a can of baked beans. Follow me as I hack my way through dubious projects as I hope to improve my skill and make a game others actually enjoy.
Hey, I love the tutorial and the pixelization itself works wonderfully! I was, however, having a problem with the UI. I'm working on a 3D first person game where this method of pixelization is used, and I'm trying to add a "Press "E" to interact" UI element for interactible items when the player looks at them. The way I have this set up is with a CanvasLayer with a BoxContainer and Label containing the text, set to appear when the player's RayCast collides with an interactible object. However, I find that running this code along with the pixelization breaks the camera movement with the mouse, but I'm not sure why. For reference, here is the code for the first person camera: const SENSITIVITY = 0.01 func _ready(): Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) func _unhandled_input(event): if event is InputEventMouseMotion: head.rotate_y(-event.relative.x * SENSITIVITY) camera.rotate_x(-event.relative.y * SENSITIVITY) camera.rotation.x = clamp(camera.rotation.x, deg_to_rad(-60), deg_to_rad(60)) Any help would be appreciated!
I am trying to now combine this logic with CharacterBody nodes by having my root node be a CharacterBody3D node instead of a generic Node3D. I also went ahead and put collision shapes for every bone. My problem is the leg collision shapes mess with the inverse kinematics, leading to unnatural solutions to the IK solver. Anyone on the same boat?
Been struggling with applying hookes law to rotation. Have you thought about making a separate video for that? It's tough to find a good explanation for it and most guides I've found don't match every axis of rotation well.
in 4.3 its not working... HOLLY CRAP they deprecated physical_bones_start_simulation()! oh ok it was just replaced with this : skeleton.start_physical_bones_simulation(). but wait thats not working... ok ok ok, looks like you need to use it with an individual bone instead, but thats not working either...
For people that can't seem to get the SkeletonIK3D to work in editor but work in game - with SkeletonIK3D there's Play IK option on top of the editor, you need to have that checked if you want to see updates in the editor. I don't know why it was disabled for me by default.
Great video! However, if you use depth in the buoyancy force formula, you should limit it to a maximum depth. In your example, the deeper your object falls in the water, the stronger is the upward force. In real life, according to Archimedes’ law, there is maximum upward force defined by the volume of displaced water equal to the volume of the body (or height in your case). This is why objects heavier than water will drown and others will float. In scripting terms, I usually use math.clamp01(depth/depth_max) in the force expression instead of just depth.
Quite late, but do you think you'll make a 4.3 version? There's quite a few issues that arise when using 4.3 even if you try it out on your own tutorial project that you provided but I have a feeling you'd rather wait until the SkeletonIK3D node gets updated to make another updated tutorial.
This is a pretty cool technique and I'm tempted to put it in a few areas of my project, is it very expensive at runtime though? Don't want to overload the system just to have an easier time making pathways.
Just a note for those using 4.3, the vertex code for getting the MeshInstance3D to cover the camera has changed, it should now read: void vertex() { POSITION = vec4(VERTEX.xy,1.0,1.0); } This is mentioned in the docs but I figure it should be noted here.
woah this is awesome. would it be possible to procedurally-generate a road on-the-fly? like, if you wanted to make some kind of infinite driving game where the road goes along forever with different variations that spawn in
thankyou so much for the github link, so incredibly helpful, one thing i think you could add (I will be adding quite a few features but for different reasons) would be making it so limbs stay in their sockets, i might update this comment if i do end up implementing that, but its really not needed for most things
To anyone having problems with the new update, Godot 4.3 stealth introduced reverse Z, which means the only thing you should have to change for the shader to work again is replace void vertex() with this: void vertex() { POSITION = vec4(VERTEX.xy, 1.0, 1.0); }
Thanks for explaining how to use the IK classes in Godot. I've used the SkeletonIK3D class for leg and arm animations while driving (steering wheel, pedals, gear shifter animations). It might just be my computer, has an older CPU and GPU is GTX 1080, but the performance of IK in Godot seems not great. I'm using the chains just to position the legs and arms, so the hand and foot rotation are excluded and are still manually rotated. Leg chains have 3 bones and arms have 4 (shoulder to wrist placement basically). I even have it set to 1 for max iterations. I put a toggle in my game settings menu to turn on/off IK and while off gets 60FPS (I have max FPS to 60) and while on drops to ~40FPS. Other than the performance hit the animations look believable with the appropriate magnet values. But for me I might have to go back to manual positions/rotations of bones for animations. The only thing I can think of is the chains have too many bones, but 3 or 4 don't seem unreasonable. And the scale of my model in game is 0.01 so maybe there's some weird math going on but I'd hope the IK algo doesn't increment by a set small amount while finding the solutions. Anyone else have such a big performance hit with the IK stuff in Godot?
This method seems generally applicable to a variety of character types. Has anyone had any success with a procedural bipedal walk cycle? I am tinkering around and so far it's unfortunately only been a buggy mess. Any pointers would be appreciated.
Btw instead of using a second viewport as a hack for the double-buffer hack, you can instead try screen texture as such: uniform sampler2D sim_tex: hint_screen_texture, repeat_disable, filter_nearest; Godot has internally backbuffer copy implementation. This works for me. What do you think?
SkeletonModification was removed and now SkeletonIK3D is also deprecated, so this implementation is also deprecatted. What is wrong with the godot folks. :cries:
I was trying to figure out how to pass textures into a compute shader, and now that I see how it's done... I definitely wasn't close to figuring it out, lol. This is gold, thanks mate!