Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

collada-dae-parser npm version Build Status

Parse collada .dae file vertex positions, textures, normals and animations

View live animated model demo

image

View demo source

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.

image

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)
/*
  {
    armatureName: 'MyRig',
    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

See Also

Credits

License

MIT

You can’t perform that action at this time.