Package Exports
- collada-dae-parser
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (collada-dae-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
collada-dae-parser

Parse collada .dae file vertex positions, textures, normals and animations
What does it do?
collada-dae-parser
parses a collada file and outputs JSON. This is useful for displaying skeletal animations in the browser.
collada-dae-parser
is only concerned with giving you JSON. An animation system is outside of this modules scope, but skeletal-animation-system could be a useful start.
To Install
# API
$ npm install --save collada-dae-parser
# CLI
$ npm install -g collada-dae-parser
Making use of the parser
If you're unfamiliar with skeletal animation, the demo is a good starting point. Here's where we're parsing our collada
file and buffering our graphics data. We're parsing at runtime in the demo, but in a real application you'd want to parse your collada files during a build step.
# Run the demo locally. Changes to the `src` and `demo` directories will live reload in your browser
# PRs and issues are welcome!
git clone https://github.com/chinedufn/collada-dae-parser
cd collada-dae-parser
npm install
npm run demo
Collada Support
collada-dae-parser
tries to be useful for WebGL games and interactive demos, but does not try to support the entire collada spec. If you're trying to parse a model
that is not supported, collada-dae-parser
will try to let you know how to tweak it.
CLI
Output stringified JSON to stdout
# parse from stdin
cat my-3d-model.dae | dae2json > parsed-model.json
# parse from file
dae2json my-3d-modal.dae > parsed-model.json
API
parseDae(xmlFile)
-> object
This function returns the parsed collada object.
xmlFile
Required
Type: string
or Buffer
Your collada file data. Not the filename, the file contents.
Returned Object
TODO: Document this
var parseDae = require('collada-dae-parser')
var parsedCollada = parseDae(fs.readFileSync(fileName))
console.log(parsedCollada)
/*
{
jointNamePositionIndex: {...},
jointInverseBindPoses: {...},
keyframes: {...},
vertexNormalIndices: [...],
vertexNormals: [...],
vertexPositionIndices: [...],
vertexPositions: [...],
vertexUVIndices: [...],
vertexUVs: [...]
}
*/
jointNamePositionIndex
Type: Object
lorem ipsum
jointInverseBindPoses
Type: Object
lorem ipsum
keyframes
Type: Object
lorem ipsum
vertexNormalIndices
Type: Array
lorem ipsum
vertexNormals
Type: Array
lorem ipsum
vertexPositionIndices
Type: Array
lorem ipsum
vertexPositions
Type: Array
lorem ipsum
vertexUVIndices
Type: Array
lorem ipsum
vertexUVs
Type: Array
lorem ipsum
TODO:
- src: basic cli (potentially pull into own repo, but start here)
- src: Allow file buffer to be passed in
- src: Factor in bind shape matrix
- src: Stop exporting bind shape matrix
- demo: fix normals in demo lighting
- demo: toggle between 2 animations
- src: Remove callback from API
- warning: Throw descriptive error message if user attempts to export multiple geometries
- A separate package that uses collada-dae-parser to implement a stateless skeletal animation system
- src / demo: add a textured demo model
- src: rounding values. Currently lots of .999999 and 1.000001
- src: All of the TODO: statements in code
- demo: full screen demo with controls overlay
- demo: Support mobile touch events
- demo: allow zoom in, zoom out in demo
- doc: Add a GIF of every test fixture animation and demo
- doc: Documentation
- warning: Somehow let the user know if their joints use non rigid transforms - until we actually support this
- warning: You didn't export a geometry. Link them to the documentation
- warning: If the base model or armature's location, translation and scale aren't 1.0 let user know that we don't support that. They should apply location, translation and scale before exporting
- research: Look into supporting library materials
References
- waZim. (2010) "Step by Step Skeletal Animation in C++ and OpenGL, Using COLLADA Part 1 & Part 2"
- Heavily informed the initial parser
- Markus Ruh. (2012) Vertex Skinning
- Heavily informed the vertex skinning in the initial demo vertex shader
- Jerimiah van Oosten. (2011) "GPU Skinning of MD5 Models in OpenGL and Cg"
- Heavily informed the vertex skinning in the initial demo vertex shader
See Also
Credits
- Ben Houston for the 3d male figure model
License
MIT