1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> 3<!-- InstanceBegin template="/Templates/default_template.dwt" codeOutsideHTMLIsLocked="false" --> 4<head> 5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6<meta http-equiv="Content-Style-Type" content="text/css" /> 7<!-- InstanceBeginEditable name="CSS の相対パス指定" --> 8<link href="../../../../common/manual.css" rel="stylesheet" type="text/css" /> 9<!-- InstanceEndEditable --> 10<!-- InstanceBeginEditable name="ページのタイトル" --> 11<title>スケルタルアニメーションパネル(プログラマ向け情報)</title> 12<!-- InstanceEndEditable --> 13</head> 14<body> 15<div> 16 <div class="body"> <!-- InstanceBeginEditable name="本文のタイトル" --> 17 <h1>スケルタルアニメーションデータパネル(プログラマ向け情報)</h1> 18 <!-- InstanceEndEditable --> <!-- InstanceBeginEditable name="本文" --> 19 <p>ここでは、スケルタルアニメーションデータパネルの「コマ形式」「量子化品質」について説明します。</p> 20 <p>この設定は、アプリプログラマ向けの設定項目になります。</p> 21 <a name="format_difference" id="format_difference"></a> 22 <h2>コマ形式と通常形式の動作の違い</h2> 23 <p>コマ形式のバイナリ出力と通常形式のバイナリ出力の違いを説明します。</p> 24 <h3>コマ形式</h3> 25 <p>コマ形式のバイナリデータは、X, Y, Z のいずれかの要素にアニメが設定されていると、X, Y, Z の全要素がバイナリデータに出力されます。</p> 26 <p>アニメが設定されている要素にはカーブの評価結果が入り、設定されていない要素には「.cskla ファイルの」バインドポーズの値のコピーが入ります。</p> 27 <p>そして、モデルには毎フレーム全要素が書き込まれます。</p> 28 <p>例えば、Scale の X 要素にアニメが設定され、Translate にはアニメがないとします。</p> 29 <p>すると、Scale のX, Y, Z 要素が毎フレームモデルに書き込まれます。Translate はどの要素も書き込まれません。</p> 30 <h3>通常形式</h3> 31 <p>通常形式のバイナリデータにはバインドポーズの値は含まれません。</p> 32 <p>アニメが設定されている要素のみがモデルへ書き込まれ、その他の要素は変更されません。</p> 33 <p>結果として、アニメが設定されていない要素は「.cmdl ファイルの」バインドポーズの値になります。</p> 34 <p class="hint_warn">注意:<br /> 35 上記の各形式によるバイナリ出力時の違いにより、モデルとアニメでバインドポーズが異なると挙動が一致しなくなります。</p> 36 <p>両方にスケルトンデータが含まれている理由は、<em>.cskla</em> ファイル単体での最適化やバイナリ出力を可能にするためです。</p> 37 <a name="compression_quality" id="compression_quality"></a> 38 <h2>量子化品質について</h2> 39 <p>「量子化」の内部動作について説明します。</p> 40 <p>「量子化」は内部的に、キーデータの量子化を行っています。</p> 41 <p>量子化品質の各段階ごとに、内部的に「<a href="#tolerance_values">許容誤差値</a>」が設定されています。その許容誤差を満たすように、量子化フォーマットを自動選択します。</p> 42 <h4>NW4R の設定値との関係</h4> 43 <p>NW4Rでは「許容誤差値」をユーザーが直接設定できるようになっていました。</p> 44 <p>その値を参考にして量子化品質を設定する場合は、下記の点にご注意ください。</p> 45 <p class="hint_warn">Rotate の設定値についてのみ、NW4Rではユーザー設定値を内部で変換して使用しています。<br /> 46 そのため、CreativeStudio の設定値と解釈が異なります。<br /> 47 対応関係は以下の通りです。<br /> 48 CreativeStudio の許容誤差値 = 20 × NW4Rの許容誤差値</p> 49 <h3>自動選択アルゴリズム</h3> 50 <p>適用可能なすべてのフォーマットでアニメーションカーブの量子化を行います。</p> 51 <p>量子化前と量子化後のカーブを一定フレーム間隔(後述)で評価し、評価値の誤差を求めます。</p> 52 <p>誤差の最大値を、カーブ全体の誤差とします。</p> 53 <p>カーブの誤差が許容誤差以下の場合に、そのフォーマットを合格とします。</p> 54 <p>合格したフォーマットのうち、容量が「最小」のものを選択します。</p> 55 <h4>Rotateカーブ</h4> 56 <p>絶対誤差で評価されます。</p> 57 <p>「評価値の差の絶対値」が誤差として使用されます。</p> 58 <h4>Scale, Translateカーブ</h4> 59 <p>相対誤差で評価されます。</p> 60 <p>「評価値の差の絶対値 ÷ カーブの最大振幅」が誤差として使用されます。</p> 61 <h3>量子化フォーマットの種類</h3> 62 <p>FVSS128, FVSS64, FVSS48, FVS96, FVS48, FVS32, FV64, FV32 の8種類があります。</p> 63 <p>末尾の数字は、キー1個あたりのデータサイズをビット単位で表しています。</p> 64 <p class="new_hint">補足:<br /> 65 フォーマットの詳細は、Library/include/nw/anim/res/anim_ResAnimCurve.h の、ResFloatKey~Data 構造体をご覧ください。</p> 66 <h3>フレーム間隔</h3> 67 <p>誤差評価時のフレーム間隔は、DCC ツールのエクスポート設定の Frame Precision の値が使用されます。</p> 68 <p>つまり高精度でベイクしたカーブは、誤差評価も詳細に行われます。</p> 69 <p class="hint_warn">注意:<br /> 70 バージョン 1.0.1 以前の CreativeStudio では、中間ファイルを保存すると上記の情報が削除される不具合があります。<br /> 71 情報がない場合は、フレーム間隔 1.0 で誤差評価が行われます。<br /> 72 そのため、小数フレームで細かい動きをするデータについては、再度エクスポートを行ってから量子化することを推奨します。</p> 73 <h3>フォーマットの確認</h3> 74 <p>どのフォーマットが選択されたかは、コンソールパネルで確認することができます。</p> 75 <p>コンソール版では、コマンドラインオプション --verbose を指定すると標準出力に出力されます。</p> 76 <a name="tolerance_values" id="tolerance_values"></a> 77 <h3>許容誤差値の設定</h3> 78 <p class="hint_warn">注意:<br /> 79 下記の設定値は変更される可能性があります。</p> 80 <p>表 1 許容誤差値の設定 ( Scale / Translate )</p> 81 <table> 82 <thead> 83 <tr> 84 <th>量子化品質</th> 85 <th>許容誤差値</th> 86 <th>備考</th> 87 </tr> 88 </thead> 89 <tbody class="center"> 90 <tr> 91 <td>0</td> 92 <td>∞</td> 93 <td>常に容量が最小のフォーマットで量子化します。</td> 94 </tr> 95 <tr> 96 <td>1</td> 97 <td>0.40</td> 98 <td>--</td> 99 </tr> 100 <tr> 101 <td>2</td> 102 <td>0.30</td> 103 <td>--</td> 104 </tr> 105 <tr> 106 <td>3</td> 107 <td>0.20</td> 108 <td>--</td> 109 </tr> 110 <tr> 111 <td>4</td> 112 <td>0.10</td> 113 <td>--</td> 114 </tr> 115 <tr> 116 <td>5</td> 117 <td>0.06</td> 118 <td>--</td> 119 </tr> 120 <tr> 121 <td>6</td> 122 <td>0.03</td> 123 <td>--</td> 124 </tr> 125 <tr> 126 <td>7</td> 127 <td>0.01</td> 128 <td>--</td> 129 </tr> 130 <tr> 131 <td>8</td> 132 <td>0.005</td> 133 <td>--</td> 134 </tr> 135 <tr> 136 <td>9</td> 137 <td>0</td> 138 <td>常に量子化しません。</td> 139 </tr> 140 </tbody> 141 </table> 142 <p>表 2 許容誤差値の設定 ( Rotate )</p> 143 <table> 144 <thead> 145 <tr> 146 <th>量子化品質</th> 147 <th>許容誤差値</th> 148 <th>備考</th> 149 </tr> 150 </thead> 151 <tbody class="center"> 152 <tr> 153 <td>0</td> 154 <td>∞</td> 155 <td>常に容量が最小のフォーマットで量子化します。</td> 156 </tr> 157 <tr> 158 <td>1</td> 159 <td>0.50</td> 160 <td>--</td> 161 </tr> 162 <tr> 163 <td>2</td> 164 <td>0.40</td> 165 <td>--</td> 166 </tr> 167 <tr> 168 <td>3</td> 169 <td>0.30</td> 170 <td>--</td> 171 </tr> 172 <tr> 173 <td>4</td> 174 <td>0.20</td> 175 <td>--</td> 176 </tr> 177 <tr> 178 <td>5</td> 179 <td>0.10</td> 180 <td>--</td> 181 </tr> 182 <tr> 183 <td>6</td> 184 <td>0.05</td> 185 <td>--</td> 186 </tr> 187 <tr> 188 <td>7</td> 189 <td>0.01</td> 190 <td>--</td> 191 </tr> 192 <tr> 193 <td>8</td> 194 <td>0.005</td> 195 <td>--</td> 196 </tr> 197 <tr> 198 <td>9</td> 199 <td>0</td> 200 <td>常に量子化しません。</td> 201 </tr> 202 </tbody> 203 </table> 204 <!-- InstanceEndEditable --> </div> 205 <div class="footer" /> 206</div> 207</body> 208<!-- InstanceEnd --> 209</html> 210