Ortoo: The Geometry Messaging System

with 2 Comments

EDIT: I’ve moved the central server for Ortoo. I’ll need some time to fix the release, so Ortoo doesn’t work right now. Sorry!


download it here


1.0        Summary:

Ortoo provides peer to peer geometry sharing. Built around a binary mesh format* that is 5x – 6x smaller than an .obj file, Ortoo is able to transfer mid-size meshes (< 35k vertices) quickly and painlessly between connected peers. The sharing/hosting app (called the Ortoo Browser) handles all the technical details of peer to peer networking via Unity’s RakNet implementation, so there is no setup required on the user side.

Currently, only geometry created with Grasshopper is supported, but future development would include support for Blender.

Ortoo is licensed under http://creativecommons.org/licenses/by-nd/3.0/deed.en_GB

*Originally written by Aras Pranckevicius from Unity, and modified for this project.

2.0        How To Use:

  1. Share a mesh
  1. Drag the “Outbox” component to the canvas
  2. Hook up any mid-size triangulated mesh (<35k verts) to it
  3. Start up the Ortoo Browser
  4. Click “Share Outbox”
  5. Fill in the details
  6. Although you can’t view the main page anymore, your Outbox will be visible and connectable to anyone else running the Ortoo Browser
  7. To stop sharing click “Turn Sharing Off”
  1. Join a Session
  1. Open the Ortoo Browser and click on an available session
  2. Fill in the details
  3. To disconnect, click “Cancel”
  4. Drag the Inbox component on to the GH canvas and manually trigger it with a button, boolean toggle, or timer.

2.0        How it Works

There are two main parts to Ortoo:

  1. Sharing the Data
  1. Ortoo shares data via Unity’s RakNet implementation.
  2. More specifically, the Ortoo Browser (a separate app) connects to a privately run Master Server in order to register a sharing session.
  3. No mesh data is transferred here – the Master Server is only used to allow other people to connect to you (some fancy network footwork is done in the background here).
  4. The Master Server then displays all currently connectable sessions (of which yours is one)
  5. When someone else joins your session the data in your Outbox is passed to the Inbox of every other connected peer
  6. As a results, you will only have one file in your outbox, but multiple files in your Inbox
  7. All data is transferred directly from you to your peers, it does not go through the central server.
  1. Reading/Writing the Data
  1. The Outbox component for Grasshopper takes any triangulated mesh as input and writes it in a custom binary format to the “AppDataRoamingOrtooOut” folder.
  2. This folder is monitored by the Ortoo Browser and is what will be sent around to your connected peers (should sharing be turned on)
  3. The Inbox component for GH grabs all the mesh data in the “AppDataRoamingOrtooIn” folder and construct GH meshes, which it then outputs as a list
  1. Currently you have to manually refresh the Inbox component either through a button, boolean toggle, or timer.



2 Responses

  1. Peter
    | Reply

    What does it mean ‘3d files created with Grasshopper?” Grasshopper is just a data visualization tool which runs in Rhino’s 3D modeling environment; do you claim that Ortoo can work with 3dm files created in Rhino? btw it looks awesome, cannot wait to give it a try and share some of my generative 3D printed models;)

  2. Daniel
    | Reply

    Hi Peter,

    Ortoo does not stream the actual Rhino file (.3dm), rather it uses Grasshopper to save Rhino Meshes in a custom binary format (5x-6x smaller than an obj). It does this because otherwise the transfer of the meshes over the network would be slow (due to repeatedly transfering 1mb-2mb files). If you stay in the 32k vertex range, the individual mesh file sizes are ~10kb.

Leave a Reply