Skip to content

Instantly share code, notes, and snippets.

@fire
Forked from meshula/3d-formats.md
Created March 30, 2022 18:45
Show Gist options
  • Save fire/64be79be76d70a302e81585d13a5e742 to your computer and use it in GitHub Desktop.
Save fire/64be79be76d70a302e81585d13a5e742 to your computer and use it in GitHub Desktop.

Revisions

  1. @meshula meshula revised this gist Jun 8, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -98,7 +98,7 @@ A very incomplete list, doesn't include antique formats.

    gltf 1.0 - web viewers, limited native support

    gltf 2.0 - ubiquitous import for game engines seems to be arriving.
    gltf 2.0 - ubiquitous import for game engines is arriving.

    fbx - Unity, Unreal, most hobby engines

  2. @meshula meshula revised this gist Jun 8, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -77,6 +77,7 @@ A very incomplete list, doesn't include antique formats.


    gltf 1.0 - Blender, online fbx converter

    gltf 2.0 - Wide availability of import; many exporters arriving.

    fbx - just about everything. Autodesk has moved fbx to maintenance mode; not a forward looking option.
    @@ -96,6 +97,7 @@ Engine support
    A very incomplete list, doesn't include antique formats.

    gltf 1.0 - web viewers, limited native support

    gltf 2.0 - ubiquitous import for game engines seems to be arriving.

    fbx - Unity, Unreal, most hobby engines
  3. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -37,7 +37,7 @@ gltf has elided structure and choice points in order to prepare buffer data idea

    The 1.0 version of gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    The 2.0 version of gltf moves beyond that, providing an "API-neutral runtime asset delivery format". It still retains some of its WebGL heritage, but more broadly encodes information required by previewers and game engines, such as a material encoding scheme incorporating a phyical shading model that meets modern requirements in being, roughly speaking, a hybrid of the Disney and Unreal PBR shading models.
    The 2.0 version of gltf moves beyond that, providing an API-neutral runtime asset delivery format. It still retains some of its WebGL heritage, but more broadly encodes information required by previewers and game engines, such as a material encoding scheme incorporating a phyical shading model that meets modern requirements in being, roughly speaking, a hybrid of the Disney and Unreal PBR shading models.

    Autodesk's fbx format seems like it might be an interchange format, but is in fact a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow from an endpoint such as Motion Builder through fbx will typically be used to bring animation data back to a content creation tool, but will not be used for purposes such as geometry edits.

  4. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -37,7 +37,7 @@ gltf has elided structure and choice points in order to prepare buffer data idea

    The 1.0 version of gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    The 2.0 version of gltf still retains some of its WebGL heritage, but more broadly encodes information required by previewers and game engines, such as a material encoding scheme incorporating a phyical shading model that meets modern requirements in being, roughly speaking, a hybrid of the Disney and Unreal PBR shading models.
    The 2.0 version of gltf moves beyond that, providing an "API-neutral runtime asset delivery format". It still retains some of its WebGL heritage, but more broadly encodes information required by previewers and game engines, such as a material encoding scheme incorporating a phyical shading model that meets modern requirements in being, roughly speaking, a hybrid of the Disney and Unreal PBR shading models.

    Autodesk's fbx format seems like it might be an interchange format, but is in fact a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow from an endpoint such as Motion Builder through fbx will typically be used to bring animation data back to a content creation tool, but will not be used for purposes such as geometry edits.

  5. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 11 additions and 5 deletions.
    16 changes: 11 additions & 5 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -18,7 +18,7 @@ Disclosure: These notes are biased by the fact that I wrote a great deal of prod
    I hope you find these notes somehow useful.


    last-mile vs interchange
    Last-mile vs Interchange
    ========================

    An interchange format is characterized by an expectation that asset structure, and artist choice points, including overrides and variations, are preserved wherever the asset is imported, and that the straight import/export of the data is round trip loss-less.
    @@ -70,8 +70,11 @@ These file types are historical and were developed to address interchange and la



    Application support (incomplete list) (not including antiques)
    ==============================================================
    Application support
    ===================

    A very incomplete list, doesn't include antique formats.


    gltf 1.0 - Blender, online fbx converter
    gltf 2.0 - Wide availability of import; many exporters arriving.
    @@ -87,8 +90,10 @@ usd - Pixar supplies plugins for Maya, Houdini, Katana. Sketchup, Modo and many
    all Apple apps, including Preview and Quicklook


    Engine support (incomplete list) (not including antiques)
    =========================================================
    Engine support
    ==============

    A very incomplete list, doesn't include antique formats.

    gltf 1.0 - web viewers, limited native support
    gltf 2.0 - ubiquitous import for game engines seems to be arriving.
    @@ -100,3 +105,4 @@ alembic - Unity, Unreal plugins exist, CryEngine, Apple runtimes
    Collada - Apple runtimes, Unity and Unreal via plugins

    usd - Import shipped native with Unreal, a full C# binding is available for Unity. Apple runtimes.

  6. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -59,7 +59,9 @@ Unlike Alembic, USD supports character models as first class citizens. Unlike gl
    collada (0% last mile)
    ----------------------

    Collada is an XML based interchange format. It has an expressive structure, and data contents which much be heavily transformed to suit one engine or another. Apple's SceneKit is a prominent Collada consumer. Collada has strongly specified types, but suffers from under-specified structure, resulting in inconsistent results when moving a collada file from application to application. For this reason, Collada works best when going through a matched import/export pair.
    Collada is an XML based interchange format. It has an expressive structure, and data contents which much be heavily transformed to suit one engine or another. Collada has strongly specified types, but suffers from under-specified structure, resulting in inconsistent results when moving a Collada file from application to application. For this reason, Collada works best when going through a matched import/export pair.

    Apple's SceneKit is a prominent Collada consumer.

    antiques (obj, ply, stl, etc)
    -----------------------------
  7. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 10 additions and 2 deletions.
    12 changes: 10 additions & 2 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,12 @@ http://nickporcino.com/posts/last_mile_interchange.html
    I'll maintain a copy here too, this is a nice place to support discussion.


    Introduction
    ============

    This document discusses a taxonomy of 3d file formats based on the intent of the format. It groups them broadly into file formats matched to delivery and transmission operations, and file formats intended to exchange asset structure and artist intent between content creation applications.

    This document does not attempt to compare explicit feature sets, performance and efficiency, or adoption, unless it is to illustrate a point.

    Disclosure: These notes are biased by the fact that I wrote a great deal of production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles the OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar for several years to help get Universal Scene Description shipped.

    @@ -18,10 +23,11 @@ last-mile vs interchange

    An interchange format is characterized by an expectation that asset structure, and artist choice points, including overrides and variations, are preserved wherever the asset is imported, and that the straight import/export of the data is round trip loss-less.

    What last mile means is that the formats have imposed an opinion on the contents of the input data and conformed it to that opinion. The complexity of the original asset, including raw scans and artist choice points, has either been flattened away at best, or completely deleted. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.
    A last mile format has imposed an opinion on the contents of the input data and conformed it to that opinion. The complexity of the original asset, including raw scans and artist choice points, has been flattened away, or completely deleted. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.

    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.


    gltf and fbx (100% last-mile)
    ------------------------------

    @@ -46,7 +52,9 @@ Alembic is also on the last mile side of the balance. Although it can interchang
    usd (20% last mile)
    -------------------

    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model. Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.
    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model.

    Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.

    collada (0% last mile)
    ----------------------
  8. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 21 additions and 22 deletions.
    43 changes: 21 additions & 22 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,7 @@ I'll maintain a copy here too, this is a nice place to support discussion.



    Disclosure: These notes are biased by the fact that I wrote a great deal of the production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles all OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar for several years to help get Universal Scene Description shipped.
    Disclosure: These notes are biased by the fact that I wrote a great deal of production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles the OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar for several years to help get Universal Scene Description shipped.

    I hope you find these notes somehow useful.

    @@ -18,29 +18,25 @@ last-mile vs interchange

    An interchange format is characterized by an expectation that asset structure, and artist choice points, including overrides and variations, are preserved wherever the asset is imported, and that the straight import/export of the data is round trip loss-less.

    What last mile means is that the formats have imposed an opinion on the contents of the input data and conformed it to that opinion. The richness and complexity of the original asset, including raw scans and artist choice points, have been flattened away at best, and completely deleted at worst. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.
    What last mile means is that the formats have imposed an opinion on the contents of the input data and conformed it to that opinion. The complexity of the original asset, including raw scans and artist choice points, has either been flattened away at best, or completely deleted. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.

    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.

    gltf and fbx (100% last-mile)
    ------------------------------

    gltf 1.0 and fbx (100% last-mile)
    ---------------------------------
    gltf and fbx are last-mile formats.

    gltf 1.0 and fbx are last-mile formats, not interchange formats.
    gltf has elided structure and choice points in order to prepare buffer data ideal for the most common class of shader programs which render a model. It contains other data commonly required by real time previewers and game engines.

    gltf 1.0 has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates a PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.
    The 1.0 version of gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    It's important to recognize that gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.
    The 2.0 version of gltf still retains some of its WebGL heritage, but more broadly encodes information required by previewers and game engines, such as a material encoding scheme incorporating a phyical shading model that meets modern requirements in being, roughly speaking, a hybrid of the Disney and Unreal PBR shading models.

    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.
    Autodesk's fbx format seems like it might be an interchange format, but is in fact a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow from an endpoint such as Motion Builder through fbx will typically be used to bring animation data back to a content creation tool, but will not be used for purposes such as geometry edits.

    It's important to recognize that fbx is a proprietary, closed format. Third party reverse engineered parsers exist, but this is not a robust path.

    gltf 2.0
    --------

    (under construction)

    alembic (60% last mile)
    -----------------------

    @@ -52,11 +48,10 @@ usd (20% last mile)

    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model. Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.

    collada
    -------

    (under construction)
    collada (0% last mile)
    ----------------------

    Collada is an XML based interchange format. It has an expressive structure, and data contents which much be heavily transformed to suit one engine or another. Apple's SceneKit is a prominent Collada consumer. Collada has strongly specified types, but suffers from under-specified structure, resulting in inconsistent results when moving a collada file from application to application. For this reason, Collada works best when going through a matched import/export pair.

    antiques (obj, ply, stl, etc)
    -----------------------------
    @@ -68,26 +63,30 @@ These file types are historical and were developed to address interchange and la
    Application support (incomplete list) (not including antiques)
    ==============================================================

    gltf - Blender, online fbx converter
    gltf 1.0 - Blender, online fbx converter
    gltf 2.0 - Wide availability of import; many exporters arriving.

    fbx - just about everything. Autodesk has moved fbx to maintenance mode; not a forward looking option.

    alembic - all high end DCC's, blender coming online slowly
    all Apple apps, including Preview and Quicklook

    Collada - plug ins or native support available for all high end DCC's, quality and format consistency varies

    usd - Pixar supplies plugins for Maya, Houdini, Katana. Sketchup, Modo and many others are independently available.
    all Apple apps, including Preview and Quicklook


    Engine support (incomplete list) (not including antiques)
    =========================================================

    gltf - web viewers, exporters for Blender exist, many others in various states of development
    gltf 1.0 - web viewers, limited native support
    gltf 2.0 - ubiquitous import for game engines seems to be arriving.

    fbx - Unity, Unreal, most hobby engines

    alembic - Unity, Unreal plugins exist, CryEngine

    usd - Import shipped native with Unreal, a full C# binding is available for Unity.
    alembic - Unity, Unreal plugins exist, CryEngine, Apple runtimes

    Collada - Apple runtimes, Unity and Unreal via plugins

    usd - Import shipped native with Unreal, a full C# binding is available for Unity. Apple runtimes.
  9. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 13 additions and 4 deletions.
    17 changes: 13 additions & 4 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -23,19 +23,23 @@ What last mile means is that the formats have imposed an opinion on the contents
    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.


    gltf and fbx (100% last-mile)
    ------------------------------
    gltf 1.0 and fbx (100% last-mile)
    ---------------------------------

    gltf and fbx are last-mile formats, not interchange formats.
    gltf 1.0 and fbx are last-mile formats, not interchange formats.

    gltf has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates a PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.
    gltf 1.0 has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates a PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.

    It's important to recognize that gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.

    It's important to recognize that fbx is a proprietary, closed format. Third party reverse engineered parsers exist, but this is not a robust path.

    gltf 2.0
    --------

    (under construction)

    alembic (60% last mile)
    -----------------------
    @@ -48,6 +52,11 @@ usd (20% last mile)

    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model. Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.

    collada
    -------

    (under construction)


    antiques (obj, ply, stl, etc)
    -----------------------------
  10. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 78 additions and 1 deletion.
    79 changes: 78 additions & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,84 @@

    This document has moved to a blog post, here:
    This document has a more accessible location, here:

    http://nickporcino.com/posts/last_mile_interchange.html

    I'll maintain a copy here too, this is a nice place to support discussion.




    Disclosure: These notes are biased by the fact that I wrote a great deal of the production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles all OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar for several years to help get Universal Scene Description shipped.

    I hope you find these notes somehow useful.


    last-mile vs interchange
    ========================

    An interchange format is characterized by an expectation that asset structure, and artist choice points, including overrides and variations, are preserved wherever the asset is imported, and that the straight import/export of the data is round trip loss-less.

    What last mile means is that the formats have imposed an opinion on the contents of the input data and conformed it to that opinion. The richness and complexity of the original asset, including raw scans and artist choice points, have been flattened away at best, and completely deleted at worst. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.

    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.


    gltf and fbx (100% last-mile)
    ------------------------------

    gltf and fbx are last-mile formats, not interchange formats.

    gltf has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates a PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.

    It's important to recognize that gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.

    It's important to recognize that fbx is a proprietary, closed format. Third party reverse engineered parsers exist, but this is not a robust path.


    alembic (60% last mile)
    -----------------------

    Alembic is also on the last mile side of the balance. Although it can interchange geometry data and scene structure, in general, it is commonly used as a cached format holding the outputs of a simulation. In that sense Alembic holds an opinionated rendering of a simulation sampled over time. It is much more general than gltf and fbx in that it is schema based and can be easily extended. Layering is currently being introduced to move alembic more to the interchange side of the scale, but it's not clear to me how to move forward on missing core semantics necessary for important asset types such as characters; there is no standardized schema for skeletal bindings or blend shapes.


    usd (20% last mile)
    -------------------

    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model. Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.


    antiques (obj, ply, stl, etc)
    -----------------------------

    These file types are historical and were developed to address interchange and last mile issues simultaneously. They are largely ad hoc and underspecified. Even ply which is highly specified is underspecified in that it defines a general schema but specifies only limited semantics.



    Application support (incomplete list) (not including antiques)
    ==============================================================

    gltf - Blender, online fbx converter

    fbx - just about everything. Autodesk has moved fbx to maintenance mode; not a forward looking option.

    alembic - all high end DCC's, blender coming online slowly
    all Apple apps, including Preview and Quicklook

    usd - Pixar supplies plugins for Maya, Houdini, Katana. Sketchup, Modo and many others are independently available.
    all Apple apps, including Preview and Quicklook


    Engine support (incomplete list) (not including antiques)
    =========================================================

    gltf - web viewers, exporters for Blender exist, many others in various states of development

    fbx - Unity, Unreal, most hobby engines

    alembic - Unity, Unreal plugins exist, CryEngine

    usd - Import shipped native with Unreal, a full C# binding is available for Unity.


  11. @meshula meshula revised this gist Jun 7, 2018. 1 changed file with 2 additions and 69 deletions.
    71 changes: 2 additions & 69 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -1,74 +1,7 @@

    This document has moved to a blog post, here:

    Disclosure: These notes are biased by the fact that I wrote much of the production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles all OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar for several years to help get Universal Scene Description shipped.
    http://nickporcino.com/posts/last_mile_interchange.html

    I hope you find these notes somehow useful.


    last-mile vs interchange
    ========================

    An interchange format is characterized by an expectation that asset structure, and artist choice points, including overrides and variations, are preserved wherever the asset is imported, and that the straight import/export of the data is round trip loss-less.

    What last mile means is that the formats have imposed an opinion on the contents of the input data and conformed it to that opinion. The richness and complexity of the original asset, including raw scans and artist choice points, have been flattened away at best, and completely deleted at worst. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.

    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.


    gltf and fbx (100% last-mile)
    ------------------------------

    gltf and fbx are last-mile formats, not interchange formats.

    gltf has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates a PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.

    It's important to recognize that gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.

    It's important to recognize that fbx is a proprietary, closed format. Third party reverse engineered parsers exist, but this is not a robust path.


    alembic (60% last mile)
    -----------------------

    Alembic is also on the last mile side of the balance. Although it can interchange geometry data and scene structure, in general, it is commonly used as a cached format holding the outputs of a simulation. In that sense Alembic holds an opinionated rendering of a simulation sampled over time. It is much more general than gltf and fbx in that it is schema based and can be easily extended. Layering is currently being introduced to move alembic more to the interchange side of the scale, but it's not clear to me how to move forward on missing core semantics necessary for important asset types such as characters; there is no standardized schema for skeletal bindings or blend shapes.


    usd (20% last mile)
    -------------------

    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model. Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.


    antiques (obj, ply, stl, etc)
    -----------------------------

    These file types are historical and were developed to address interchange and last mile issues simultaneously. They are largely ad hoc and underspecified. Even ply which is highly specified is underspecified in that it defines a general schema but specifies only limited semantics.



    Application support (incomplete list) (not including antiques)
    ==============================================================

    gltf - Blender, online fbx converter

    fbx - just about everything. Autodesk has moved fbx to maintenance mode; not a forward looking option.

    alembic - all high end DCC's, blender coming online slowly
    all Apple apps, including Preview and Quicklook

    usd - Pixar supplies plugins for Maya, Houdini, Katana. Sketchup, Modo and many others are independently available.
    all Apple apps, including Preview and Quicklook


    Engine support (incomplete list) (not including antiques)
    =========================================================

    gltf - web viewers, exporters for Blender exist, many others in various states of development

    fbx - Unity, Unreal, most hobby engines

    alembic - Unity, Unreal plugins exist, CryEngine

    usd - Import shipped native with Unreal, a full C# binding is available for Unity.
  12. @meshula meshula revised this gist Jun 6, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -71,4 +71,4 @@ fbx - Unity, Unreal, most hobby engines

    alembic - Unity, Unreal plugins exist, CryEngine

    Import shipped native with Unreal, plugin for Unity.
    usd - Import shipped native with Unreal, a full C# binding is available for Unity.
  13. @meshula meshula revised this gist Jun 6, 2018. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -20,11 +20,11 @@ gltf and fbx (100% last-mile)

    gltf and fbx are last-mile formats, not interchange formats.

    gltf has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.
    gltf has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates a PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.

    It's important to recognize that gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A typical backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.
    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.

    It's important to recognize that fbx is a proprietary, closed format. Third party reverse engineered parsers exist, but this is not a robust path.

  14. @meshula meshula revised this gist Jun 6, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@


    Disclosure: These notes are biased by the fact that I wrote much of the production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles all OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar several years to get Universal Scene Description shipped.
    Disclosure: These notes are biased by the fact that I wrote much of the production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles all OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar for several years to help get Universal Scene Description shipped.

    I hope you find these notes somehow useful.

  15. @meshula meshula revised this gist May 22, 2018. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -15,7 +15,7 @@ What last mile means is that the formats have imposed an opinion on the contents
    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.


    gltf and fbx (100 % last-mile)
    gltf and fbx (100% last-mile)
    ------------------------------

    gltf and fbx are last-mile formats, not interchange formats.
    @@ -66,6 +66,9 @@ Engine support (incomplete list) (not including antiques)
    =========================================================

    gltf - web viewers, exporters for Blender exist, many others in various states of development

    fbx - Unity, Unreal, most hobby engines

    alembic - Unity, Unreal plugins exist, CryEngine

    Import shipped native with Unreal, plugin for Unity.
  16. @meshula meshula revised this gist May 22, 2018. No changes.
  17. @meshula meshula created this gist May 22, 2018.
    71 changes: 71 additions & 0 deletions 3d-formats.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@


    Disclosure: These notes are biased by the fact that I wrote much of the production 3d interchange code for LucasArts, ILM, and Apple, and was lead on Apple's ModelIO which handles all OS level treatment of 3d file formats. I worked with some of the gltf architects and debated issues with them, and worked with Pixar several years to get Universal Scene Description shipped.

    I hope you find these notes somehow useful.


    last-mile vs interchange
    ========================

    An interchange format is characterized by an expectation that asset structure, and artist choice points, including overrides and variations, are preserved wherever the asset is imported, and that the straight import/export of the data is round trip loss-less.

    What last mile means is that the formats have imposed an opinion on the contents of the input data and conformed it to that opinion. The richness and complexity of the original asset, including raw scans and artist choice points, have been flattened away at best, and completely deleted at worst. Characteristically however, a last mile format is ideal for a particular process or step in a production pipeline.

    I will say up front that there are no pure interchange formats, although there are many pure last-mile formats.


    gltf and fbx (100 % last-mile)
    ------------------------------

    gltf and fbx are last-mile formats, not interchange formats.

    gltf has elided structure and choice points in order to prepare OpenGL ready buffer data ideal for the most common class of shader programs which render a model, and incorporates PBR shading model that is for all intents and purposes a hybrid of the Disney and Unreal PBR shading models.

    It's important to recognize that gltf specifically encapsulates WebGL objects for the Web. It is not forward looking in the sense that if a new paradigm arrives, such as WebVulkan, gltf will surely be displayable, but it will be via translation of WebGL concepts to WebVulkan concepts.

    fbx seems like it might be an interchange format, but in fact, it is a last mile format. It takes complex asset structure and choice points, and reduces it to the strict subset of functionality supported by Motion Builder. It only feels like an interchange format because of the deceptive complexity of the format. Nonetheless, the correct use of an fbx file is Maya -> fbx -> { Motion Builder, Unreal, etc. } A typical backwards workflow, Motion Builder -> fbx -> Maya will typically be used to bring animation data back to Maya, but will not be used for purposes such as geometry edits.

    It's important to recognize that fbx is a proprietary, closed format. Third party reverse engineered parsers exist, but this is not a robust path.


    alembic (60% last mile)
    -----------------------

    Alembic is also on the last mile side of the balance. Although it can interchange geometry data and scene structure, in general, it is commonly used as a cached format holding the outputs of a simulation. In that sense Alembic holds an opinionated rendering of a simulation sampled over time. It is much more general than gltf and fbx in that it is schema based and can be easily extended. Layering is currently being introduced to move alembic more to the interchange side of the scale, but it's not clear to me how to move forward on missing core semantics necessary for important asset types such as characters; there is no standardized schema for skeletal bindings or blend shapes.


    usd (20% last mile)
    -------------------

    USD is last mile as well, but its last mile is complex enough that it can be coerced into general interchange. What I mean by that, is that USD encodes a full scenegraph with the same complexity and expressiveness of the Maya or Houdini hypergraphs, including the equivalent of a full scene composition algebra, as is implemented by tools such as Unreal, or Katana. Where USD diverges from the Houdini or Maya hypergraphs is that USD does not encode the dataflow graph of Maya, or the operator graph of Houdini. That is what biases USD to interchange rather than last mile, as a strict encoding of an operator graph would be a fully implemented and opinionated end point and would require that users of USD conform to that computational model. Unlike Alembic, USD supports character models as first class citizens. Unlike gltf, USD supports shader graphs, and is a strict superset of graphs such as Unreal's, gltf's, or that of MaterialX.


    antiques (obj, ply, stl, etc)
    -----------------------------

    These file types are historical and were developed to address interchange and last mile issues simultaneously. They are largely ad hoc and underspecified. Even ply which is highly specified is underspecified in that it defines a general schema but specifies only limited semantics.



    Application support (incomplete list) (not including antiques)
    ==============================================================

    gltf - Blender, online fbx converter

    fbx - just about everything. Autodesk has moved fbx to maintenance mode; not a forward looking option.

    alembic - all high end DCC's, blender coming online slowly
    all Apple apps, including Preview and Quicklook

    usd - Pixar supplies plugins for Maya, Houdini, Katana. Sketchup, Modo and many others are independently available.
    all Apple apps, including Preview and Quicklook


    Engine support (incomplete list) (not including antiques)
    =========================================================

    gltf - web viewers, exporters for Blender exist, many others in various states of development
    fbx - Unity, Unreal, most hobby engines
    alembic - Unity, Unreal plugins exist, CryEngine
    Import shipped native with Unreal, plugin for Unity.