An Introduction to COLLADA Mark DeLoura Manager of Developer Relations, SCEA Rémi Arnaud Graphics...
-
Upload
frederick-powers -
Category
Documents
-
view
213 -
download
0
Transcript of An Introduction to COLLADA Mark DeLoura Manager of Developer Relations, SCEA Rémi Arnaud Graphics...
An Introduction to An Introduction to COLLADACOLLADA
Mark DeLouraMark DeLouraManager of Developer Relations, SCEAManager of Developer Relations, SCEA
RRéémi Arnaudmi ArnaudGraphics Architect, SCEA R&DGraphics Architect, SCEA R&D
Marcus BarnesMarcus BarnesCOLLADA Project Lead, SCEA R&DCOLLADA Project Lead, SCEA R&D
Talk RoadmapTalk Roadmap
What’s the COLLADA Initiative?What’s the COLLADA Initiative?
Why do we care?Why do we care?
What is it?What is it?
Format DetailsFormat Details
Current Tool ImplementationsCurrent Tool Implementations
Future DevelopmentsFuture Developments
COLLADA: What is it?COLLADA: What is it?
A COLLAborative Design ActivityA COLLAborative Design Activity
To design a 3D data interchange formatTo design a 3D data interchange format Allowing import and export from toolsAllowing import and export from tools Designed by the communityDesigned by the community
Collaboration with the tool manufacturersCollaboration with the tool manufacturers Natively supported by modeling toolsNatively supported by modeling tools Fully supports “next-gen” feature-setFully supports “next-gen” feature-set Multiple target platformsMultiple target platforms
Collada: Why?Collada: Why?
Content creation has become increasingly complexContent creation has become increasingly complex Capabilities of 3D devices …expandingCapabilities of 3D devices …expanding Size of content …growingSize of content …growing Production schedules …tighteningProduction schedules …tightening
Developing a custom pipeline is expensive and time Developing a custom pipeline is expensive and time consuming!consuming!Increasing use of an assortment of proprietary & third-Increasing use of an assortment of proprietary & third-party toolsparty tools
Object data is a prisoner of the content creation tool (format)Object data is a prisoner of the content creation tool (format) We want to have flexible data and workflowsWe want to have flexible data and workflows
A tool, target & workflow-independent file format is a A tool, target & workflow-independent file format is a great foundation for a flexible pipeline.great foundation for a flexible pipeline.
Why create an interchange format?Why create an interchange format?
No existing No existing standard standard interchange formatinterchange format
No collaboration to create such formatNo collaboration to create such format
For each studio to create its own formats and For each studio to create its own formats and exporters is colossally redundantexporters is colossally redundant If we can do it once, and do it well, we can save a lot If we can do it once, and do it well, we can save a lot
of timeof time
A common interchange format would allow tools A common interchange format would allow tools to be used interchangeablyto be used interchangeably Simplifying content creation and asset managementSimplifying content creation and asset management
But why not use an existing 3D But why not use an existing 3D format?format?
X3DX3D Is designed for productivity and communication appsIs designed for productivity and communication apps 3D tool support is inconsistent3D tool support is inconsistent MMmmm smells like VRMLMMmmm smells like VRML
FBXFBX Owned by AliasOwned by Alias Largely bound to Filmbox and MayaLargely bound to Filmbox and Maya Not collaboratively designedNot collaboratively designed Binary formatBinary format Missing important features: meta-data, version headers, Missing important features: meta-data, version headers,
extensibility, multi-texture.extensibility, multi-texture.
XSIXSI Owned by SoftimageOwned by Softimage Good format, but not UTF8 encodedGood format, but not UTF8 encoded
Why an intermediate format?Why an intermediate format?
Why not a binary format?Why not a binary format? Final binary format needs to be optimized to target Final binary format needs to be optimized to target
platformplatformCan be expensive to createCan be expensive to create
Should be a super-efficient direct memory imageShould be a super-efficient direct memory image
Format may change during product developmentFormat may change during product development Easier to use the intermediate format to create the Easier to use the intermediate format to create the
final binaryfinal binaryRather than invoking Maya/Photoshop/etc for each assetRather than invoking Maya/Photoshop/etc for each asset
A readable intermediate format is easier to A readable intermediate format is easier to debug and browse by a programmerdebug and browse by a programmer
Uses for ColladaUses for Collada
Why might you want to use Why might you want to use Collada?Collada?
Use as your intermediate file format Use as your intermediate file format Prior to binary optimization for platformPrior to binary optimization for platform
Makes the life of tool developers simplerMakes the life of tool developers simpler
Easy to create and edit Collada filesEasy to create and edit Collada files For rapid prototyping of contentFor rapid prototyping of content
Human readableHuman readable
Collada: The GoalCollada: The Goal
Ease content development and Ease content development and prototyping, byprototyping, by Freeing your data from your 3D modeling Freeing your data from your 3D modeling
program program Getting collaboration from all 3D tool Getting collaboration from all 3D tool
manufacturersmanufacturers Making import/export simpleMaking import/export simple
Who’s working on it?Who’s working on it?
Sony Computer Entertainment America R&D ProjectSony Computer Entertainment America R&D Project Separate from other projects, own timelineSeparate from other projects, own timeline Designed to be multi-platform, for all targets – no, really!Designed to be multi-platform, for all targets – no, really! No strings attached or hidden agenda (I swear!)No strings attached or hidden agenda (I swear!)
Current contributorsCurrent contributors Sony family: SCE[IJEA], Naughty Dog, InsomniacSony family: SCE[IJEA], Naughty Dog, Insomniac 3D Tools: Alias, Discreet, Softimage, …3D Tools: Alias, Discreet, Softimage, … Middleware: Criterion, Hybrid, Emdigo, Metrowerks, Ageia, Middleware: Criterion, Hybrid, Emdigo, Metrowerks, Ageia,
Virtools, Vicarious Visions, Novodex…Virtools, Vicarious Visions, Novodex… Gamedevs: Digital Eclipse, Electronic Arts, Epic, Secret Level, Gamedevs: Digital Eclipse, Electronic Arts, Epic, Secret Level,
Ubisoft, Vicarious Visions, …Ubisoft, Vicarious Visions, … Others: 3Dlabs, dnahelixOthers: 3Dlabs, dnahelix
What’s the status?What’s the status?
Work started at Siggraph 2003Work started at Siggraph 2003 Collaborating with major 3D tool manufacturers and Collaborating with major 3D tool manufacturers and
developersdevelopers
Collada 1.0 rollout at Siggraph 2004Collada 1.0 rollout at Siggraph 2004 With Alias, Discreet, Softimage, Criterion, Vicarious With Alias, Discreet, Softimage, Criterion, Vicarious
Visions, Novodex, EmdigoVisions, Novodex, EmdigoCollada 1.0 specCollada 1.0 specCollada 1.0 XML SchemaCollada 1.0 XML SchemaSample code, data and importers/exportersSample code, data and importers/exportersCollada website, http://www.collada.orgCollada website, http://www.collada.org
Collada 1.1 releasing December 3Collada 1.1 releasing December 3
Collada design goalsCollada design goals
Create a 3D data interchange formatCreate a 3D data interchange format Extensible and modularExtensible and modular Targeted for interactive contentTargeted for interactive content
Ease content development and Ease content development and prototypingprototyping
Extensible and ModularExtensible and Modular
ExtensibleExtensible Developer can extend the XML SchemaDeveloper can extend the XML Schema
Use “user data” raw elementsUse “user data” raw elements Tool vendors can add elementsTool vendors can add elements
Tool-specific data for no-loss import/exportTool-specific data for no-loss import/exportCandidate for standardization in future releasesCandidate for standardization in future releases
Add new types, parameters, and constructsAdd new types, parameters, and constructs
ModularModular Libraries of assetsLibraries of assets Instance sections of content Instance sections of content Anything can be an external referenceAnything can be an external reference
Targeted for interactive contentTargeted for interactive content
Cross platform Cross platform Platform-specific content can be embedded in Platform-specific content can be embedded in
Collada fileCollada file
Enable database utilizationEnable database utilization Assets are not necessarily filesAssets are not necessarily files
XML elementsXML elements Could eventually store in a DBCould eventually store in a DB
Ease content development and Ease content development and prototypingprototyping
Standard importer/exporterStandard importer/exporter Developing an exporter is quite complexDeveloping an exporter is quite complex Enables data interchange between modelers and Enables data interchange between modelers and
other toolsother tools Ensures compatibility across modeler versionsEnsures compatibility across modeler versions
Standard previewerStandard previewer OpenGL viewer with Cg providedOpenGL viewer with Cg provided Very fast loading timeVery fast loading time
Validation capabilityValidation capability Syntax can be validated, regardless of contentSyntax can be validated, regardless of content
What makes up Collada?What makes up Collada?
Collada spec documentCollada spec document
XML SchemaXML Schemahttp://www.collada.org/2004/ColladaSchemahttp://www.collada.org/2004/ColladaSchema
Partner Importers/Exporters: Maya, Partner Importers/Exporters: Maya, 3DSMax, XSI3DSMax, XSI
Collada.org websiteCollada.org website
OpenGL previewer, with Cg 1.2 supportOpenGL previewer, with Cg 1.2 support
Sample dataSample data
Format DetailsFormat Details
Collada element listCollada element listGeometryGeometry
MeshMesh Skin (1.1)Skin (1.1)
CollationCollation LinesLines LinestripsLinestrips PolygonsPolygons TrianglesTriangles TrifansTrifans TristripsTristrips
Data flowData flow AccessorAccessor ArrayArray InputInput ParamParam SourceSource
Object ElementsObject Elements CameraCamera InstanceInstance Object (1.1)Object (1.1)
Meta ElementsMeta Elements AssetAsset ExtraExtra TechniqueTechnique
Hierarchical ElementsHierarchical Elements Bounding boxBounding box Joint (1.1)Joint (1.1) NodeNode SceneScene
Categorical elementsCategorical elements GeometryGeometry LibraryLibrary
TransformTransform LookatLookat MatrixMatrix PerspectivePerspective RotateRotate ScaleScale SkewSkew TranslateTranslate
Material and ShadingMaterial and Shading ImageImage LightLight MaterialMaterial PassPass ShaderShader TextureTexture
Procedural ElementsProcedural Elements CodeCode EntryEntry ParamParam ProgramProgram
Higher-level featuresHigher-level featuresBy combining these elements, Collada supports many higher level conceptsBy combining these elements, Collada supports many higher level concepts
Scene hierarchyScene hierarchy Mesh geometryMesh geometry CamerasCameras Light sourcesLight sources MaterialsMaterials TexturesTextures Shading language programsShading language programs Procedural geometry and textureProcedural geometry and texture Character skins and skeletons (1.1)Character skins and skeletons (1.1) Content modularityContent modularity Multi-representationMulti-representation InternationalizationInternationalization External referencesExternal references Element level asset managementElement level asset management Key-frame animationKey-frame animation
Show me the good stuff!Show me the good stuff!
Material ElementsMaterial Elements
Geometry ElementsGeometry Elements
MaterialsMaterials
Programmable shadingProgrammable shading Major area of advancement for contentMajor area of advancement for content MaterialsMaterials
Describes the appearance of geometryDescribes the appearance of geometry TechniquesTechniques
Materials encapsulate techniquesMaterials encapsulate techniques
Profiles indicate which techniques to useProfiles indicate which techniques to use
Multiple ways to represent data and algorithmsMultiple ways to represent data and algorithms
<material>,<shader>,<technique>,<pass>,<material>,<shader>,<technique>,<pass>,
<program>,<texture><program>,<texture>
Example: cube.dae MaterialExample: cube.dae Material
<library type="MATERIAL"><library type="MATERIAL"> <material name="Blue"><material name="Blue"> <shader><shader> <technique profile="COMMON1.0"><technique profile="COMMON1.0"> <pass><pass> <program name="PHONG"><program name="PHONG"> <param name="AMBIENT" type="ColorRGB" flow="IN"><param name="AMBIENT" type="ColorRGB" flow="IN">
0.000000 0.000000 0.000000</param>0.000000 0.000000 0.000000</param> <param name="DIFFUSE" type="ColorRGB" flow="IN"><param name="DIFFUSE" type="ColorRGB" flow="IN">
0.137255 0.403922 0.870588</param>0.137255 0.403922 0.870588</param> <param name="SPECULAR" type="ColorRGB" flow="IN"><param name="SPECULAR" type="ColorRGB" flow="IN">
0.500000 0.500000 0.500000</param>0.500000 0.500000 0.500000</param> <param name="SHININESS" type="float" flow="IN">16.000000</param><param name="SHININESS" type="float" flow="IN">16.000000</param> </program></program> </pass></pass> </technique></technique> </shader></shader> </material></material></library></library>
GeometryGeometry
Geometry as dataflowGeometry as dataflow Vertices are the normVertices are the norm
Attributes are variableAttributes are variable Meshes contain vertex and polygon dataMeshes contain vertex and polygon data
Describes the shape of geometryDescribes the shape of geometry
Lots of high frequency dataLots of high frequency data Higher order surfacesHigher order surfaces
Not widely used; will be supported in <geometry>Not widely used; will be supported in <geometry>
<geometry>, <mesh>, <source>, <geometry>, <mesh>, <source>,
<polygons>, <p><polygons>, <p>
Example: cube.dae GeometryExample: cube.dae Geometry<library type="GEOMETRY"> <library type="GEOMETRY"> <geometry name="box"> <geometry name="box"> <mesh> <mesh> <source name="box-Position"> <source name="box-Position"> <array name="box-Position-array" type="float" <array name="box-Position-array" type="float"
count="24"> count="24"> -0.5 0.5 0.5 -0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 -0.5
</array> </array> <technique profile="COMMON1.0"> <technique profile="COMMON1.0"> <accessor source="#box-Position-array" count="8" <accessor source="#box-Position-array" count="8"
stride="3" >stride="3" > <param name="X" type="float" flow="OUT"/><param name="X" type="float" flow="OUT"/> <param name="Y" type="float" flow="OUT"/><param name="Y" type="float" flow="OUT"/> <param name="Z" type="float" flow="OUT"/> <param name="Z" type="float" flow="OUT"/> </accessor></accessor> </technique> </technique> </source> </source>
<polygons count="6" material="#Blue"> <polygons count="6" material="#Blue"> <input semantic="POSITION" source="#box-<input semantic="POSITION" source="#box-
Position"/> Position"/> <p>0 2 3 1</p> <p>0 2 3 1</p> <p>0 1 5 4</p> <p>0 1 5 4</p> <p>6 7 3 2</p> <p>6 7 3 2</p> <p>0 4 6 2</p> <p>0 4 6 2</p> <p>3 7 5 1</p> <p>3 7 5 1</p> <p>5 7 6 4</p> <p>5 7 6 4</p>
</polygons> </polygons> </mesh> </mesh> </geometry> </geometry> </library> </library>
Example: cube.dae Extra BitsExample: cube.dae Extra Bits<? xml version=“1.0” encoding=“utf-8” ?><? xml version=“1.0” encoding=“utf-8” ?><COLLADA xmlns=<COLLADA xmlns=http://www.collada.org/2004/COLLADASchemahttp://www.collada.org/2004/COLLADASchema
version=”1.0.0”>version=”1.0.0”> <asset><asset> <revision>1.0</revision><revision>1.0</revision> <authoring_tool>EQUINOX-3D Collada exporter v0.2.0</authoring_tool><authoring_tool>EQUINOX-3D Collada exporter v0.2.0</authoring_tool> <modified>2004-07-15T22:09:29Z</modified><modified>2004-07-15T22:09:29Z</modified> </asset></asset>[MATERIAL LIBRARY][MATERIAL LIBRARY][GEOMETRY LIBRARY][GEOMETRY LIBRARY] <scene name="DefaultScene"> <scene name="DefaultScene"> <node name="Box"> <node name="Box"> <instance url="#box"/> <instance url="#box"/> </node> </node> </scene> </scene> </COLLADA></COLLADA>
Other FeaturesOther Features
External references: Any element can be External references: Any element can be an external referencean external reference<node name=”instance6”><node name=”instance6”>
<instance url=”file://host ...”><instance url=”file://host ...”>
Extra dataExtra data User- or tool-definedUser- or tool-defined Platform-specific dataPlatform-specific data
Other FeaturesOther Features
Shader programsShader programs CgCg GLSL (coming from 3Dlabs)GLSL (coming from 3Dlabs) HLSL not yetHLSL not yet
Cg in ColladaCg in Collada An example of advanced functionalityAn example of advanced functionality Implemented as a custom techniqueImplemented as a custom technique Allows multipassAllows multipass CgFX readyCgFX ready Cg shaders curently working with XSICg shaders curently working with XSI
Tool SupportTool Support
MayaMaya
3DSMax3DSMax
XSIXSI
RenderwareRenderware
AlchemyAlchemy
AgeiaAgeia
Alias - MayaAlias - Maya
Maya translator (v1.1) available for import/exportMaya translator (v1.1) available for import/export Out of the box Collada integrationOut of the box Collada integration Open sourceOpen source
Extendable to include your custom dataExtendable to include your custom data Or as a starting point for your own translatorOr as a starting point for your own translator Uses <extra> to add Maya custom contentUses <extra> to add Maya custom content
<extra name=”custom1”><extra name=”custom1”>
<mayaNode><mayaNode>
<mayaAttr><mayaAttr>
Discreet - 3DSMaxDiscreet - 3DSMax
Version 1.0 import/exportVersion 1.0 import/export MaxScript basedMaxScript based Easy to modifyEasy to modify Future version will be a true plug-inFuture version will be a true plug-in Import functionality works with GmaxImport functionality works with Gmax Useful for data transfer to previous versionsUseful for data transfer to previous versions
Softimage - XSISoftimage - XSI
XSI Import / ExportXSI Import / Export Supports a rich set of the Collada 1.0 spec including the Supports a rich set of the Collada 1.0 spec including the
COMMON1.0 profileCOMMON1.0 profile Open source under the MIT licenseOpen source under the MIT license Supports:Supports:
Hierarchies and transformsHierarchies and transformsPolygon meshesPolygon meshesMultiple texture coordinates, normals, colors, and position dataMultiple texture coordinates, normals, colors, and position dataMaterials and texturesMaterials and texturesLights and camerasLights and camerasCg programsCg programs
Based on Xerces and the XSI FTK (File Transfer Kit)Based on Xerces and the XSI FTK (File Transfer Kit) Collada interchange fits into “Connect to Softimage” strategy.Collada interchange fits into “Connect to Softimage” strategy.
http://http://www.softimage.com/connect/xsiwww.softimage.com/connect/xsi
EA/Criterion - RenderwareEA/Criterion - Renderware
Collada files are integrated directly into the RenderWare Studio Collada files are integrated directly into the RenderWare Studio Game DatabaseGame Database
Become an integral part of the game database asset structure.Become an integral part of the game database asset structure. Sit alongside game entities, objects & behaviors from other packages.Sit alongside game entities, objects & behaviors from other packages. Game Production Manager translates assets to be platform optimalGame Production Manager translates assets to be platform optimal
Longer term, RenderWare 4 will include a node inside the Asset Longer term, RenderWare 4 will include a node inside the Asset Conditioning Pipeline (ACP) dedicated to Collada dataConditioning Pipeline (ACP) dedicated to Collada data
Can use RW Studio as a Collada viewerCan use RW Studio as a Collada viewer RWS provides centralized version controlled databaseRWS provides centralized version controlled database Workspace provides assembly and integration of game componentsWorkspace provides assembly and integration of game components Live link to console for in-game visualization of assetsLive link to console for in-game visualization of assets
Vicarious Visions - AlchemyVicarious Visions - Alchemy
Alchemy and Collada in the futureAlchemy and Collada in the future Integrate Collada with the tool chainIntegrate Collada with the tool chain Will greatly simplify exporter pipelineWill greatly simplify exporter pipeline Significantly reduce maintenance overheadSignificantly reduce maintenance overhead Allows further leverage of large art teams & Allows further leverage of large art teams &
sharing of assetssharing of assets Highly efficient management and integration Highly efficient management and integration
of art assetsof art assets
AgeiaAgeia
Collada Meets PSCLCollada Meets PSCL PSCL: The Physics Scripting LanguagePSCL: The Physics Scripting Language An open standard dynamics data definition An open standard dynamics data definition
languagelanguage Interactive real-time physics scripting and Interactive real-time physics scripting and
prototypingprototyping Import and export using Collada 2.0Import and export using Collada 2.0
(John Ratcliff from Ageia speaking next!)(John Ratcliff from Ageia speaking next!)
Coming soonComing soon
3Dlabs3Dlabs GLSL implementation and OpenSceneGraph GLSL implementation and OpenSceneGraph
importerimporter
Current StatusCurrent Status
Collada 1.0 availableCollada 1.0 available XML SchemaXML Schema Importers & exportersImporters & exporters Sample codeSample code Website open for collaborationWebsite open for collaboration Models interchange between modelers easilyModels interchange between modelers easily
As seen on TV (I mean, at Siggraph)As seen on TV (I mean, at Siggraph)
Next StepsNext Steps
Collada 1.1 Collada 1.1 New spec, new schema, new importers/exporters, new samplesNew spec, new schema, new importers/exporters, new samples Animation and skinning supportAnimation and skinning support
Feature ListFeature List AnimationAnimation
<animation><animation><channel><channel>
Target attribute ID based addressing syntax.Target attribute ID based addressing syntax.<joint><joint><sampler><sampler>
Character skinningCharacter skinning<combiner><combiner>
Combines sources into composite sources.Combines sources into composite sources. Produces aggregated, variable length results.Produces aggregated, variable length results.
Releases December 3 (today!)Releases December 3 (today!)
Looking to the future…Looking to the future…
Collada 1.2Collada 1.2 Releases January 21Releases January 21
Collada 2.0Collada 2.0 Physics, user interfaces,asset managementPhysics, user interfaces,asset management Conformance test suiteConformance test suite Release at GDC 2005Release at GDC 2005
At GDC 2005At GDC 2005 Collada sponsored sessionCollada sponsored session We plan to show PSP utilitiesWe plan to show PSP utilities
In summary, what COLLADA In summary, what COLLADA providesprovides
Maya import and exporter from AliasMaya import and exporter from Alias
3DSMax import/export in MaxScript from 3DSMax import/export in MaxScript from DiscreetDiscreet
XSI import and export from SoftimageXSI import and export from Softimage
Sample tools: Sample tools: OpenGL viewer, error checker.OpenGL viewer, error checker.
Source code and sample data filesSource code and sample data files
Collada website: Collada website: www.collada.orgwww.collada.org Website has 125+ registrantsWebsite has 125+ registrants
Future PlansFuture Plans
CollaborationCollaboration Involve Khronos Group Involve Khronos Group
DesignDesign Physics, dynamicsPhysics, dynamics User interfaces (2D, text)User interfaces (2D, text) Audio and videoAudio and video
Reference codeReference code SCEA contracting EmdigoSCEA contracting Emdigo
Developing a reflective object modelDeveloping a reflective object model
In ConclusionIn Conclusion
Please check out Collada! Please check out Collada! Can only get stronger through your inputCan only get stronger through your input Public forum and downloads:Public forum and downloads:
http://http://www.collada.orgwww.collada.org
Contact us to become a contributor:Contact us to become a contributor:[email protected]@collada.org
3D tool manufacturers are looking for feedback 3D tool manufacturers are looking for feedback from developers who try out their exporter. Get from developers who try out their exporter. Get in touch with them if you check out Collada.in touch with them if you check out Collada. Alias – Maya Import/ExportAlias – Maya Import/Export Discreet – 3DSMax Import/ExportDiscreet – 3DSMax Import/Export Softimage – XSI Import/ExportSoftimage – XSI Import/Export