rest3d
SigGraph 2013
remi.arnaud@amd.com
remi@acm.org
Recap 2011
• 2011 – forming the idea and brainstorming
– GDC: small group discussed the idea for a rest based API
to simpl...
Recap 2012
• 2012 – prototyping rest3d, COLLADA2json
– http://www.slideshare.net/remi_arnaud/rest-3-
dupdatewebglmeetup110...
Status for SigGraph 2013 BOF
• COLLADA2JSON became Khronos glTF
– http://gltf.gl/
– https://github.com/KhronosGroup/glTF
–...
Where in the world is rest3d
Content creation
3Dapp3D model
Images
Animations
Physics
Audio
Script
…
Content ‘Pipeline’
Packaging
Optimization
Physics
Textures, Shaders
Animations
Modeler
Object files
Animation files
+ skin...
3D loader?
Packaging
Optimization A
Physics A
Textures, Shaders A
Animations A
Modeler A
My game
Polygons
multiple indexes...
COLLADA Refinery (2007)
https://collada.org/mediawiki/index.php/COL
LADA_Refinery
COLLADA Refinery 2.0.3
conditioners
Axis...
Integrated pipeline – Unity Editor
Packaging
IOS, Android, PC, Web (plugin), Flash
Optimization
Built-in
Physics
PhysX
Tex...
cloud (rest3d) pipelineModeler
Max
Maya
Blender
Databank
Editor
Desktop
Or web app
Assets
Database
Queries
Upload/download...
Use case: viewer
• Assets are stored in the cloud
• App query / search for assets
• App ask for ‘compiled’ assets for spec...
glTF as a command line tool
Modeler
Max
Maya
Blender
…
Exporter
COLLADA
converter
COLLADA2GLTF
WebGL
Turbulenz
Three.js
.....
Three main components
XML
Database
• BaseX server
• (sockets or http interface)
• Xquery
http
server
• Node.js + rest modu...
Hacking it together
Local Scene
• Single asset only
– Viewer simple API only allows for 1 model view
– click on model in scene send load even ...
Database assets browser
• Browse asset database
– Tree UI
– Hierarchical JSON from XML query
– Typed assets [model, image,...
Sketchup warehouse proxy
• Browse
– Dynamic tree MV UI
– Node.js html scraping with cheerio and
request
– Warehouse collec...
Sketchup warehouse proxy
• Fetch & Convert (most complex API so
far)
– Drag/drop UI (from warehouse tree to
asset tree)
– ...
Rewrite – and open source
• ~4000 lines of new JavaScript code
brand new AMD client code
– glTF loader
– COLLADA loader
– ...
samples
http://rest3d-remi.rhcloud.com/index.html
Tested in Chrome, Firefox, Safari
 (new) free and paying service from RedHat
– 3 small ‘gears’ for free
– Could not fit database and node server in a small...
Online converter
http://rest3d-remi.rhcloud.com/upload/index.html
Open 3D Graphics Compression
(Open3DGC)
• Efficient cross platform implementation of patent free MPEG
graphics compression...
Open3DGC Mesh Compression
• Triangle Fan-based Compression [Mammou’09]
[Mammou’09] K. Mammou, T. Zaharia, F. Prêteux, “TFA...
Open3DGC Mesh Compression
• Compression Efficiency
 160 models from different sources (e.g., CAD, 3D scans, modeling tool...
Open3DGC Mesh Compression
• Speed
 Non-optimized C++ implementation, single thread (rooms for parallelization)
 Intel i7...
Open3DGC Mesh Decompression
• Decoder
Demo & deep dive
• Running rest3d local
– Debugging
• Running on server
• Database vs. node.js vs. cache
– Socket vs. http...
Let’s talk
• Roadmap ?
– More work on the viewer / UI
– More work on the server
– Where is the spec ?
• Contribute ?
– Joi...
Thank you !!
Rest3d BOF presentation at SigGraph 2013
Rest3d BOF presentation at SigGraph 2013
Rest3d BOF presentation at SigGraph 2013
Rest3d BOF presentation at SigGraph 2013
Rest3d BOF presentation at SigGraph 2013
Rest3d BOF presentation at SigGraph 2013
Upcoming SlideShare
Loading in …5
×

Rest3d BOF presentation at SigGraph 2013

2,261 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,261
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
26
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • All this content need to get in the game, somehow
  • Typical content toolchain – it is a pipeline. Each stage has its own tools its own format.
  • It’s really hard….
  • 6 years later, we are still doing the same things
  • Rest3d BOF presentation at SigGraph 2013

    1. 1. rest3d SigGraph 2013 remi.arnaud@amd.com remi@acm.org
    2. 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. 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. 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
    5. 5. Where in the world is rest3d
    6. 6. Content creation 3Dapp3D model Images Animations Physics Audio Script …
    7. 7. Content ‘Pipeline’ Packaging Optimization Physics Textures, Shaders Animations Modeler Object files Animation files + skins/bones Shader files + psd Physics files Binary files package file Multiple indexes, Quads Clips, bézier, complex Transformation graph Vertex / Fragment shaders Convex Mesh, colliders Single index, triangles DXTs, simplified scene Compressed folder
    8. 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
    9. 9. COLLADA Refinery (2007) https://collada.org/mediawiki/index.php/COL LADA_Refinery COLLADA Refinery 2.0.3 conditioners Axisconverter Compress Transforms Stripper Image conversion Axis transform Coherencytest ** Use this !! Copyrighter De-indexer Triangulate Vertex cache optimization Optimizer Packager
    10. 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
    11. 11. cloud (rest3d) pipelineModeler Max Maya Blender Databank Editor Desktop Or web app Assets Database Queries Upload/download Processing Conversion (glTF) Compression Image conversion WebApp Turbulenz Three.js Cesium …WebGL… Desktop Browser Cloud REST3D REST3D REST3D
    12. 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
    13. 13. 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)
    14. 14. 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
    15. 15. Hacking it together
    16. 16. 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
    17. 17. 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
    18. 18. 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
    19. 19. 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
    20. 20. 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
    21. 21. samples http://rest3d-remi.rhcloud.com/index.html Tested in Chrome, Firefox, Safari
    22. 22.  (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’
    23. 23. Online converter http://rest3d-remi.rhcloud.com/upload/index.html
    24. 24. 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
    25. 25. 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
    26. 26. 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
    27. 27. 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
    28. 28. Open3DGC Mesh Decompression • Decoder
    29. 29. Demo & deep dive • Running rest3d local – Debugging • Running on server • Database vs. node.js vs. cache – Socket vs. http • API details
    30. 30. 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 !
    31. 31. Thank you !!

    ×