SceneHash: A Content-Indexable Data Structure for Collaborative 3D Environments
Componente | Categoria |
---|---|
Luigi Cinque | Componenti strutturati del gruppo di ricerca |
Andrea Sterbini | Componenti strutturati del gruppo di ricerca |
Maria De Marsico | Componenti strutturati del gruppo di ricerca |
Real-time collaboration has become ubiquitous. Google Docs, Dropbox Paper, Microsoft Live Share are example of these systems used by millions of people worldwide. In this dire times, we have relied on collaborative tools to use us working remotely and safely. At this time though, many 3D design applications do not have collaborative features.
All Computer Graphics applications need to represent complex 3D scenes that model the cameras, shapes, materials, lights and layouts of real-world environments. The two most popular data structures used to encode this data are scene graphs and node networks. The former encodes scene data as direct acyclic graphs, where node properties can be inherited in the hierarchy. The latter are forms of data flow graphs that describe scenes procedurally. These scene representations have served the graphics community well over the years. But, as we will discuss in the project description, collaborative editors cannot be built directly on scene graphs or node networks.
Inspired by Git, we propose to investigate SceneHash, a content-indexable data structure for 3D scenes. In scene hash, all scene elements, from large objects to shape vertices, are referred to by their content hashes. Scene data structures can be built using these hashes in leu of explicit references. Since in this representation, a local edit changes the identity of the containing object, tracking changes in large data structures becomes easy. This in turns means that scenes can be concurrently edited at their finest granularity, while ensuring that the scene data structures remain well-formed after each edit.
We will use this data structure to (1) build a prototype 3D collaborative editor where scenes can be seamlessly edited, (2) speed up typical graphics editors that use concurrent processes to provide an editing-while-rendering workflow (3) seamlessly provide a scalable and robust caching system for large data flow graphs used in procedural modeling and shading.