vpvp-vpd
v0.0.0-beta
Published
MikuMikuDance Vocaloid-Pose-Data(.vpd) Parser
Downloads
21
Maintainers
Readme
VpvpVpd
MikuMikuDance Vocaloid-Pose-Data(.vpd) Parser
インストール
$ npm install vpvp-vpd --save
API
vpd.parse(buffer) -> {header,bones}
MikuMikuDanceの「ポーズデータ保存」で生成したSHIFT_JIS
の.vmd
ファイルをUTF-8
に変換して、オブジェクトを返します。
// Dependencies
var vpd= require('vpvp-vpd');
var fs= require('fs');
// Main
var vpdFile= fs.readFileSync('./pose.vpd');
var data= vpd.parse(vpdFile);
console.log(data);
// {
// "header": [
// "VocaloidPoseDatafile",
// "初音ミク七葉HT.osm;//親ファイル名",
// "139;//総ポーズボーン数"
// ],
// "bones": [
// {
// "id": "Bone0",
// "name": "センター",
// "position": [ 0.939673, -1.35, 0.129938 ],
// "quaternion": [ 0, 0, 0, 1]
// },
// {
// "id": "Bone1",
// "name": "グルーブ",
// "position": [ 0, 0, 0 ],
// "quaternion": [ 0, 0, 0, 1 ]
// },
// // more 137 bones...
// ]
// };
vpd.mangle({header,bones}
) -> chunks
座標の変更が必要なボーンの情報だけを配列で返します。
// Dependencies
var vpd= require('vpvp-vpd');
var fs= require('fs');
// Main
var vpdFile= fs.readFileSync('./pose.vpd');
var chunks= vpd.mangle(vpd.parse(vpdFile));
console.log(chunks);
// ['センター', 0.939673, -1.35, 0.129938, 0, 0, 0, 1, '上半身', ...]
pako
などの圧縮ライブラリを使用してbase64に変換すれば、2000文字未満に収めることも可能です。これは、webアプリケーションでデータを公開する場合に有用です。
vpd.restore(chunks) -> bones
配列をオブジェクトに戻します。
// Dependencies
var vpd= require('vpvp-vpd');
var fs= require('fs');
// Main
var vpdFile= fs.readFileSync('./pose.vpd');
var bones= vpd.restore(vpd.mangle(vpd.parse(vpdFile)));
console.log(bones);
// [
// {
// name: 'センター',
// position: [ 0.939673, -1.35, 0.129938 ],
// quaternion: [ 0, 0, 0, 1 ],
// },
// ...,
// ]
Related projects
- vpvp-vmd
- vpvp-vpd