Future directions: visual non-destructive programming and construction

Next
 From:  andrewsimper
5971.1 
Hi Michael,

MoI is a brilliant sketchpad, and I don't want to take away from the simplicity of constructing objects and immediacy of what is on offer. I think getting away with the bare minimum in a tool is essential to focus on the task at hand and to get it done as quickly as possible.

You probably get this one all the time, and I can understand the huge complexities involved, but one thing that I find frustrating though is how brittle construction is, where in the final object I find I needed to have changed something in the original shape that constructed it to fine tune the results to what I actually wanted, this takes me a lot of time to repeat the steps from scratch every time. Not an easy one to tackle but being able to keep things non-destructive as much as possible would be wonderful if you can work out how to make the impossible happen. I notice that people have requested a non-destructive fillet command command, and a multi-radius fillet, so perhaps this is a good place to investigate workflow around non-destructive editing. SolidWorks has limited features along this line, where you draw shapes and set constraints to some parameters like which edges get a fillet and the fillet radius and can go back and edit those constraints or the original shapes. Even if this breaks things down the line if you could at least get some of the steps along the way to the final result done automatically this would still help.

Sometimes it's fun also to play with more algorithmic generation and see what happens, this can be inspiring in a completely different way, but not if you have to delve into scripting languages to get there since you are suddenly ripped away from shapes and geometry and plunged into the world of symbols. I recently watched a great talk on this kind of non-brittle construction using basic 2D concepts, that can also be driven by data, but I think this sort of thing is really useful for 3D as well, data or not:
Drawing Dynamic Visualisations:
http://vimeo.com/66085662
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
5971.2 In reply to 5971.1 
Hi Andrew, yes I definitely do want to explore various things related to these things you're describing in the future. These are some fairly different things that you've covering here though, like being able to go back and change a fillet radius and have your sequence of operations replayed is not quite the same thing as a full blown visual programming environment.

The visual programming environment stuff is really cool of course, but it's pretty hard to do that without heavily impacting the UI for controlling different aspects of it. When that UI is not used for basic processes it adds a lot of additional complexity to someone that's just trying to do basic drawing... and MoI is heavily focused on trying to make that basic drawing process very accessible and streamlined.

Have you taken a look at the Grasshopper system that's available for Rhino? It's another approach at doing a type of visual programming for model construction.

I have to say though that I think I kind of lean more towards doing more of that kind of stuff with more explicit code, there is a certain amount of overhead in trying to express programming concepts visually and things like conditional loops just take up more space in the presentation and just seem to get kind of unwieldy fairly quickly. And in order to use the visual programming layer really effectively it kind of seems like there's enough of a bar to that already that I'm not sure how much benefit there really is. A lot of people are not going to have enough "algorithmic aptitude" to really make use of the visual programming environment and meanwhile someone who is experienced in programming can be kind of inconvenienced by the visual programming stuff rather than being able to use more compact code... And it becomes specific enough that it's not as easy for someone to find existing tutorials or books for how it works. Like with JavaScript or Python or something there are a lot of pre-existing resources out there that you can use as reference material to learn some of the basics.

Those are some of the reasons why I'm not all that convinced why a very "visual programming" type approach would really be what I'd try to focus on in the future for enhanced procedural or generative type modeling...

Any of that is probably a fair ways out yet though, and I think I would be more likely to focus on a kind of tweaking and replay of just a captured history sequence of operations earlier than a more dedicated algorithmic/generative type toolbox.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Rich (-RB-)
5971.3 In reply to 5971.2 
Such an in depth and thoughtful reply Michael. One of the reasons no doubt a lot of us keep both the Rhino and MoI licences.

Agreed - why would you need a parametric MoI when you already have a fully fledged Grasshopper (fantastic for those of us who never learnt a language)


- Rich
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  andrewsimper
5971.4 
The non-destructive history / stack is definitely the most useful and practical for me doing stuff in MoI since there are no new skills to learn since all operations are existing ones they have already been done to generate the shape in the first place. I think the trickiest part of it will be handling selections when the thing being selected underneath has changed in geometry. For me though 95% of the time I just change the position of some points in a curve that is used to generate the final shape, so there aren't even any added or removed points.

I have checked some videos of grasshopper and it does look like an excellent tool to make spaghetti. I much prefer the ability to edit scripts that are generated on the fly through visual actions as shown in the video. Even if the scripts are generated in a more brittle way from exporting a history / stack of operations that could still be very useful.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  andrewsimper
5971.5 
I also just saw another post where it showed the kind of non-destructive construction I am talking about with the revolve tool, so thanks Michael for already starting on this stuff!
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  Michael Gibson
5971.6 In reply to 5971.4 
Hi Andrew,

> I think the trickiest part of it will be handling selections when the thing being selected
> underneath has changed in geometry. <...>

Yes, this is one of the generally tricky areas in history based modeling, if the model structure changes too much it can get difficult to figure out pieces of the changed model should have the further operations applied to them. It's most tricky when things change in such a way that what was one edge before is now split up into multiple edges and things like that.


> I also just saw another post where it showed the kind of non-destructive construction I am
> talking about with the revolve tool, so thanks Michael for already starting on this stuff!

Yes, there is some basic stuff in place already - after you have done any surface creation command you can usually edit the curves and the surface will regenerate.

These can be chained together to a certain extent as well, like you can generate a curve offset, enable history updates on the offset result (select the offset and run Edit > History > "Enable update"), and then do an extrusion from the offset, and then when you edit the original curve the offset will update and then the extrusion of the offset will update as well.

The main limitation is that all objects in the chain must be in the current model - many operations like booleans or trimming are the equivalent of deleting the current object and then putting in a new one in place of it, those kinds of operations will break the chain.

In the future if I can store a sequence of operations and old versions of objects in a kind of centralized history file it will help to avoid this limitation. But the tricky part is that the history list will probably tend to grow to be a pretty large file, and things that handle large amounts of data usually need careful planning and execution in order for them to work well.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All