Skip to content
Sascha-Stelling edited this page Dec 10, 2017 · 35 revisions

Web-Frontend to visualize streaming COLLADA 3D content. This work is sponsored by AIT - Austrian Institute of Technology and HCI , the Heidelberg Collaboratory for Image Processing (IWR, University of Heidelberg)

TODO Sascha:

  • Write Wiki summary on streaming of COLLADA Files using HTTP Multiparts
  • Investigate & Write summary on State of the Art of streaming geometry data (example: VRML) and common features therein

TODO Kevin:

  • Improve Visualization Frontent code to support variable user viewpoint within changing mesh streaming
  • Check support of zipped dae by using models with textures
  • Support obj files in addition to dae (only if little effort)

Next Meeting: 2017-12-04 12h15 Berl.Str

Stream 3D geometry examples/RFC's:

Web-Frontends for visualizing 3D content:

Project concept

We use a NodeJS server to handle the requests simultaneously stored in a queue. The client sends a post request to the server, the server answers with multipart/form-data containing the locally stored collada file. The client is also a NodeJS server. Get request project_concept

The Collada file format

Collada is an open standard XML schema for exchanging assets between graphics applications. It supports physics, low-level lighting (ambient, point, directional, support), shader and animation

HTTP Multipart streaming

The HTTP Multipart protocol is commonly used to upload files to a server or vice versa.

State of the art of streaming geometry data

VRML(outdated):

VRML features: Interactive animation, interactive sound, interactive lighting, Streaming is difficult since you would have to download the whole mesh every time. However, there are frameworks trying to solve this problem by creating different LODs (level-of-detail) and a flexible LOD storage scheme

X3D (Succesor of VRML):

X3D features: multi-stage rendering, multi-texture rendering, shading with lightmap and normalmap, SSAO, CSM, Realtime Environment Reflection/Lighting

X3D already supports multiple streaming methods which are the following: Anchor, Inline, LOD, LoadSensor, Script and Prototype nodes support successive retrieval of content once initial model is displayed

Currently, there is a french game developing company called 3dduo working on a VR MMORPG with the visualization software BS Contact which is based on X3D. The software page is still up, however, the game homepage only shows a single image.

O3D (open source JavaScript API created by Google, outdated):

O3D features: Full featured 3D graphics engine which can be downloaded and ran through web browsers. It may load, render and transform models and their respective textures dynamically, using AJAX and/or COMET in real-time. No more traditional compilation of source code is needed, since all necessary ressouces are loaded in real-time

The latest Google Developers Blog post about O3D wrote about a game developer creating a game for social networks using O3D. When going to the developers homepage however, you can see them being closed in 2014.

SVG (vector graphics file format)

The Scalable Vector Graphics file format is, as the name implies, used primarily for vector graphics. However, since SVG-files can be modified by scripts that can be loaded on a webpage, it is possible to create 3D animations by transforming the flat 2D paths to the third dimension with such scripts. However, aside from some spinning logos, this method isn't widely used.

For the streaming aspect, there are methods described about how to stream SVG files using HTML like here.

However, SVG isn't used for streaming today and the articles are already more than 2 years old. Also, it is very fiddly to even get a 3D object in SVG and streaming this object has to be done by hand, too.

Resumé

As a result, we can conclude that most of these technologies are outdated or change too drastically with every update so the Collada file format stays as the best choice for our project since it is a solid and widely supported format which best fits our needs.

Clone this wiki locally