geometry-script
geometry-script copied to clipboard
Input options
Currently Geometry Scripts supports default values for the args in the tree function. This PR allows to use alternatively an InputOption based object instead, which supports all relevant options from the Geometry Node Editor / Group / Inputs options panel. Currently supported are: IntOptions, FloatOptions and VectorOptions.
Example usage:
def test_all_float_options(value: Float = FloatOptions(
default=3.0,
min=0.0,
max=5.0,
subtype=SubtypeFloat.DISTANCE,
name='My custom name',
tooltip='My description'
): pass
def test_some_int_options(value: Int = IntOptions(
default=3,
min=0,
max=5,
subtype=SubtypeInt.PERCENTAGE,
): pass
def test_some_vector_options(value: Vector = VectorOptions(
default_x=0.5, # see
default_y=1.0, # explanation
default_z=1.5, # below
min=0.3,
max=8.5,
subtype=SubtypeVector.TRANSLATION
): pass
For the vector default value, it was not possible to use tuple or [], because a typing definition like:
default: {float, float, float} | None = None
is not supported by the Python typing system.
The subtype option I only managed to set by using an operator (which needs a specific context). That means running the geometry script containing subtype options has to be done in the same blender workspace as the Geometry Node Editor. That means running a script in default Blender setup with Text Editor in the scripting workspace, any subtype options will be silently ignored.
TODO:
- if PR gets accepted, add some documentation
- Extend the Geometry Script addon, so scripts can be run from the Geometry Nodes Editor (to avoid the possible subtype issue mentioned above). This probably makes most sense for external editing and maybe we could even go as far as integrating some ideas from the vscode-blender extension to facilitate multi-file projects with automatic reload/re-import