読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

nw.jsでデスクトップアプリを作る(21) - three.jsのPathオブジェクトをシリアライズする

nw.js three.js JavaScript WebGL HTML5

というわけで昨日からTHREE.Pathのシリアライズ・デシリアライズするコードを書いていて先ほどようやくできた。

three.jsのPathのシリアライズ

使い方だが、PathオブジェクトをJSON.stringfy()を渡すだけである。それでシリアライズされるから、永続化したければそれをファイル等に保存すればよい。

デシリアライズは専用メソッドのSF.deserialize()を使用する。先ほどシリアル化したものをJSON.parse()SF.deserialize()に渡せばPathオブジェクトのインスタンスが返る。

シリアライズ・デシリアライズのメソッドが非対称なのが気に入らないがこれはJSON.stringfy()を使ってシリアライズ処理を端折るためで致し方ないところなのである。ああ、JSON.stringfy()をラップすれば対称にできなくもないね。

シリアライズコードは下のリンク。

pathSerializer.js

実装方法としては「べた」な方法であると思う。オブジェクトの型情報をjsonデータに埋め込んでシリアライズし、デシリアライズはその情報をもとに行う。フォーマットはthree.jsのJSON Object Scene format 4 · mrdoob/three.js Wiki · GitHubを参考にしているが独自フォーマットとなってしまった。

JSON.stringfy()はオブジェクトにtoJSON()メソッドを実装することでJSON出力をカスタマイズすることができる。今回はこれを使用してJSON化する際に型情報を埋め込んでいる。