Thornton Tomasetti’s CORE studio is pleased to announce Platypus, a new plugin for Grasshopper. We are releasing an Alpha build of Platypus today, for evaluation by the Grasshopper community. This first round of Alpha testing will run for two weeks, until April 24 2014.

Platypus allows Grasshopper authors to stream geometry to the web in real time. It works like a chatroom for parametric geometry, and allows for on-the-fly 3D model mashups in the web browser. Multiple [Grasshopper] authors can stream geometry into a shared 3D environment on the web – a Platypus Session – and multiple viewers can join that session on to interact with the 3D model. Platypus can be used to present parametric 3D models to a remote audience, to quickly collaborate with other Grasshopper users, or both!

First prototype video demonstrating streaming lines from GH >


Third prototype video demonstrating meshes, multiple authors, and multiple viewers.

CORE studio has been developing Platypus as a research project for the past few weeks, and we intend to keep prototyping through the Spring. We have been interested in 3D Geometry on the web for years – at least dating back to Benjamin Howes and Matt Naugle’s work with igloo at the Product Architecture Lab. We have worked with a handful of 3D web platforms over the past few months – Gteam, Glue, Bimsurfer – and are very excited by the direction these platforms are pointing. SHOP recently demonstrated how they are using Dassault Systemes’ 3DEXPERIENCE in practice, which also looks super exciting. Our group was introduced to THREE.js at the first AEC hackathon back in November 2013, and we’ve been anxious to find practical applications since then.

We know there’s a serious need for Grasshopper users to collaborate with each other more effectively. Another pressing need in the Grasshopper community is to present parametric work to a less tech-savvy audience in a dynamic way – often over the phone. Platypus was built to address these issues using a DIRTy web application (DIRTy stands for Data-Intensive Real-Time applications – I love this acronym! ). It draws inspiration from modern messaging and media sharing services, desktop sharing applications, MMORPGs, browser based 3D configurators, various mash-up sub cultures, and the recent push towards the web by the AEC industry over the past few years.


We are releasing our current Platypus prototype today to address some of these needs, and to suggest a slightly different heading for [AEC] 3D visualization on the web. You can download the Grasshopper plugin on food4rhino. The project is very much a work in progress, but we think it’s stable enough to share, and includes just enough functionality to be useful. We have a ton of ideas for new features and improvements, but we want to hear what is important to all of you first, and to learn how the site performs under real world workloads.

This first release will be functional until April 24, 2014, after which the Grasshopper components will not solve. Assuming that all goes well with this first alpha release, we are planning on another public Alpha or two this Spring, in advance of our Technology Symposium and Hackathon in New York.

Platypus is a research project that is enabled by Thornton Tomasetti’s commitment to innovation and research in the AEC industry. It would not have been possible without the following open source achievements: Three.js, Node.js,, and SocketIO4Net.

If you’d like to give Platypus a try, head over to the project’s food4rhino project page to download the plugin, then watch our Getting Started video below.


Lastly, we’d like to list some of our known issues and limitations (and an FAQ or two) – like we said, she is a work in progress!

Units and Origin. Platypus works just like Grasshopper – it uses Rhino’s units and global 3D coordinate system. Our 3D environment in the web browser is set up to work with models that are relatively close to 0,0,0 and that aren’t enormous. Skyscrapers modeled in mm might not render correctly in the browser, for example. It is up to the author[s] to coordinate units between their Grasshopper models and the browser’s 3D coordinate space..

Long lag times between Grasshopper update and browser[s] update. There are a number of variables that will affect Platypus’s front end latency – your internet connection speed, our server’s load at the moment, available ISP bandwidth on both ends, and finally the amount of data you are streaming to Platypus from Grasshopper. That last one is something that you can control. Smaller models will update faster than larger ones, as less data has to be bounced off of our web servers. During our testing, most users found a balance between model complexity, update frequency, and system latency relatively quickly. Small models are known to be super snappy ;]

Mesh Face and Line Count limits? In order to keep our data IO under control during initial testing, we’ve capped the amount of data a user can stream from any one Grasshopper component – 10,000 lines, and 50,000 mesh faces are the limits. Also, we only send one update per second to the servers when more than a handful of lines or mesh faces are being updated repeatedly.

Mesh transparency is a little funky. Yep – we know. This is a known THREE.js / webGL issue that we are trying to work around.

If Grasshopper crashes or I force it to quit, my geometry doesn’t get cleared out of the session in the browser. We’ve seen this one too – best thing to do in this case is to start a new Platypus session in the browser, and restart Rhino and GH.

What about my Grasshopper data? Is it secure between GH and the browser? Is any geometry stored on the Platypus servers? All Grasshopper data is sent to and from our servers as unencrypted JSON data using the websockets protocol. No user data is stored on our servers – all data just gets bounced off of our servers to everyone else in the session.


That’s it for now folks – enjoy the Platypus, and please let us know what you think on the Grasshopper Forum!