Strategy request: Target block coding at OpenSCAD capabilities #378
Replies: 2 comments 1 reply
-
@goatchurchprime very impressive!
Yes, this needs to be implemented, tracked in #126 . This should be implemented as a new mini editor for the function definition, similar to the current one for defining variables:
Before adding more blocks it would be nice to have an "Advanced" filter. #282 . For preventing the interface to be too cluttered, and keep it for educational purposes. In case you would like "3d printing" custom blocks to be shipped separately, see how custom blocks can be defined dynamically in scripts with
I'm happy to say that v0.8 (just released) comes with a feature to drag any property from the inspector to create a block for the attribute. See https://github.com/endlessm/godot-block-coding/releases/tag/v0.8.0 Still, you will probably need Vector3 support: #330
Yes, this can certainly be improved. |
Beta Was this translation helpful? Give feedback.
-
@goatchurchprime I have moved this from issue to discussion. We have Vector3 support now. Did you had a chance to test the latest release of this plugin? |
Beta Was this translation helpful? Give feedback.
-
What Happened
Godot now has the same CSG (Computational Solid Geometry) engine as OpenSCAD. The reason OpenSCAD is so widely known and used is it solves a real problem of being able to quickly generate shapes for 3D printing with a gentle learning curve. (However, speaking from experience, things get unmaintainably complex once you go much further.)
Block coding would be an perfect interface to this CSG engine, and the result would be more tangible since the operations are expressed in the Godot node-tree where they are easy to tinker with.
I've managed to implement a basic demo of the Menger Sponge using codeblocks (see below) without too many contrived functions at the top level called
EXF
.The extra features I need to make this work properly are:
To get round this I have called into
EXF
level functionspush_s()
andpop_s()
to implement a stack due to the lack of local function variables, andcreate_csg()
to make a new object,push_child()
to parent the last object under the previous one,duplicate_push_last()
a contrived compound function for this case, andset_last_orientation()
.Once you can do function calls, the
EXF
level functions are a good place to stage any features in order to discover what is minimal.I note that function names are text lines, while variables are drag and drop. It's not clear how to reconcile this. Although the text lines are more versatile, the drag and drop of names in bubbles is satisfying. An in-between method is to drag a bubble onto a text line to fill that text line.
How to Reproduce
Project is here csgmanifoldcodeblockstest.zip
Block Coding Plugin Version
v0.7.1
Godot Engine Version
v4.4.dev7 (not yet released)
Operating System
Linux
Logs or command-line output
Anything else?
My long term goal is to find something as effective as Protoflux in [Resonite](https://resonite.com/features.html] where I often see multiple people working socially on the same complex visual script in VR.
Doing this for the generation of CSG objects that are to be 3D printed is an achievable goal where there is a realistic and good possibility of it becoming a notable success.
Beta Was this translation helpful? Give feedback.
All reactions