FullControlXYZ / fullcontrol

Python version of FullControl for toolpath design (and more) - the readme below is best source of information
GNU General Public License v3.0
670 stars 77 forks source link

[FEATURE REQUEST] make a Blender add-on #108

Open ES-Alexander opened 4 days ago

ES-Alexander commented 4 days ago

Is your feature request related to a problem? Please describe. FullControl as a Python library is lightweight, and useful for text-based programmers, but currently does not support realistic rendering (per #69), and may be a struggle to use for people who prefer visual interfaces and programming approaches.

Describe the solution you'd like Blender is designed to be able to handle and render meshes, and has visual programming functionality built in through its node system. With the upcoming 4.3 release there will also be gizmos, which can allow less technical users to visually manipulate parameters of a design, without needing a detailed understanding of the underlying code (similar to the models currently provided on fullcontrol.xyz, but allowing users and developers to more easily create and share their own parametric gcode designs).

A Blender add-on based around the FullControl library could enable these use cases, and make the project more accessible to more people. This may need to be in a separate repository that pulls in FullControl as a library, but I'm raising the Issue here so it can be readily found and discussed.

Describe alternatives you've considered The main alternative is just not doing it.

I'm aware this suggestion would be a lot of work, and it's not something I'm equipped with the time to approach at the moment - just figured it's a cool enough idea that it's worth sharing, and maybe it will be sufficiently aligned with someone's interests that they decide to give it a crack (even if that's me in a few years or something 😅).

Additional context I thought of this while watching this presentation (50 mins), which got me excited for the potential of the gizmo system, and the ability to quickly generate and visualise collections of similar designs in a parameter space.

AndyGlx commented 3 days ago

This idea sounds interesting. I've never really gotten into visual coding. I'm generally a visual person and have always disliked writing and language, so it's surprising that I tend to prefer text-based coding over graphical programming. However, I fully understand why people like it.

I'd love to see this implementation.

By the way, something somewhat related to this is real-time widgets for toolpath design in the Python environment. I've got a working method for 2D, which I think is a great starting point. You can move sliders to see how they affect parameters, with immediate, smooth updates to the 'design' (likely for one layer). I'm just putting together a demo to show how you can use in with your own choice of parameters and ranges, etc.

I haven't found an easy 3D version that works well, as the smoothest implementation I've used was with Bokeh, which I understand is more suited for 2D rather than 3D. And there's a big difference between a 3D line and a 3D surface, where the surface is going to have many fewer data points than a 3D line needs to 'look like a solid surface' - but that's also linked to ongoing stl stuff, about deriving FullControl toolpaths from a surface model. 

None of that is the same as what you're describing, but i'm just writing it here for completion.