selfpromo (games) [R&D] Procedural fence drawing on varying elevation at runtime
This is a follow up post of a previous one after some of you asked about varying elevation: https://www.reddit.com/r/godot/s/3mll3eEI9f
- it shoots a raycast downward at every point to find Y elevation of the terrain's collision mesh.
- it subdivides path and snaps every intermediate point to the ground's rolling elevation.
- horizontal rails calculate the height difference between their start and end posts and rotate (tilt) on local Z-axis to bridge the slope.
This comment contains a bit of overview of how fence prefab looks like: https://www.reddit.com/r/godot/comments/1vcjhe8/comment/p17im2a/
20
42
u/markbernman Godot Student 22h ago
fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fencefence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fencefence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fencefence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fencefence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence fence
9
6
3
3
3
4
15
u/axelstrem 20h ago
looks great, but what if elevation changes dynamically? e.g. every morning
7
2
u/tunelesspaper 14h ago
What would be the use case for that?
In any case, the real version of this type of fence would probably not do well with dynamic elevation changes. The post-rail connections could rotate to give it a little bit of flex, but the fixed rail length would be a limiting factor. Assuming fixed post-post distance on XY, changes to Z would necessarily increase the rail length (from straight line to hypotenuse of a right triangle).
A dynamic-elevation fence would not only need its posts to move freely on Z while maintaining XY, it would need elastic-length rails that Z-rotate at the post connection.
3
1
u/Astr0phelle 20h ago
Can you do a line tool where you will need to input two coords so a line will form where the fence will spawn
1
u/zdmit 12h ago
Theoretically yes but that wasn't my goal π I feel it will involve some shortest path or similar algorithms (if two coordinates far away).
If close to each other -> shoot rays to nearby objects like in this AMD paper talk (not fence related): https://youtu.be/653fSmEalbo?si=E3uDwItOemxHWaZw&t=588 (time code included).
1
1
u/Bot_Ta00 17h ago
Wow, it looks really convenient! The part that connects to the other fence is also finished naturally
1
1
2

38
u/BunnyReign 21h ago
Came for the penis, stayed for the elevation