2014/11/20(木) [n年前の日記]
#1 [cg_tools][dxruby][spriter] Spriter用のデータを作り直し
先日 Spriter で作ったデータは、パーツ数が多過ぎて何が何だか分からないので、数パーツだけ使った簡単なデータを作って眺めていたり。
Spriter の保存ファイルはそのままだとXML形式(.scml)で保存されるけど、json形式(.scon)でも保存できることに今頃気付いた。RubyでXML解析をするなら Nokogiri を使いたいところだけど、しかし Nokogiri はインストール時にハマったりするし。さりとて Ruby に標準でついてる REXML とやらは処理速度が遅いと聞くし。などと悩んでたけど、Spriter が json形式でも保存できるなら、ココは json を使ったほうがヨサゲかなと思えてきたり。ただ、内容を確認するなら json より XML のほうがまだ分かりやすいので、眺めているのは XML だったりして。
とりあえず、分かった点は以下。
animation タグがアニメーション種類の情報を持っている。例えば、defaultpose、walk、run というアニメーション種類を作ったら、
mainline タグは、キーフレーム情報を持っている。例えばキーフレームが2つあるなら、mainline タグの中に <key 〜> 〜 </key> が2つ記録される。
obj_info タグは、bone(ボーン、骨) の数を示してる。例えば bone の数が2つなら以下のようになる。
Spriter の保存ファイルはそのままだとXML形式(.scml)で保存されるけど、json形式(.scon)でも保存できることに今頃気付いた。RubyでXML解析をするなら Nokogiri を使いたいところだけど、しかし Nokogiri はインストール時にハマったりするし。さりとて Ruby に標準でついてる REXML とやらは処理速度が遅いと聞くし。などと悩んでたけど、Spriter が json形式でも保存できるなら、ココは json を使ったほうがヨサゲかなと思えてきたり。ただ、内容を確認するなら json より XML のほうがまだ分かりやすいので、眺めているのは XML だったりして。
とりあえず、分かった点は以下。
animation タグがアニメーション種類の情報を持っている。例えば、defaultpose、walk、run というアニメーション種類を作ったら、
<animation id="0" name="defaultpose" length="960" interval="16"> ... </animation> <animation id="1" name="walk" length="960" interval="16"> ... </animation> <animation id="2" name="run" length="960" interval="16"> ... </animation>といった形で記録される。
- length は、そのアニメーションの全体の長さ。単位はミリ秒(ms)。
- interval は、何msで次のフレームに移行するか。16ms なら 62.5 FPS になるはず。
mainline タグは、キーフレーム情報を持っている。例えばキーフレームが2つあるなら、mainline タグの中に <key 〜> 〜 </key> が2つ記録される。
<animation id="0" name="move" length="960" interval="16"> <mainline> <key id="0" curve_type="cubic" c1="0.7349" c2="0.9581"> ... </key> <key id="1" time="480" curve_type="cubic" c1="0.6744" c2="0.9535"> ... </key> </mainline>
- keyタグの time="〜" がキーフレームの位置(ミリ秒で指定)を示す。
- 0フレーム目にあるキーフレームについては、time="〜" が省略される。
- curve_type は補間種類。通常は linear (直線)で、その場合 curve_type="〜" は省略される。タイムライン上のキーフレームマークを右クリックしてカスタム設定・曲線を指定すると cubic になる模様。
obj_info タグは、bone(ボーン、骨) の数を示してる。例えば bone の数が2つなら以下のようになる。
<obj_info name="bone_000" type="bone" w="30.956" h="10"/> <obj_info name="bone_003" type="bone" w="64.7619" h="10"/>w が bone の長さ、h が bone の幅。どうやら bone は、横に伸びる形で考えてサイズ指定されている。おそらく画面の右方向が 0度として扱われている予感。
[ ツッコむ ]
以上です。