Hey! Just wanted to show this demo of running Rhino in a web browser using RhinoAnywhere: the result of a 25 hour long hackathon developed by 10 hard working individuals during AEC tech in NYC this weekend.
Below is a demo of using the system. After providing a URL to a server, the user is able to view, create and modify Rhino models in the web browser.
How does it work?
It renders the Rhino viewport on a server and then uses pixel streaming to display the scene in the browser. User interactions such as mouse clicks and keystrokes are sent to the server, which then responds to the events accordingly. The technique is commonly used in the gaming industry, but less so in 3D modeling.
How is it useful?
It gives you full access to all the Rhino modeling awesomeness in the browser, plus the ability to render huge models which otherwise would’ve crashed chrome.
This project is fully open source and can be accessed at github.com/rhino-anywhere.
Full disclosure: this is currently a proof of concept and needs more work to be fully useful. We hope this hackathon project can inspire to continue developing the technology further.
Kudos to the entire team for winning the “Best Collaboration” hackathon prize! Meet the talented minds behind Rhino Anywhere: Alfredo Chavez, Dan Cascaval, Eleftherios Kourkopoulos, Jo Kamm, Josh Grift, Justyna Szychowska, Kyle Slugg-Urbino, Sergey Pigach (@enmerk4r), Callum Sykes (@csykes), Emil Poulsen (@emilpoulsen).
Rhino rhino3d #anywhere #aectech aec opensource #hackathon #pixelstreaming Rhino Developer
I would love to get your take on this @stevebaer @dale @will @nathanletwory (@ anyone else?)
Currently we use a GUI-based instance of Rhino to render the viewport on the server for RhinoAnywhere (see above). I’m wondering if it’s possible to use a headless instance of Rhino to render the viewport instead? In other words, is it possible to use Rhino.Inside and RhinoCommon in a headless context to generate rendered images of a scene?
It would be nice if there was a more clould-friendly way to do this. The problem with the current approach is scalability.
P.S. Here’s a behind the scenes video of how it looks when the server is run together with the web client.
For scalability you’ll want Rhino Compute, but I don’t think that it currently is able to render viewports. @AndyPayne might know more about it, too.
Another possible implementation is to enable realtime worksharing so multiple people from different browsers can model and annotate in realtime? This can probably work as different temporary files are somehow linked and managed by a compute server?
Hey Emil, we don’t currently have a way to do this from compute. It’s one of those features I’ve always wanted to try and hook up but never found the time for. Our display architecture is still reliant on the existence of a window.
Cool hackathon project by the way. Wish I could have made it to AEC Tech this year.
Hey @stevebaer! I see, thanks for clarifying! Having the ability to generate rendered bitmaps on compute would open up a lot of interesting possibilities I think.
And thanks for the kind words about the hack! It was really fun to work on Hope to see you at AEC tech next year!