病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

gl.enchant.jsでCollada(.dae)ファイルが動かないときは

詰まってしまったので。←韻踏んでる

原因としては.daeファイルのcontent-typeが間違ってるっぽい?のが原因です。
XHRすると、responseTextにデータが帰ってくるのは当然ですが、XMLファイルの場合は自動でXMLDocumentにparseしてresponseXMLに突っ込んでくれます。
daeファイルは本来XMLで記述されるので、responseXMLにXMLDocumentが突っ込まれるはずなのですが、
ブラウザが上手く変換してくれない時があります。
具体的には、
Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
というエラーが出たりします@Chrome

なので、自力でXMLDocumentにParseしてあげましょう、ということで。

collada.gl.enchant.jsの265行目あたりを

var xml = req.responseXML;
if(!xml){
  xml = (new DOMParser()).parseFromString(req.responseText, 'text/xml');
}

にしてあげると、上手く動いてくれます

※265行目になかったりするので、「responseXML」で検索してみてください。