algorithmic modeling for Rhino
In a collaboration with Shajay Bhooshan (http://data-tribe.net/wework4her/index.php), Autodesk Maya 2009 can communicate with McNeel’s Rhinoceros::Grasshopper. The work on communicating to and from Grasshopper via the user datagram protocol (UDP) was to effectively speed up communication between programs without the use of each program writing and reading a text file. This investigation was begun to open up Grasshopper to the outside world and eventually use it to drive physical associations via arduino and other interfaces. Processing was used initially as it is a very simple platform to used to test communication to and from Grasshopper. The first objective of the investigation was to eventually connect up with a custom plugin which Shajay Bhooshan has been developing.
On the Maya side, Shajay is controlling and augmenting this already vast platform with custom C++ API Nodes. His work can be seen on We Work 4 Her. This particular ‘fluid_UDP_Node’ transmits fluid data per voxel over UDP. Shajay has also taken advantage of the Open Frameworks, leveraging some of the code within the Maya plugin.
On the Rhino Grasshopper side, I have developed a very simple UDP receiver component in vb.net. The data is transmitted as one long string of comma separated values. Currently Shajay can send me fluid density and velocity information per voxel, but really, any type of information could be sent out. This information is parsed in the GH component and used to visualize the fluid as a Surface. As with the rest of the UDP experiments, Giulio Piacentino’s “The Engine” (http://www.giuliopiacentino.com/grasshopper-tools/) component made the refreshing of the Grasshopper canvas possible.
As you can tell, running all of these applications (including screen capturing) start to have an effect on this single processor machine. Maya can effectively optput the data between 8 - 12 frames per second depending on how many applications are running. The promising aspect of using UDP is that data can be sent from one computer to another via a network. This could effectively distribute the workload of complex combinations of processes to many devices.