Live Programming in Rhino

Daniel Davis – 12 April 2011

An early sneak peak at a project I have been working on: live parametric programming for Rhino. As you edit the script, in real time, the geometry is created and modified. There is slightly more going on behind the scenes than just phrasing the text and turning it into geometry, because it is based on the Yaml language (hence Yeti), which allows references between objects. So you can name an object with a ‘&’ and refer to it with a ‘*’, effectively establishing a parametric relationship between the objects. It is still in the early stages, but the parametric engine is there, as is most of the phrasing stuff, so hopefully I can push out a demo / the source in the near future.

Share

Subscribe

Join the mailing list to receive an email whenever a new post comes out. Otherwise, you can follow me on Twitter, or add the RSS feed to your reader.

4 comments

  • Arend 27 April 2011 at 6:25 am

    Very nice work, how should I see the big picture of the project? What is the advantage of going with an own grammar set, instead of the ones that were before? (rather, where will it end? I read about maya’s troubles with mel: which was chosen over perl als a scripting language because of speed, but in the end was many times slower and less versatile when implemented with error reporting and new language features.

    However I see nice opportunities to define patterns or objects, (is it perhaps a processing equivalent of rhino?), and it would be awsome to see if such objects can be integrated in the present-state mature languages as python and *.net languages.

  • Daniel 1 May 2011 at 1:19 pm

    Hi Arend,

    The larger context for this project is that it is part of my PhD, which is looking at ways of making parametric models more flexible. Specifically I am trying to explore other ways of generating parametric models other than the graph based dataflow parametric models and the procedural scripts we traditionally use. Hence the reason why it is a live programming environment with a relational markup language.

    In terms of performance, it should be similar to Grasshopper since it is generating geometry through the same API and using a similar construction method. At the moment the code is not optimised and I have deliberately left out surface generation until performance improves.

    I am not sure how useful Yeti is yet. I am thinking it would be useful to define the underlying geometry in parametric models, and that people might find it easier to learn than scripting or parametric modelling since it is similar to the command line. I am planning to opensource the project once it becomes stable enough, so hopefully it is an idea that is picked up by others, and perhaps even forked to included something like python…

    Daniel

  • Mentioned 7 May 2011 at 6:51 pm

    […] is threading. Programming threads can seem daunting, I put them off until I had to create one for Yeti to, of all things, check for updates in the background without hanging up the interface. To my […]

  • Mentioned 5 May 2013 at 2:23 pm

    […] is threading. Programming threads can seem daunting, I put them off until I had to create one for Yeti to, of all things, check for updates in the background without hanging up the interface. To my […]

Leave a comment