2. Recap 2011
• 2011 – forming the idea and brainstorming
– GDC: small group discussed the idea for a rest based API
to simplify usage of 3D content in the web
– http://www.slideshare.net/remi_arnaud/6-10presentation
– http://www.slideshare.net/remi_arnaud/collada-webgl
– SigGraph BOF gathering
• Resources:
– http://rest3d.org
– Mailing list: (join
us!)https://groups.google.com/forum/#!forum/3d-rest
3. Recap 2012
• 2012 – prototyping rest3d, COLLADA2json
– http://www.slideshare.net/remi_arnaud/rest-3-
dupdatewebglmeetup11072012
– http://www.scribd.com/doc/102183295/Siggraph
2012-Pamphlet
– http://www.youtube.com/watch?v=Dja5achkgZc
– SigGraph BOF
• Use case discussion
• Group said – lets focus on WebGL viewer APP
4. Status for SigGraph 2013 BOF
• COLLADA2JSON became Khronos glTF
– http://gltf.gl/
– https://github.com/KhronosGroup/glTF
– Fabrice Robinet, Patrick Cozzi, Tony Parisi, Rémi
Arnaud
• rest3d prototype recently open-sourced
– https://github.com/amd/rest3d
– Rémi Arnaud, Khaled Mamou
8. 3D loader?
Packaging
Optimization A
Physics A
Textures, Shaders A
Animations A
Modeler A
My game
Polygons
multiple indexes
image format
mesh optimization, split
complex transform hierarchy
no shader programs
no collision volumes
verbose text (xml) parsing
10. Integrated pipeline – Unity Editor
Packaging
IOS, Android, PC, Web (plugin), Flash
Optimization
Built-in
Physics
PhysX
Textures, Shaders
Shader Factory
Animations
Mecanim
Modeler
Max Maya Blender Modo Cinema4D XSI
Fbx or simple COLLADA (e.g.
no physics, morphing,
shaders..)
Unity Engine
C
o
n
t
e
n
t
p
i
p
e
l
i
n
e
12. Use case: viewer
• Assets are stored in the cloud
• App query / search for assets
• App ask for ‘compiled’ assets for specific target
• Need geometry, Shaders, textures, animations,
lights, cameras…
• Compress data for bandwidth use and potentially
HW decode
• Cache!! – client and server cache are very
important
14. glTF as a command line tool
Modeler
Max
Maya
Blender
…
Exporter
COLLADA
converter
COLLADA2GLTF
WebGL
Turbulenz
Three.js
...
Converter flags (or profile) to control
conversion for specific target
(e.g. shader generation, animation, transparency control, image format)
16. Three main components
XML
Database
• BaseX server
• (sockets or http interface)
• Xquery
http
server
• Node.js + rest modules
• Javascript
Html
client
• Html/Javascript
• WebGL viewer
• UI framework
18. Local Scene
• Single asset only
– Viewer simple API only allows for 1 model view
– click on model in scene send load even in
viewer
– Viewer loads json scene description…
[GET] /rest3d/assets/Dog/models/model.json
– .. then pages [partial http requests] data
• Issues
– Partial content non cacheable by database
– Node.js server caching implemented – not
ideal
– Client side does not cache 206
19. Database assets browser
• Browse asset database
– Tree UI
– Hierarchical JSON from XML query
– Typed assets [model, image, other]
– Converted assets [collada2json, glsl
shaders]
– Should implement lazy tree
evaluation
– Show asset info in right viewport,
direct URL access
[GET] /rest3d/assets
• Drag/drop into scene
– Local operation ..
• Considering shared scene through
websockets
22. Sketchup warehouse proxy
• Browse
– Dynamic tree MV UI
– Node.js html scraping with cheerio and
request
– Warehouse collection browsing issue: leads
to unavailable content (protected or not
converted)
– QooxDoo complex view system and dynamic
update issues
[GET] /rest3d/warehouse/
• Search
– Simple text box UI – [enter] / search button
linked
– Warehouse search can filter specific
available format
– Search return is a list, not a tree…
[GET] /rest3d/warehouse/search/search_string
23. Sketchup warehouse proxy
• Fetch & Convert (most complex API so
far)
– Drag/drop UI (from warehouse tree to
asset tree)
– http get zip file to rest3d server
– Node.js multi-file zip archive to file
system decompress
– Datase file upload / store
– asset.xml management through xquery
– COLLADA2json server side conversion
• Could not get nodejs module to work in
Ubuntu cloud
• Need to spawn async process !
[PUT] /rest3d/assets/dog
[body]http://sketchup.google.com/3dwarehouse/download?mid:20093
34a95ee8f4c4038ed23c800b042
24. Rewrite – and open source
• ~4000 lines of new JavaScript code
brand new AMD client code
– glTF loader
– COLLADA loader
– WebGL rendering
– Simpler UI framework (based on jquery, jquery-UI, jquery-
layout)
• ~450,000 lines removed ! (qooxdoo, Khronos glTF
viewer sample)
https://github.com/amd/rest3d
28. (new) free and paying service from RedHat
– 3 small ‘gears’ for free
– Could not fit database and node server in a small gear
– Deploy directly from github
• Provided the github project contains the .openshift configuration files
– Scalability
• ‘cartridge’ can spread over multiple ‘gears’
30. Open 3D Graphics Compression
(Open3DGC)
• Efficient cross platform implementation of patent free MPEG
graphics compression tools
– 3D Meshes with multiple attributes per vertex
• Positions, normals and texture coordinates
• Float attributes (e.g., skinning animation weights)
• Integer attributes (e.g., bone ID, material ID)
– Bone based animations (coming soon)
• Time varying transforms (e.g., rotation, scale, translation)
• C/C++ Implementation under MIT License
https://github.com/amd/rest3d/tree/master/server/o3dgc
31. Open3DGC Mesh Compression
• Triangle Fan-based Compression [Mammou’09]
[Mammou’09] K. Mammou, T. Zaharia, F. Prêteux, “TFAN: A low complexity 3D mesh compression algorithm”
Computer Animation and Virtual Worlds, Vol. 20(2-3), pp. 343–354, 2009
32. Open3DGC Mesh Compression
• Compression Efficiency
160 models from different sources (e.g., CAD, 3D scans, modeling tools)
Various topologies (i.e., open/closed, manifold/non-manifold, arbitrary genus)
WebGL-Loader and Open3DGC: 14 bits for positions et 10 bits for normals/texture coord.
OpenCTM: default parameters (not fair)
Open3DGC is 7.3 times more efficient than Gzip and
1.6-1.8 times more efficient than WebGL Loader and OpenCTM
33. Open3DGC Mesh Compression
• Speed
Non-optimized C++ implementation, single thread (rooms for parallelization)
Intel i7-2600 CPU @ 3.4 GHz, Win7 x64, RAM 10 GB
35. Demo & deep dive
• Running rest3d local
– Debugging
• Running on server
• Database vs. node.js vs. cache
– Socket vs. http
• API details
36. Let’s talk
• Roadmap ?
– More work on the viewer / UI
– More work on the server
– Where is the spec ?
• Contribute ?
– Join the email list
https://groups.google.com/forum/#!forum/3d-rest
• See also:
– COLLADA/glTF BOF !