A presentation on Bento, the central pipeline component developed at Digital Domain to enable the creation of the LA Destruction sequence of 2012 at Digital Domain.
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
1. Earthquake!
Building a pipeline to Destroy Los Angeles
in 2012
December 2009
Osiris Perez
Masuo Suzuki
Rito Trevino
Haarm-Pieter Duiker
2. Destroying Los Angeles for 2012
► Feature Film, Photoreal Quality Requirements
► Massive Number of Assets
• 5000+ in some scenes
► Multi Disciplinary/Application/Platform Workflow
• Layout, Animation, FX, Lighting, Compositing
o Maya, Houdini, Nuke
9. Bento: A Layout System
► Light weight
► Scalable
► Enable Parallel Workflows
10.
11.
12.
13.
14.
15. Bento Implementation
► Python and SQL Database
Core Python Module
3d App Implementation: Multi-platform, Multi-application
Maya, Nuke, Houdini
► XML throughout
Easily to edit or troubleshoot during development
Minimized database access
16. In Production: Asset Preparation
► Departments publish Components
Published into database
Added into Bento Asset
Ex. Modeling, Texturing, Rigging, Lookdev
17. In Production: Parallel Shot Workflow
► First Layout publish creates a Shot Bento Box
► Shot Work ensues
Animation, FX and Lighting do their work
Anyone can touch anything
► Work is published into database
New Components or versions of Components
o New versions of Asset Instances and Boxes
► Updates from other depts. reintegrated into scene
► Repeat until “Final!”
18. In Production: Updating in place
► Integrating updates essential to working in parallel
► Bento Updater
• Robust
o Rebuilding a scene with 5000+ assets is not fun
• Configurable
o Artists choose which updates to incorporate
• Safe
o Geometry, Bound Box, etc. live under the Bento Asset node
19. Moving Geometry Around
► Geometry had to be consistent in all packages
► Houdini’s .bgeo format used for interchange
Proprietary support in Maya and Renderman
Relatively simple format
Polys and Subdivs
Full geometry or animated point clouds
Lots of primitive variables
20. Getting It to Render: geotor
► Renderman DSO that did many things
Geometry
Primitive variable mapping
Motion Blur
Material Assignments
Texture Assignments
Shader Parameters
► Fed directly by Bento Asset Component data
31. Conclusion
► We built a pipeline to handle multiple
Applications
Departments
Platforms
Shots
Libraries
Thousands of Assets
32. Pros and Cons
► Pros
Light weight
Scalable
Multi application, Multi platform
► Cons
Not all apps are created equal
Lots of database writes
33. Thanks
► Konstantin Hristov
► Jonathan Gerber
► Mike Meckler
► Remy Torre
► Mohen Leo
► Phil Peterson
► The Lighting Team ► The FX Team
44. Bento Structures: Asset
► Collection of published Components
All tracked in the database
► Asset Inheritance
Shot Instances inherit from
Central Asset
Instances in other Shots or Libraries
Components can be overridden
► XML versioned and tracked in the database
45. Bento Structures: Box
► Collection of published Assets and other Boxes
Membership
Placement
Time Offsets
► Translate to and from DCC Apps
Maya, Nuke, Houdini
► XML versioned and tracked in the database
46.
47. Interactive Use
► Bento Asset Nodes
Level of Detail
Role
Display Type
► Scenes containing 5000+ assets load quicky
Goals for Bento
Bento Represents
Elements
Transforms
Hierarchies
Bento Data Hierarchy
Bento Represents
Elements
Transforms
Hierarchies
Bento Data Hierarchy
Bento Structures: Bento Asset
Collection of Components for a Single Asset
All Components are tracked in the database
Ex. Model, Textures, Shaders, Anim Curves, Sims Geometry streams
Asset Component list can be rebuilt from database
Asset Inheritance
Shot Instances inherit from Central Assets Definitions
Single publish for Models, Textures, Shaders, etc. Components
Per-shot publish for Instance Components like Animation and FX.
Multiple-levels of inheritance possible
Needed in some cases
Libraries of Sims and Animation instanced into shots
Ex. City Blocks
Ex. Crumbling Fissure Walls
Ex. Building Sims from one shot used in another
Asset .XML representation is versioned and tracked in the database
Bento Data Hierarchy
Bento Structures: Bento Asset
Collection of Components for a Single Asset
All Components are tracked in the database
Ex. Model, Textures, Shaders, Anim Curves, Sims Geometry streams
Asset Component list can be rebuilt from database
Asset Inheritance
Shot Instances inherit from Central Assets Definitions
Single publish for Models, Textures, Shaders, etc. Components
Per-shot publish for Instance Components like Animation and FX.
Multiple-levels of inheritance possible
Needed in some cases
Libraries of Sims and Animation instanced into shots
Ex. City Blocks
Ex. Crumbling Fissure Walls
Ex. Building Sims from one shot used in another
Asset .XML representation is versioned and tracked in the database
Bento Data Hierarchy
Bento Structures: Bento Box
Collection of Bento Assets and other Boxes
Represents
Asset Membership
Placement
Used for
Full Scenes
Instanced Collections of Assets
Buildings
City Blocks
Box to Host Application and Back
Maya Outliner
Houdini Node Graph
Nuke 3d system
Box .XML representation is versioned and tracked in the database
Bento Data Hierarchy
Bento Represents
Elements
Transforms
Hierarchies
Bento Structures: Bento Asset
Collection of Components for a Single Asset
All Components are tracked in the database
Ex. Model, Textures, Shaders, Anim Curves, Sims Geometry streams
Asset Component list can be rebuilt from database
Asset Inheritance
Shot Instances inherit from Central Assets Definitions
Single publish for Models, Textures, Shaders, etc. Components
Per-shot publish for Instance Components like Animation and FX.
Multiple-levels of inheritance possible
Needed in some cases
Libraries of Sims and Animation instanced into shots
Ex. City Blocks
Ex. Crumbling Fissure Walls
Ex. Building Sims from one shot used in another
Asset .XML representation is versioned and tracked in the database
Bento Structures: Bento Box
Collection of Bento Assets and other Boxes
Represents
Asset Membership
Placement
Used for
Full Scenes
Instanced Collections of Assets
Buildings
City Blocks
Box to Host Application and Back
Maya Outliner
Houdini Node Graph
Nuke 3d system
Box .XML representation is versioned and tracked in the database
Bento Technology Structure
- Organizational layer on top of a database
1000s of assets * 10 components per asset * 100 artists = database meltdown
Reading XML data rather than straight form the database allowed us to transfer some of the read overhead to the network infrastructure and away from the database, which could have been a single point of failure. Database read performance was also not production ready at the start of the project.
Production Workflow 1
Bento Asset is versioned up and Published as components are published.
Production Workflow 2
The Shot begins with the first Bento Box publish from Layout
Bento Asset Instances are versioned up and published as Components are published.
Production Workflow 3
Updating in Place
All Departments working in parallel
Ex. Lighters received updates from Modeling, Texturing, Lookdev, Animation and FX
Robust updating tools
User configurable
Partial or whole merge of latest results
Abstraction layer around component data
Bento nodes provide essential cover for users. Reference edits and other unstable elements in Maya can be wrapped in a more stable cover. Users don’t need to worry about dependencies or constraints being broken when they Updated their scenes.
Models, Textures, Lookdev, Animation, Sims referenced rather than loaded
Referencing even happened beneath a cover.
Raw data not used by artists for constraints, assignments, etc.
Changing out raw data wouldn’t break scenes
Moving Data Around
Transforms handled by the Bento formats
Geometry was the primary asset that had to show up in all packages consistently
Houdini’s .bgeo format was used
Works in Houdini
Proprietary read and write support in Maya
Proprietary read support in Renderman
Plugin named geotor
Relatively flat format
We used polys and subdiv surfaces
Full geometry definitions and point cloud files for anim, if possible
Multiple objects
Lots of primitive variables
Motion Vectors, UVs, Rest Position, etc.
Moving Data Around
Geometry was the primary asset that had to show up in all packages consistently
Houdini’s .bgeo format was used
Works in Houdini
Proprietary read and write support in Maya
Proprietary read support in Renderman
Plugin named geotor
Relatively flat format
We used polys and subdiv surfaces
Full geometry definitions and point cloud files for anim, if possible
Multiple objects
Lots of primitive variables
Motion Vectors, UVs, Rest Position, etc.
Shot Bento Box Layouts 1
Screenshot of Maya Outline and 3d View
Shot Bento Box Layouts 2
Screenshot of Maya Outline and 3d View
Shot Bento Box Layouts 3
Screenshot of Maya Outline and 3d View
Screenshot of the whole scene as bounding boxes, far away
Screenshot of the whole scene as bounding boxes, close in
Screenshot of the whole scene as bounding boxes, close in
Screenshot of the whole scene as bounding boxes, close in
Screenshot of the whole scene as bounding boxes, close in
Screenshot of the whole scene as bounding boxes, close in
Screenshot of the whole scene as bounding boxes, close in
Bento can do a lot
Pros and Cons
Cons
Different applications make different things easy
Houdini doesn’t work as a hierarchy of transforms by default like Maya does
Maya’s notion of “objects” is more restrictive than Houdini’s
Houdini doesn’t have a native notion of “objects” like Maya does
Nuke nearly as articulated
Bento Data Structures can represent…
The UI!
Hierarchy
Database Status
Comments
Dates
The UI!
Hierarchy
Database Status
Comments
Dates
The UI!
Hierarchy
Database Status
Comments
Dates
The UI!
Hierarchy
Database Status
Comments
Dates
The UI!
Hierarchy
Database Status
Comments
Dates
A Bento Asset Is and Can…
Bento Structures: Bento Asset
Collection of Components for a Single Asset
All Components are tracked in the database
Ex. Model, Textures, Shaders, Anim Curves, Sims Geometry streams
Asset Component list can be rebuilt from database
Asset Inheritance
Shot Instances inherit from Central Assets Definitions
Single publish for Models, Textures, Shaders, etc. Components
Per-shot publish for Instance Components like Animation and FX.
Multiple-levels of inheritance possible
Needed in some cases
Libraries of Sims and Animation instanced into shots
Ex. City Blocks
Ex. Crumbling Fissure Walls
Ex. Building Sims from one shot used in another
Asset .XML representation is versioned and tracked in the database
A Bento Box Is and Can…
Bento Structures: Bento Box
Collection of Bento Assets and other Boxes
Represents
Asset Membership
Placement
Used for
Full Scenes
Instanced Collections of Assets
Buildings
City Blocks
Box to Host Application and Back
Maya Outliner
Houdini Node Graph
Nuke 3d system
Box .XML representation is versioned and tracked in the database