RhinoAnywhere: Full Rhino modeling on the web! (open source project)

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.

Demo

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.

Source code

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.

Credit

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

19 Likes

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.

Any thoughts?

P.S. Here’s a behind the scenes video of how it looks when the server is run together with the web client.

1 Like

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.

2 Likes

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?

2 Likes

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.

3 Likes

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 :slight_smile: Hope to see you at AEC tech next year!