From 3fd0f125fb25fb0955bf2d7f7a557f488b4fd98a Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Tue, 11 Jun 2019 03:41:51 +0900 Subject: [PATCH] modify javadoc format. --- config/checkstyle/checkstyle-suppressions.xml | 2 - .../sfjp/mikutoga/bin/export/BinaryExporter.java | 23 ++++-- .../bin/export/IllegalTextExportException.java | 8 +- .../jp/sfjp/mikutoga/bin/export/TextExporter.java | 3 + .../jp/sfjp/mikutoga/bin/parser/BinParser.java | 22 ++++++ .../jp/sfjp/mikutoga/bin/parser/CommonParser.java | 6 +- .../jp/sfjp/mikutoga/bin/parser/LoopHandler.java | 7 ++ .../mikutoga/bin/parser/MmdFormatException.java | 1 + .../jp/sfjp/mikutoga/bin/parser/ParseStage.java | 2 + .../jp/sfjp/mikutoga/bin/parser/ProxyParser.java | 1 + .../jp/sfjp/mikutoga/bin/parser/TextDecoder.java | 5 ++ .../jp/sfjp/mikutoga/bin/parser/package-info.java | 4 +- .../sfjp/mikutoga/corelib/EmptyProxyFactory.java | 2 + .../java/jp/sfjp/mikutoga/corelib/I18nText.java | 7 ++ src/main/java/jp/sfjp/mikutoga/math/EulerYXZ.java | 12 +++ src/main/java/jp/sfjp/mikutoga/math/MkPos2D.java | 9 +++ src/main/java/jp/sfjp/mikutoga/math/MkPos3D.java | 11 +++ src/main/java/jp/sfjp/mikutoga/math/MkQuat.java | 38 +++++++-- .../java/jp/sfjp/mikutoga/math/package-info.java | 2 + src/main/java/jp/sfjp/mikutoga/pmd/PmdConst.java | 1 + .../java/jp/sfjp/mikutoga/pmd/ShadingUtil.java | 8 +- .../sfjp/mikutoga/pmd/parser/PmdBoneHandler.java | 14 ++++ .../jp/sfjp/mikutoga/pmd/parser/PmdEngHandler.java | 6 ++ .../sfjp/mikutoga/pmd/parser/PmdJointHandler.java | 18 +++++ .../mikutoga/pmd/parser/PmdMaterialHandler.java | 36 ++++++--- .../sfjp/mikutoga/pmd/parser/PmdMorphHandler.java | 7 ++ .../jp/sfjp/mikutoga/pmd/parser/PmdParser.java | 1 + .../jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java | 5 ++ .../jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java | 1 + .../jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java | 1 + .../jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java | 25 +++--- .../sfjp/mikutoga/pmd/parser/PmdRigidHandler.java | 39 +++++++--- .../sfjp/mikutoga/pmd/parser/PmdShapeHandler.java | 16 ++++ .../sfjp/mikutoga/pmd/parser/PmdToonHandler.java | 2 + .../jp/sfjp/mikutoga/pmd/parser/package-info.java | 1 + .../java/jp/sfjp/mikutoga/typical/AliasMap.java | 24 +++++- .../java/jp/sfjp/mikutoga/typical/I18nAlias.java | 9 +++ .../java/jp/sfjp/mikutoga/typical/TypicalBone.java | 8 ++ .../jp/sfjp/mikutoga/typical/TypicalMorph.java | 6 ++ .../java/jp/sfjp/mikutoga/typical/UniqBone.java | 4 + .../jp/sfjp/mikutoga/typical/package-info.java | 2 + src/main/java/jp/sfjp/mikutoga/vmd/VmdConst.java | 2 + src/main/java/jp/sfjp/mikutoga/vmd/VmdUniq.java | 2 + .../sfjp/mikutoga/vmd/parser/VmdBasicHandler.java | 31 ++++++++ .../sfjp/mikutoga/vmd/parser/VmdBasicParser.java | 3 + .../sfjp/mikutoga/vmd/parser/VmdBoolHandler.java | 5 ++ .../jp/sfjp/mikutoga/vmd/parser/VmdBoolParser.java | 1 + .../sfjp/mikutoga/vmd/parser/VmdCameraHandler.java | 89 ++++++++++++++++------ .../mikutoga/vmd/parser/VmdLightingHandler.java | 20 +++++ .../mikutoga/vmd/parser/VmdLightingParser.java | 3 + .../jp/sfjp/mikutoga/vmd/parser/VmdParser.java | 3 + .../jp/sfjp/mikutoga/vmd/parser/package-info.java | 1 + .../jp/sfjp/mikutoga/xml/AbstractXmlExporter.java | 2 + src/main/java/jp/sfjp/mikutoga/xml/DomNsUtils.java | 5 ++ .../jp/sfjp/mikutoga/xml/LocalXmlResource.java | 1 + src/main/java/jp/sfjp/mikutoga/xml/SchemaUtil.java | 6 +- .../jp/sfjp/mikutoga/xml/SiblingElemIterator.java | 6 ++ .../java/jp/sfjp/mikutoga/xml/XmlExporter.java | 32 ++++++++ .../jp/sfjp/mikutoga/xml/XmlResourceResolver.java | 2 +- 59 files changed, 523 insertions(+), 90 deletions(-) diff --git a/config/checkstyle/checkstyle-suppressions.xml b/config/checkstyle/checkstyle-suppressions.xml index 9b0570a..b2e5a87 100644 --- a/config/checkstyle/checkstyle-suppressions.xml +++ b/config/checkstyle/checkstyle-suppressions.xml @@ -31,8 +31,6 @@ - - diff --git a/src/main/java/jp/sfjp/mikutoga/bin/export/BinaryExporter.java b/src/main/java/jp/sfjp/mikutoga/bin/export/BinaryExporter.java index bdb53dd..c54245f 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/export/BinaryExporter.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/export/BinaryExporter.java @@ -18,6 +18,7 @@ import java.text.MessageFormat; /** * バイナリデータの出力を行う汎用エクスポーター。 + * *

基本的にリトルエンディアン形式で出力される。 */ public class BinaryExporter implements Closeable, Flushable{ @@ -257,12 +258,18 @@ public class BinaryExporter implements Closeable, Flushable{ /** * 詰め物パディングを出力する。 + * * @param filler byte型配列によるパディングデータの並び。 - *

指定パディング長より長い部分は出力されない。 - * 指定パディング長に満たない場合は最後の要素が繰り返し出力される。 - *

配列長が0の場合は何も出力されない。 + * + *

指定パディング長より長い部分は出力されない。 + * 指定パディング長に満たない場合は最後の要素が繰り返し出力される。 + * + *

配列長が0の場合は何も出力されない。 + * * @param fillerLength パディング長。 - *

パディング長が0以下の場合は何も出力されない。 + * + *

パディング長が0以下の場合は何も出力されない。 + * * @return this * @throws IOException 出力エラー */ @@ -294,8 +301,8 @@ public class BinaryExporter implements Closeable, Flushable{ * @return this * @throws IOException 出力エラー * @throws IllegalTextExportException テキスト出力エラー。 - * 出力が固定長を超えようとした、 - * もしくは不正なエンコードが行われたかのいずれか。 + * 出力が固定長を超えようとした、 + * もしくは不正なエンコードが行われたかのいずれか。 */ public BinaryExporter dumpFixedW31j(CharSequence text, int fixedLength, @@ -338,8 +345,8 @@ public class BinaryExporter implements Closeable, Flushable{ * @return エンコードバイト列長 * @throws IOException 出力エラー * @throws IllegalTextExportException テキスト出力エラー。 - * 出力が固定長を超えようとした、 - * もしくは不正なエンコードが行われたかのいずれか。 + * 出力が固定長を超えようとした、 + * もしくは不正なエンコードが行われたかのいずれか。 */ public int dumpHollerithUtf16LE(CharSequence text) throws IOException, IllegalTextExportException{ diff --git a/src/main/java/jp/sfjp/mikutoga/bin/export/IllegalTextExportException.java b/src/main/java/jp/sfjp/mikutoga/bin/export/IllegalTextExportException.java index 5c99d1e..7903783 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/export/IllegalTextExportException.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/export/IllegalTextExportException.java @@ -11,11 +11,11 @@ import java.nio.charset.CharacterCodingException; /** * バイナリファイルへの不正なテキスト情報の出力が検出された場合の例外。 - *

- * {@link java.nio.charset.CharacterCodingException}に由来する異常系を + * + *

{@link java.nio.charset.CharacterCodingException}に由来する異常系を * {@link java.io.IOException}から分離するために設計された。 - *

- * 異常系の発生した理由としては + * + *

異常系の発生した理由としては *

    *
  • 所定のフォーマットに対し文字列が長すぎる。 *
  • 文字エンコーディングできない文字が含まれている diff --git a/src/main/java/jp/sfjp/mikutoga/bin/export/TextExporter.java b/src/main/java/jp/sfjp/mikutoga/bin/export/TextExporter.java index bba9017..cc54c26 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/export/TextExporter.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/export/TextExporter.java @@ -193,6 +193,7 @@ public class TextExporter { /** * 入力バッファに文字を埋める。 + * *

    入力バッファが一杯になるか * 入力文字列がなくなるまでバッファが埋められる。 */ @@ -261,7 +262,9 @@ public class TextExporter { /** * 与えられた文字列のエンコード結果を格納先バイトストリームへ格納する。 + * *

    エンコード結果は格納先ストリームに追記される。 + * * @param text 文字列 * @param bos 格納先ストリーム * @return エンコードしたバイト数。 diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/BinParser.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/BinParser.java index 3ce9f21..e6b4718 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/BinParser.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/BinParser.java @@ -11,19 +11,23 @@ import java.io.IOException; /** * バイナリパーサの共通インタフェース。 + * *

    バイト列、各種プリミティブ型値およびエンコードされた文字列を読み込む。 + * *

    long,double、およびビッグエンディアン形式のデータは未サポート。 */ public interface BinParser { /** * 入力ソースの読み込み位置を返す。 + * * @return 入力ソースの読み込み位置。単位はbyte。 */ long getPosition(); /** * 入力ソースにまだデータが残っているか判定する。 + * * @return まだ読み込んでいないデータが残っていればtrue * @throws IOException IOエラー */ @@ -31,6 +35,7 @@ public interface BinParser { /** * 入力ソースを読み飛ばす。 + * * @param skipLength 読み飛ばすバイト数。 * @throws IOException IOエラー * @throws MmdEofException 読み飛ばす途中でストリーム終端に達した。 @@ -40,6 +45,7 @@ public interface BinParser { /** * byte配列を読み込む。 + * * @param dst 格納先配列 * @param off 読み込み開始オフセット * @param length 読み込みバイト数 @@ -57,7 +63,9 @@ public interface BinParser { /** * byte配列を読み込む。 + * *

    配列要素全ての読み込みが試みられる。 + * * @param dst 格納先配列 * @throws NullPointerException 配列がnull * @throws IOException IOエラー @@ -69,6 +77,7 @@ public interface BinParser { /** * byte値を読み込む。 + * * @return 読み込んだbyte値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 @@ -77,7 +86,9 @@ public interface BinParser { /** * 符号無し値としてbyte値を読み込み、int型に変換して返す。 + * *

    符号は拡張されない。(0xffは0x000000ffとなる) + * * @return 読み込まれた値のint値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 @@ -86,7 +97,9 @@ public interface BinParser { /** * byte値を読み込み、boolean型に変換して返す。 + * *

    0x00は偽、それ以外は真と解釈される。 + * * @return 読み込まれた値のboolean値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 @@ -95,7 +108,9 @@ public interface BinParser { /** * short値を読み込む。 + * *

    short値はリトルエンディアンで格納されていると仮定される。 + * * @return 読み込んだshort値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 @@ -104,8 +119,11 @@ public interface BinParser { /** * 符号無し値としてshort値を読み込み、int型に変換して返す。 + * *

    符号は拡張されない。(0xffffは0x0000ffffとなる) + * *

    short値はリトルエンディアンで格納されていると仮定される。 + * * @return 読み込まれた値のint値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 @@ -114,7 +132,9 @@ public interface BinParser { /** * int値を読み込む。 + * *

    int値はリトルエンディアンで格納されていると仮定される。 + * * @return 読み込んだint値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 @@ -123,7 +143,9 @@ public interface BinParser { /** * float値を読み込む。 + * *

    float値はリトルエンディアンで格納されていると仮定される。 + * * @return 読み込んだfloat値 * @throws IOException IOエラー * @throws MmdEofException 読み込む途中でストリーム終端に達した。 diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/CommonParser.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/CommonParser.java index ceedad5..dc7ae00 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/CommonParser.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/CommonParser.java @@ -45,7 +45,7 @@ public class CommonParser implements BinParser{ private final PushbackInputStream is; private final byte[] readBuffer; -// private final ByteBuffer beBuf; + // private final ByteBuffer beBuf; private final ByteBuffer leBuf; private long position = 0L; @@ -64,10 +64,10 @@ public class CommonParser implements BinParser{ this.readBuffer = new byte[BYTES_PRIM]; -// this.beBuf = ByteBuffer.wrap(this.readBuffer); + // this.beBuf = ByteBuffer.wrap(this.readBuffer); this.leBuf = ByteBuffer.wrap(this.readBuffer); -// this.beBuf.order(ByteOrder.BIG_ENDIAN); + // this.beBuf.order(ByteOrder.BIG_ENDIAN); this.leBuf.order(ByteOrder.LITTLE_ENDIAN); return; diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/LoopHandler.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/LoopHandler.java index 9843357..f050477 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/LoopHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/LoopHandler.java @@ -9,13 +9,16 @@ package jp.sfjp.mikutoga.bin.parser; /** * バイナリファイル中ループ構造の通知用ハンドラ。 + * *

    ステージ指定により、多重ネストループをもサポートする。 */ public interface LoopHandler { /** * ループ構造開始の通知を受け取る。 + * *

    0回ループの場合も含め一度呼ばれる。 + * * @param stage ループ種別 * @param loops ループ予定回数。未知の場合は負の値。 * @throws MmdFormatException 不正フォーマットによる @@ -25,8 +28,10 @@ public interface LoopHandler { /** * ループ構造の1イテレーション終了の通知を受け取る。 + * *

    1度しか回らないループでも呼ばれる。 * 0回ループでは決して呼ばれない。 + * * @param stage ループ種別 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -35,7 +40,9 @@ public interface LoopHandler { /** * ループ構造終了の通知を受け取る。 + * *

    0回ループの場合も含め一度呼ばれる。 + * * @param stage ループ種別 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/MmdFormatException.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/MmdFormatException.java index 95178aa..e4fce33 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/MmdFormatException.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/MmdFormatException.java @@ -9,6 +9,7 @@ package jp.sfjp.mikutoga.bin.parser; /** * MMD関連ファイルのパース異常系。 + * *

    必要に応じて、パースに失敗した位置を保持する。 */ @SuppressWarnings("serial") diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/ParseStage.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/ParseStage.java index 638422a..ed61529 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/ParseStage.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/ParseStage.java @@ -11,7 +11,9 @@ import java.util.concurrent.atomic.AtomicInteger; /** * パース処理の進行ステージ種別を表す。 + * *

    ループ構造の識別に用いられる。 + * *

    enum型と異なり、実行時での要素の追加が可能。 */ public class ParseStage { diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/ProxyParser.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/ProxyParser.java index 578f768..ae7e0c9 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/ProxyParser.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/ProxyParser.java @@ -11,6 +11,7 @@ import java.io.IOException; /** * 委譲パーサ。 + * *

    別のパーサにパース処理を委譲する。 */ public class ProxyParser implements BinParser{ diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/TextDecoder.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/TextDecoder.java index 20095fb..0652e14 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/TextDecoder.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/TextDecoder.java @@ -17,10 +17,13 @@ import java.nio.charset.CodingErrorAction; /** * 文字デコーダー。 + * *

    あらかじめバイト長が既知であるバイトバッファを読み取り、 * 文字列へのデコード結果を返す。 + * *

    デコード対象のバイト列が全てメモリ上に展開される必要があるので、 * 巨大なテキストのデコードには不適当。 + * *

    入力バイト値0x00以降をデコード処理の対象から外す * 「ゼロチョップモード」を備える。 * デフォルトではゼロチョップモードはオフ。 @@ -61,7 +64,9 @@ public class TextDecoder { /** * 指定されたバイト長のデコードに必要な出力バッファを用意する。 + * *

    既存バッファで足りなければ新たに確保し直す。 + * * @param byteLength 入力バイト長 * @return 出力バッファ長。(キャラクタ単位) */ diff --git a/src/main/java/jp/sfjp/mikutoga/bin/parser/package-info.java b/src/main/java/jp/sfjp/mikutoga/bin/parser/package-info.java index 5166afd..485aa57 100644 --- a/src/main/java/jp/sfjp/mikutoga/bin/parser/package-info.java +++ b/src/main/java/jp/sfjp/mikutoga/bin/parser/package-info.java @@ -7,8 +7,8 @@ /** * MMD用各種バイナリファイルパーサ共通ライブラリ。 - *

    - * PMDモデルファイルやVMDモーションファイルなどの個別のパーサは + * + *

    PMDモデルファイルやVMDモーションファイルなどの個別のパーサは * 別パッケージにより提供される。 */ diff --git a/src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java b/src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java index bbfba54..e3ce681 100644 --- a/src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java +++ b/src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java @@ -31,7 +31,9 @@ public final class EmptyProxyFactory { /** * 何もしないインタフェース実装のインスタンスを生成する。 + * *

    インタフェースの各メソッド戻り値はvoidでなければならない。 + * * @param types インタフェース群 * @return インタフェースを実装したインスタンス。 */ diff --git a/src/main/java/jp/sfjp/mikutoga/corelib/I18nText.java b/src/main/java/jp/sfjp/mikutoga/corelib/I18nText.java index 6b48658..3ca7dc5 100644 --- a/src/main/java/jp/sfjp/mikutoga/corelib/I18nText.java +++ b/src/main/java/jp/sfjp/mikutoga/corelib/I18nText.java @@ -155,9 +155,12 @@ public class I18nText implements CharSequence { /** * プライマリ文字列を返す。 + * *

    見つからなければグローバル文字列を返す。 * それでも見つからなければ長さ0の空文字列を返す。 + * *

    ※決してnullは返さない。 + * * @return 文字列 */ public String getText(){ @@ -178,11 +181,15 @@ public class I18nText implements CharSequence { /** * 実行環境のデフォルトロケールに応じた文字列を返す。 + * *

    見つからなければグローバル文字列、プライマリ文字列の順に返す。 * それでも見つからなければ適当な言語コードの文字列を返す。 * それでも見つからなければ長さ0の空文字列を返す。 + * *

    デフォルトロケールの確認はその都度行われる。 + * *

    ※決してnullは返さない。 + * * @return 文字列 */ public String getLocalizedText(){ diff --git a/src/main/java/jp/sfjp/mikutoga/math/EulerYXZ.java b/src/main/java/jp/sfjp/mikutoga/math/EulerYXZ.java index 028fce6..343172f 100644 --- a/src/main/java/jp/sfjp/mikutoga/math/EulerYXZ.java +++ b/src/main/java/jp/sfjp/mikutoga/math/EulerYXZ.java @@ -10,7 +10,9 @@ package jp.sfjp.mikutoga.math; /** * YXZオイラー角。 * 三次元空間での方向及び姿勢を定義する。 + * *

    回転量はラジアンで表される。 + * *

    ※XYZオイラー角ではない。 */ public strictfp class EulerYXZ { @@ -22,6 +24,7 @@ public strictfp class EulerYXZ { /** * コンストラクタ。 + * *

    三軸とも回転量0の状態になる。 */ public EulerYXZ(){ @@ -31,6 +34,7 @@ public strictfp class EulerYXZ { /** * コンストラクタ。 + * * @param xRot X軸回転量。(ラジアン) * @param yRot Y軸回転量。(ラジアン) * @param zRot Z軸回転量。(ラジアン) @@ -45,6 +49,7 @@ public strictfp class EulerYXZ { /** * X軸回転量を返す。 + * * @return X軸回転量を返す。(ラジアン) */ public double getXRot(){ @@ -53,6 +58,7 @@ public strictfp class EulerYXZ { /** * Y軸回転量を返す。 + * * @return Y軸回転量を返す。(ラジアン) */ public double getYRot(){ @@ -61,6 +67,7 @@ public strictfp class EulerYXZ { /** * Z軸回転量を返す。 + * * @return Z軸回転量を返す。(ラジアン) */ public double getZRot(){ @@ -69,6 +76,7 @@ public strictfp class EulerYXZ { /** * X軸回転量を設定する。 + * * @param xRotArg X軸回転量。(ラジアン) */ public void setXRot(double xRotArg){ @@ -78,6 +86,7 @@ public strictfp class EulerYXZ { /** * Y軸回転量を設定する。 + * * @param yRotArg Y軸回転量。(ラジアン) */ public void setYRot(double yRotArg){ @@ -87,6 +96,7 @@ public strictfp class EulerYXZ { /** * Z軸回転量を設定する。 + * * @param zRotArg Z軸回転量。(ラジアン) */ public void setZRot(double zRotArg){ @@ -96,6 +106,7 @@ public strictfp class EulerYXZ { /** * 三軸の回転量を設定する。 + * * @param xRotArg X軸回転量。(ラジアン) * @param yRotArg Y軸回転量。(ラジアン) * @param zRotArg Z軸回転量。(ラジアン) @@ -109,6 +120,7 @@ public strictfp class EulerYXZ { /** * パラメータ情報の文字列化。 + * * @param x x値 * @param y y値 * @param z z値 diff --git a/src/main/java/jp/sfjp/mikutoga/math/MkPos2D.java b/src/main/java/jp/sfjp/mikutoga/math/MkPos2D.java index 04c7bc7..9753b0f 100644 --- a/src/main/java/jp/sfjp/mikutoga/math/MkPos2D.java +++ b/src/main/java/jp/sfjp/mikutoga/math/MkPos2D.java @@ -9,7 +9,9 @@ package jp.sfjp.mikutoga.math; /** * 二次元空間座標及び変量を表す。 + * *

    直交座標を二つの倍精度値で表す。 + * *

    主な用途はUVマッピングなど。 */ public strictfp class MkPos2D { @@ -28,6 +30,7 @@ public strictfp class MkPos2D { /** * コンストラクタ。 + * * @param xPosArg X座標 * @param yPosArg Y座標 */ @@ -40,6 +43,7 @@ public strictfp class MkPos2D { /** * X座標を設定する。 + * * @param xPosArg X座標 */ public void setXpos(double xPosArg){ @@ -49,6 +53,7 @@ public strictfp class MkPos2D { /** * X座標を返す。 + * * @return X座標 */ public double getXpos(){ @@ -57,6 +62,7 @@ public strictfp class MkPos2D { /** * Y座標を設定する。 + * * @param yPosArg Y座標 */ public void setYpos(double yPosArg){ @@ -66,6 +72,7 @@ public strictfp class MkPos2D { /** * Y座標を返す。 + * * @return Y座標 */ public double getYpos(){ @@ -74,6 +81,7 @@ public strictfp class MkPos2D { /** * 座標を設定する。 + * * @param xPosArg X軸座標 * @param yPosArg Y軸座標 */ @@ -85,6 +93,7 @@ public strictfp class MkPos2D { /** * この点が原点(0,0)か否か判定する。 + * * @return 原点ならtrue */ public boolean isOriginPoint(){ diff --git a/src/main/java/jp/sfjp/mikutoga/math/MkPos3D.java b/src/main/java/jp/sfjp/mikutoga/math/MkPos3D.java index 20616a0..c6abb82 100644 --- a/src/main/java/jp/sfjp/mikutoga/math/MkPos3D.java +++ b/src/main/java/jp/sfjp/mikutoga/math/MkPos3D.java @@ -9,7 +9,9 @@ package jp.sfjp.mikutoga.math; /** * 三次元位置情報。 + * *

    直交座標を三つの倍精度値で表す。 + * *

    具体的にはボーン位置やカメラターゲット位置など。 */ public strictfp class MkPos3D { @@ -29,6 +31,7 @@ public strictfp class MkPos3D { /** * コンストラクタ。 + * * @param xPosArg X軸座標 * @param yPosArg Y軸座標 * @param zPosArg Z軸座標 @@ -42,6 +45,7 @@ public strictfp class MkPos3D { /** * X軸座標を返す。 + * * @return X軸座標 */ public double getXpos() { @@ -50,6 +54,7 @@ public strictfp class MkPos3D { /** * Y軸座標を返す。 + * * @return Y軸座標 */ public double getYpos() { @@ -58,6 +63,7 @@ public strictfp class MkPos3D { /** * Z軸座標を返す。 + * * @return Z軸座標 */ public double getZpos() { @@ -66,6 +72,7 @@ public strictfp class MkPos3D { /** * X軸座標を設定する。 + * * @param xPosArg X軸座標 */ public void setXpos(double xPosArg){ @@ -75,6 +82,7 @@ public strictfp class MkPos3D { /** * Y軸座標を設定する。 + * * @param yPosArg Y軸座標 */ public void setYpos(double yPosArg){ @@ -84,6 +92,7 @@ public strictfp class MkPos3D { /** * Z軸座標を設定する。 + * * @param zPosArg Z軸座標 */ public void setZpos(double zPosArg){ @@ -93,6 +102,7 @@ public strictfp class MkPos3D { /** * 座標を設定する。 + * * @param xPosArg X軸座標 * @param yPosArg Y軸座標 * @param zPosArg Z軸座標 @@ -106,6 +116,7 @@ public strictfp class MkPos3D { /** * この点が原点(0,0,0)か否か判定する。 + * * @return 原点ならtrue */ public boolean isOriginPoint(){ diff --git a/src/main/java/jp/sfjp/mikutoga/math/MkQuat.java b/src/main/java/jp/sfjp/mikutoga/math/MkQuat.java index d00b175..c815027 100644 --- a/src/main/java/jp/sfjp/mikutoga/math/MkQuat.java +++ b/src/main/java/jp/sfjp/mikutoga/math/MkQuat.java @@ -9,6 +9,7 @@ package jp.sfjp.mikutoga.math; /** * クォータニオンによる回転表現。 + * *

    虚部q1,q2,q3と実部qwから構成される。 */ public strictfp class MkQuat { @@ -37,6 +38,7 @@ public strictfp class MkQuat { /** * コンストラクタ。 + * *

    虚部が全て0.0、実部が1.0となる。 */ public MkQuat(){ @@ -46,6 +48,7 @@ public strictfp class MkQuat { /** * コンストラクタ。 + * * @param q コピー元クォータニオン */ public MkQuat(MkQuat q){ @@ -55,6 +58,7 @@ public strictfp class MkQuat { /** * コンストラクタ。 + * * @param q1 虚部1 * @param q2 虚部2 * @param q3 虚部3 @@ -72,8 +76,11 @@ public strictfp class MkQuat { /** * クォータニオン積を求め格納する。 + * *

    クォータニオン積では交換則が成り立たない。 + * *

    引数は同一インスタンスを含んでもよい。 + * * @param qA 積前項 * @param qB 積後項 * @param result 積の格納先 @@ -111,7 +118,9 @@ public strictfp class MkQuat { /** * 共役(共軛)クォータニオンを求め格納する。 + * *

    引数は同一インスタンスでもよい。 + * * @param q クォータニオン * @param result 格納先 */ @@ -125,7 +134,9 @@ public strictfp class MkQuat { /** * 単位クォータニオンを求め格納する。 + * *

    引数は同一インスタンスでもよい。 + * * @param q クォータニオン * @param result 格納先 */ @@ -147,9 +158,12 @@ public strictfp class MkQuat { /** * 逆元クォータニオンを求め格納する。 + * *

    対象クォータニオンの絶対値が小さい場合、 * 無限大が虚部実部に入る可能性がある。 + * *

    引数は同一インスタンスでもよい。 + * * @param q クォータニオン * @param result 格納先 */ @@ -274,8 +288,11 @@ public strictfp class MkQuat { /** * 位置情報を読み込む。 + * *

    虚部q1,q2,q3にX,Y,Z軸の変量が入る。 + * *

    実部には0が入る。 + * * @param xPos X位置 * @param yPos Y位置 * @param zPos Z位置 @@ -290,8 +307,11 @@ public strictfp class MkQuat { /** * 位置情報を読み込む。 + * *

    虚部q1,q2,q3にX,Y,Z軸の変量が入る。 + * *

    実部には0が入る。 + * * @param pos 位置情報 */ public void setPos3D(MkPos3D pos){ @@ -301,8 +321,10 @@ public strictfp class MkQuat { /** * YXZオイラー角を読み込む。 + * *

    Y軸回転、X軸回転、Z軸回転の順に * 個別回転クォータニオンの積をとったものと等しい。 + * * @param xRot X軸回転量(ラジアン)。第2軸 * @param yRot Y軸回転量(ラジアン)。第1軸 * @param zRot Z軸回転量(ラジアン)。第3軸 @@ -330,8 +352,10 @@ public strictfp class MkQuat { /** * YXZオイラー角を読み込む。 + * *

    Y軸回転、X軸回転、Z軸回転の順に * 個別回転クォータニオンの積をとったものと等しい。 + * * @param rot YXZオイラー角 */ public void setEulerYXZ(EulerYXZ rot){ @@ -341,10 +365,12 @@ public strictfp class MkQuat { /** * クォータニオンをYXZオイラー角へと変換する。 + * *

    ジンバルロック時のYZ配分が指定可能。 + * * @param result YXZオイラー角 * @param oldY ジンバルロック時(オイラー角Xが直角etc.) - * に使われるY軸回転量 + * に使われるY軸回転量 */ public void toEulerYXZ(EulerYXZ result, double oldY){ double qx = this.q1; @@ -372,8 +398,8 @@ public strictfp class MkQuat { double m11 = 1.0 - 2.0 * (qx2 + qz2); double m12 = 2.0 * (qyz - qwx); -// double m20 = 2.0 * (qxz - qwy); -// double m21 = 2.0 * (qwx + qyz); + // double m20 = 2.0 * (qxz - qwy); + // double m21 = 2.0 * (qwx + qyz); double m22 = 1.0 - 2.0 * (qx2 + qy2); double resultX; @@ -461,14 +487,14 @@ public strictfp class MkQuat { double rprrQ1; double rprrQ2; double rprrQ3; -// double rprrQW; rprrQ1 = rpQ2 * rrQ3 - rpQ3 * rrQ2 + rpQW * rrQ1 + rpQ1 * rrQW; rprrQ2 = rpQ3 * rrQ1 - rpQ1 * rrQ3 + rpQW * rrQ2 + rpQ2 * rrQW; rprrQ3 = rpQ1 * rrQ2 - rpQ2 * rrQ1 + rpQW * rrQ3 + rpQ3 * rrQW; -// rprrQW = rpQW * rrQW - rpQ1 * rrQ1 - rpQ2 * rrQ2 - rpQ3 * rrQ3; -// assert rprrQW == 0.0; + // double rprrQW; + // rprrQW = rpQW * rrQW - rpQ1 * rrQ1 - rpQ2 * rrQ2 - rpQ3 * rrQ3; + // assert rprrQW == 0.0; result.setXpos(rprrQ1); result.setYpos(rprrQ2); diff --git a/src/main/java/jp/sfjp/mikutoga/math/package-info.java b/src/main/java/jp/sfjp/mikutoga/math/package-info.java index eba00b5..9c28d74 100644 --- a/src/main/java/jp/sfjp/mikutoga/math/package-info.java +++ b/src/main/java/jp/sfjp/mikutoga/math/package-info.java @@ -7,7 +7,9 @@ /** * MMDにおける数学的な各種概念。 + * *

    基本的には左手系直交座標のユークリッド三次元空間を基盤とする。 + * *

    javax.vecmathの代替品。 */ diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/PmdConst.java b/src/main/java/jp/sfjp/mikutoga/pmd/PmdConst.java index 07f2b44..3693e30 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/PmdConst.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/PmdConst.java @@ -43,6 +43,7 @@ public final class PmdConst { /** * ボーン最大数。 * (Id : 0 - 0xfffe) + * *

    MMDがいくつまで受け入れるかはまた別の話だよ。 */ public static final int MAX_BONE = 65535; diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/ShadingUtil.java b/src/main/java/jp/sfjp/mikutoga/pmd/ShadingUtil.java index 9fe2e35..212375e 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/ShadingUtil.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/ShadingUtil.java @@ -11,7 +11,9 @@ import java.util.regex.Pattern; /** * シェーディング情報の各種ユーティリティ。 + * *

    ※ スフィアマップファイルの中身はBMP(DIB)形式。 + * *

    * BMP file format */ @@ -37,8 +39,10 @@ public final class ShadingUtil { /** * スフィアマップファイル名か否か判定する。 + * *

    拡張子が「.sph」(乗算)もしくは「.spa」(加算)なら * スフィアマップファイル名と判定する。 + * * @param fname ファイル名 * @return スフィアマップファイルならtrue */ @@ -51,14 +55,16 @@ public final class ShadingUtil { /** * シェーディング用ファイル情報文字列から * テクスチャファイル名とスフィアマップファイル名を分離する。 + * *

    2つのファイル名は単一の「*」で区切られ、 * 前部がテクスチャファイル名、後部がスフィアマップファイル名となる。 * 「*」がなく末尾が「.sph」か「.spa」なら * スフィアマップファイル名のみ、 * 末尾がどちらでもなければテクスチャファイル名のみとなる。 + * * @param shadingFile シェーディング用ファイル情報 * @return [0]:テクスチャファイル名 [1]:スフィアマップファイル名。 - * 該当ファイル名が無い場合は空文字列。 + * 該当ファイル名が無い場合は空文字列。 */ public static String[] splitShadingFileInfo(String shadingFile) { String[] result; diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdBoneHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdBoneHandler.java index 527bb54..f35256e 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdBoneHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdBoneHandler.java @@ -34,7 +34,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * ボーン定義情報の通知を受け取る。 + * *

    {@link #BONE_LIST}ループの構成要素。 + * * @param boneName ボーン名 * @param boneKind ボーン種別。 *

      @@ -58,7 +60,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * ボーン間接続情報の通知を受け取る。 + * *

      {@link #BONE_LIST}ループの構成要素。 + * * @param parentId 親(前)ボーンID。無い場合は0xffff。 * @param tailId 子(次)ボーンID。末端の場合は0。 * 捩りボーンの場合は軸方向のボーンID、 @@ -73,7 +77,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * ボーン位置情報の通知を受け取る。 + * *

      {@link #BONE_LIST}ループの構成要素。 + * * @param xPos X座標 * @param yPos Y座標 * @param zPos Z座標 @@ -85,7 +91,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * IKボーン情報の通知を受け取る。 + * *

      {@link #IK_LIST}ループの構成要素。 + * * @param boneId IKボーンID * @param targetId IKボーンが最初に接続するIK接続先ボーンID * @param depth 再帰演算の深さ @@ -98,7 +106,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * IKチェイン要素の通知を受け取る。 + * *

      {@link #IK_LIST}ループの下位{@link #IKCHAIN_LIST}ループの構成要素。 + * * @param childId IK影響下ボーンID * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -108,7 +118,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * ボーングループ名定義の通知を受け取る。 + * *

      {@link #BONEGROUP_LIST}ループの構成要素。 + * * @param groupName ボーングループ名。末尾のLF(0x0a)は削除される。 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -117,7 +129,9 @@ public interface PmdBoneHandler extends LoopHandler { /** * ボーングループ内訳の通知を受け取る。 + * *

      {@link #GROUPEDBONE_LIST}ループの構成要素。 + * * @param boneId グループに所属するボーンのID * @param groupId ボーンが所属するボーングループIDに1を足した数 * @throws MmdFormatException 不正フォーマットによる diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdEngHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdEngHandler.java index b11b38c..86297ec 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdEngHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdEngHandler.java @@ -45,7 +45,9 @@ public interface PmdEngHandler extends LoopHandler { /** * 英語ボーン名の通知を受け取る。 + * *

      {@link #ENGBONE_LIST}ループの構成要素 + * * @param boneName 英語ボーン名 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -55,7 +57,9 @@ public interface PmdEngHandler extends LoopHandler { /** * 英語モーフ名の通知を受け取る。 * 特殊モーフ名「base」に対応する英語名は通知されない。 + * *

      {@link #ENGMORPH_LIST}ループの構成要素 + * * @param morphName 英語モーフ名 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -64,7 +68,9 @@ public interface PmdEngHandler extends LoopHandler { /** * 英語ボーングループ名の通知を受け取る。 + * *

      {@link #ENGBONEGROUP_LIST}ループの構成要素 + * * @param groupName 英語ボーングループ名 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdJointHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdJointHandler.java index 0fca5bf..df7a4dd 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdJointHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdJointHandler.java @@ -21,7 +21,9 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイント名の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * * @param jointName ジョイント名 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示。 @@ -31,7 +33,9 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイントが繋ぐ接続剛体IDの通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * * @param rigidIdA 接続剛体AのID * @param rigidIdB 接続剛体BのID * @throws MmdFormatException 不正フォーマットによる @@ -42,7 +46,9 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイント位置の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * * @param posX X座標 * @param posY Y座標 * @param posZ Z座標 @@ -54,7 +60,9 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイント回転姿勢の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * * @param radX X軸回転量(radian) * @param radY Y軸回転量(radian) * @param radZ Z軸回転量(radian) @@ -66,8 +74,11 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイント移動制限の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * *

      ※ [制限端 その1 <= その2] 条件を満たす必要はあるか? + * * @param posXlim1 X座標制限端その1 * @param posXlim2 X座標制限端その2 * @param posYlim1 Y座標制限端その1 @@ -84,8 +95,11 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイント回転制限の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * *

      ※ [制限端 その1 <= その2] 条件を満たす必要はあるか? + * * @param radXlim1 X軸制限端その1(radian) * @param radXlim2 X軸制限端その2(radian) * @param radYlim1 Y軸制限端その1(radian) @@ -102,7 +116,9 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイントのばね移動情報の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * * @param elasticPosX X座標 * @param elasticPosY Y座標 * @param elasticPosZ Z座標 @@ -116,7 +132,9 @@ public interface PmdJointHandler extends LoopHandler { /** * ジョイントのばね回転情報の通知を受け取る。 + * *

      {@link #JOINT_LIST}ループの構成要素。 + * * @param elasticDegX X軸変量(degree) * @param elasticDegY Y軸変量(degree) * @param elasticDegZ Z軸変量(degree) diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMaterialHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMaterialHandler.java index 4a1c56f..a935316 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMaterialHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMaterialHandler.java @@ -22,13 +22,15 @@ public interface PmdMaterialHandler extends LoopHandler { /** * 材質の拡散光成分の通知を受け取る。 + * *

      {@link #MATERIAL_LIST}ループの構成要素。 + * * @param red 0.0~1.0の範囲の赤成分 * @param green 0.0~1.0の範囲の緑成分 * @param blue 0.0~1.0の範囲の青成分 * @param alpha 0.0(透明)~1.0(不透明)のアルファ値。 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdMaterialDiffuse(float red, float green, float blue, float alpha ) @@ -36,13 +38,15 @@ public interface PmdMaterialHandler extends LoopHandler { /** * 材質の反射光成分の通知を受け取る。 + * *

      {@link #MATERIAL_LIST}ループの構成要素。 + * * @param red 0.0~1.0の範囲の赤成分 * @param green 0.0~1.0の範囲の緑成分 * @param blue 0.0~1.0の範囲の青成分 * @param shininess 光沢強度(1~15ぐらい) * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdMaterialSpecular(float red, float green, float blue, float shininess) @@ -50,27 +54,31 @@ public interface PmdMaterialHandler extends LoopHandler { /** * 材質の環境色成分の通知を受け取る。 + * *

      {@link #MATERIAL_LIST}ループの構成要素。 + * * @param red 0.0~1.0の範囲の赤成分 * @param green 0.0~1.0の範囲の緑成分 * @param blue 0.0~1.0の範囲の青成分 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdMaterialAmbient(float red, float green, float blue) throws MmdFormatException; /** * シェーディング情報の通知を受け取る。 + * *

      {@link #MATERIAL_LIST}ループの構成要素。 + * * @param toonIdx トゥーンファイル番号。 - * 0ならtoon01.bmp。9ならtoon10.bmp。0xffならtoon0.bmp。 + * 0ならtoon01.bmp。9ならtoon10.bmp。0xffならtoon0.bmp。 * @param textureFile テクスチャファイル名。 - * 無ければ空文字。 + * 無ければ空文字。 * @param sphereFile スフィアマップファイル名。 - * 無ければ空文字。 + * 無ければ空文字。 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdMaterialShading(int toonIdx, String textureFile, String sphereFile ) @@ -78,15 +86,19 @@ public interface PmdMaterialHandler extends LoopHandler { /** * 材質情報の通知を受け取る。 + * *

      {@link #MATERIAL_LIST}ループの構成要素。 + * * @param hasEdge エッジを表示するならtrue * @param vertexNum 面頂点数。 - * 3の倍数のはず。 - * 3で割ると、材質に属する面の数を表す。 - *

      通算した面数を面情報通知順と突き合わせることにより、 - * 材質に属する面の集合を得ることが可能。 + * 3の倍数のはず。 + * 3で割ると、材質に属する面の数を表す。 + * + *

      通算した面数を面情報通知順と突き合わせることにより、 + * 材質に属する面の集合を得ることが可能。 + * * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 * @see PmdShapeHandler#pmdSurfaceTriangle(int, int, int) */ void pmdMaterialInfo(boolean hasEdge, int vertexNum) diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMorphHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMorphHandler.java index 8e17bd7..acd018b 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMorphHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdMorphHandler.java @@ -27,7 +27,9 @@ public interface PmdMorphHandler extends LoopHandler { /** * モーフ情報の通知を受け取る。 + * *

      {@link #MORPH_LIST}ループの構成要素 + * * @param morphName モーフ名 * @param morphType モーフ種別。 *

        @@ -45,8 +47,11 @@ public interface PmdMorphHandler extends LoopHandler { /** * モーフ形状の通知を受け取る。 + * *

        {@link #MORPH_LIST}ループの下位{@link #MORPHVERTEX_LIST}の構成要素。 + * *

        ※ base型頂点IDの出現順がモーフ頂点IDとなる。 + * * @param serialId base型の場合は頂点ID、それ以外はモーフ頂点ID * @param xPos base型の場合はX座標、それ以外はX軸変位 * @param yPos base型の場合はY座標、それ以外はY軸変位 @@ -60,7 +65,9 @@ public interface PmdMorphHandler extends LoopHandler { /** * 各モーフ種別内のGUI表示順の通知を受け取る。 + * *

        {@link #MORPHORDER_LIST}ループの構成要素 + * * @param morphId モーフ通し番号。同一モーフ種別内の大小関係のみ意味がある。 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParser.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParser.java index fb499b3..cbf6fd7 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParser.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParser.java @@ -11,6 +11,7 @@ import java.io.InputStream; /** * PMDモデルファイルのパーサ最新版。 + * *

        将来のリリースにおいて、 * 常に最新のPMDモデルファイルフォーマットに対応したパーサの * 別名であることが保証される。つもり。 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java index ca41f78..6896871 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java @@ -78,7 +78,9 @@ public class PmdParserBase extends CommonParser { /** * 文字列の最後がLF(0x0a)の場合削除する。 + * *

        ボーングループ名対策。 + * * @param name 文字列 * @return 末尾LFが削除された文字列 */ @@ -185,11 +187,14 @@ public class PmdParserBase extends CommonParser { /** * 指定されたバイト長に収まるゼロ終端(0x00)文字列を読み込む。 + * *

        入力バイト列はwindows-31jエンコーディングとして解釈される。 + * *

        ゼロ終端以降のデータは無視されるが、 * IO入力は指定バイト数だけ読み進められる。 * ゼロ終端が見つからないまま指定バイト数が読み込み終わった場合、 * そこまでのデータから文字列を構成する。 + * * @param byteLen 読み込みバイト数 * @return デコードされた文字列 * @throws IOException IOエラー diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java index 680c83f..568dbe9 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java @@ -14,6 +14,7 @@ import jp.sfjp.mikutoga.pmd.PmdConst; /** * PMDモデルファイルのパーサ拡張その1。 + * *

        ※ 英名対応 */ public class PmdParserExt1 extends PmdParserBase { diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java index 3e9dd3c..5e3d3af 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java @@ -14,6 +14,7 @@ import jp.sfjp.mikutoga.pmd.PmdConst; /** * PMDモデルファイルのパーサ拡張その2。 + * *

        ※ 独自トゥーンテクスチャファイル名対応 */ public class PmdParserExt2 extends PmdParserExt1 { diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java index eb4f6f4..e984e32 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java @@ -14,6 +14,7 @@ import jp.sfjp.mikutoga.pmd.PmdConst; /** * PMDモデルファイルのパーサ拡張その3。 + * *

        ※ 剛体情報対応 */ public class PmdParserExt3 extends PmdParserExt2 { @@ -143,15 +144,15 @@ public class PmdParserExt3 extends PmdParserExt2 { */ private void parseRigidDynamics() throws IOException, MmdFormatException{ - float mass = parseLeFloat(); - float dampingPos = parseLeFloat(); - float dampingRot = parseLeFloat(); - float restitution = parseLeFloat(); - float friction = parseLeFloat(); + float mass = parseLeFloat(); + float dampingPos = parseLeFloat(); + float dampingRot = parseLeFloat(); + float restitution = parseLeFloat(); + float friction = parseLeFloat(); - this.rigidHandler.pmdRigidPhysics( - mass, dampingPos, dampingRot, restitution, friction - ); + this.rigidHandler.pmdRigidPhysics( + mass, dampingPos, dampingRot, restitution, friction + ); return; } @@ -225,7 +226,7 @@ public class PmdParserExt3 extends PmdParserExt2 { posXlim1, posXlim2, posYlim1, posYlim2, posZlim1, posZlim2 - ); + ); float rotXlim1 = parseLeFloat(); float rotYlim1 = parseLeFloat(); @@ -238,7 +239,7 @@ public class PmdParserExt3 extends PmdParserExt2 { rotXlim1, rotXlim2, rotYlim1, rotYlim2, rotZlim1, rotZlim2 - ); + ); return; } @@ -258,7 +259,7 @@ public class PmdParserExt3 extends PmdParserExt2 { elasticPosX, elasticPosY, elasticPosZ - ); + ); float elasticRotX = parseLeFloat(); float elasticRotY = parseLeFloat(); @@ -268,7 +269,7 @@ public class PmdParserExt3 extends PmdParserExt2 { elasticRotX, elasticRotY, elasticRotZ - ); + ); return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdRigidHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdRigidHandler.java index 65fcf8a..eb6e77a 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdRigidHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdRigidHandler.java @@ -13,7 +13,9 @@ import jp.sfjp.mikutoga.bin.parser.ParseStage; /** * PMDモデルの各種剛体情報の通知用ハンドラ。 + * *

        MMDでの剛体力学では「Bullet Physics Library」が用いられる。 + * * @see Bullet Physics Library */ public interface PmdRigidHandler extends LoopHandler { @@ -23,22 +25,26 @@ public interface PmdRigidHandler extends LoopHandler { /** * 剛体名の通知を受け取る。 + * *

        {@link #RIGID_LIST}ループの構成要素。 + * * @param rigidName 剛体名 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidName(String rigidName) throws MmdFormatException; /** * 剛体基本情報の通知を受け取る。 + * *

        {@link #RIGID_LIST}ループの構成要素。 + * * @param rigidGroupId 剛体グループ番号から1引いた数。(0-15) * @param linkedBoneId 接続先ボーンID。 - * [ 0x0000 - 0xfffe ] に収まらない場合は接続先ボーン無し。 + * [ 0x0000 - 0xfffe ] に収まらない場合は接続先ボーン無し。 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidInfo(int rigidGroupId, int linkedBoneId) @@ -46,7 +52,9 @@ public interface PmdRigidHandler extends LoopHandler { /** * 剛体形状の通知を受け取る。 + * *

        {@link #RIGID_LIST}ループの構成要素。 + * * @param shapeType 形状種別。 *

          *
        • 0x00:球 @@ -57,7 +65,7 @@ public interface PmdRigidHandler extends LoopHandler { * @param height ç®±orカプセルの高さ * @param depth 箱の奥行き * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidShape(byte shapeType, float width, float height, float depth) @@ -65,38 +73,44 @@ public interface PmdRigidHandler extends LoopHandler { /** * 剛体位置の通知を受け取る。 + * *

          {@link #RIGID_LIST}ループの構成要素。 + * * @param posX X座標 * @param posY Y座標 * @param posZ Z座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidPosition(float posX, float posY, float posZ) throws MmdFormatException; /** * 剛体姿勢の通知を受け取る。 + * *

          {@link #RIGID_LIST}ループの構成要素。 + * * @param radX X軸回転量(radian) * @param radY Y軸回転量(radian) * @param radZ Z軸回転量(radian) * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidRotation(float radX, float radY, float radZ) throws MmdFormatException; /** * 剛体物理系数の通知を受け取る。 + * *

          {@link #RIGID_LIST}ループの構成要素。 + * * @param mass 質量 * @param dampingPos 移動減衰率 * @param dampingRot 回転減衰率 * @param restitution 反発力 * @param friction 摩擦力 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidPhysics(float mass, float dampingPos, float dampingRot, @@ -105,7 +119,9 @@ public interface PmdRigidHandler extends LoopHandler { /** * 剛体の振る舞い情報の通知を受け取る。 + * *

          {@link #RIGID_LIST}ループの構成要素。 + * * @param behaveType 剛体タイプ。 *

            *
          • 0:ボーン追従 @@ -113,12 +129,11 @@ public interface PmdRigidHandler extends LoopHandler { *
          • 2:物理演算+ボーン位置合わせ *
          * @param collisionMap 非衝突剛体グループビットマップ。 - *

          - * (衝突グループ番号-1)位置のビット位置は1に、 - * (非衝突グループ番号-1)位置のビット位置は0になる。 - * 例)グループ1と8のみが非衝突指定の場合、0xff7eになる。 + *

          (衝突グループ番号-1)位置のビット位置は1に、 + * (非衝突グループ番号-1)位置のビット位置は0になる。 + * 例)グループ1と8のみが非衝突指定の場合、0xff7eになる。 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void pmdRigidBehavior(byte behaveType, short collisionMap) throws MmdFormatException; diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdShapeHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdShapeHandler.java index 21d0bf6..881ed28 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdShapeHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdShapeHandler.java @@ -13,7 +13,9 @@ import jp.sfjp.mikutoga.bin.parser.ParseStage; /** * PMDモデルの各種形状(頂点、面)の通知用ハンドラ。 + * *

          0から始まる頂点ID順に頂点は出現する。 + * *

          0から始まる面ID順に面は出現する。 */ public interface PmdShapeHandler extends LoopHandler { @@ -25,7 +27,9 @@ public interface PmdShapeHandler extends LoopHandler { /** * 頂点の座標の通知を受け取る。 + * *

          {@link #VERTEX_LIST}ループの構成要素 + * * @param xPos X座標 * @param yPos Y座標 * @param zPos Z座標 @@ -37,8 +41,11 @@ public interface PmdShapeHandler extends LoopHandler { /** * 頂点の法線情報の通知を受け取る。 + * *

          {@link #VERTEX_LIST}ループの構成要素 + * *

          ※単位ベクトル化必須? + * * @param xVec 法線ベクトルX成分 * @param yVec 法線ベクトルY成分 * @param zVec 法線ベクトルZ成分 @@ -51,7 +58,9 @@ public interface PmdShapeHandler extends LoopHandler { /** * 頂点のUVマッピング情報の通知を受け取る。 * (頂点UV) + * *

          {@link #VERTEX_LIST}ループの構成要素 + * * @param uVal テクスチャのU座標 * @param vVal テクスチャのV座標 * @throws MmdFormatException 不正フォーマットによる @@ -62,7 +71,9 @@ public interface PmdShapeHandler extends LoopHandler { /** * 頂点のボーン間ウェイトバランス情報の通知を受け取る。 + * *

          {@link #VERTEX_LIST}ループの構成要素 + * * @param boneId1 ボーンその1識別ID * @param boneId2 ボーンその2識別ID * @param weightForB1 ボーンその1への影響度。0(min)~100(max) @@ -76,7 +87,9 @@ public interface PmdShapeHandler extends LoopHandler { /** * 頂点のエッジ表現情報の通知を受け取る。 * 材質単位でのエッジ表現指定に優先される。 + * *

          {@link #VERTEX_LIST}ループの構成要素 + * * @param hideEdge エッジ無効ならtrue * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -86,8 +99,11 @@ public interface PmdShapeHandler extends LoopHandler { /** * 3つの頂点から構成される面情報の通知を受け取る。 + * *

          {@link #SURFACE_LIST}ループの構成要素。 + * *

          3頂点の指定順は、面カリングにおいて意味を持つ。 + * * @param vertexId1 頂点IDその1 * @param vertexId2 頂点IDその1 * @param vertexId3 頂点IDその1 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdToonHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdToonHandler.java index dddec4f..b24d0e5 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdToonHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdToonHandler.java @@ -21,7 +21,9 @@ public interface PmdToonHandler extends LoopHandler { /** * 独自トゥーンテクスチャファイル名の通知を受け取る。 + * *

          {@link #TOON_LIST}ループの構成要素 + * * @param toonName 独自トゥーンテクスチャファイル名 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/package-info.java index 1585488..9d0418d 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/package-info.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/package-info.java @@ -7,6 +7,7 @@ /** * PMDモデルファイル(*.pmd)用パーサライブラリ。 + * *

          コールバックインタフェースを実装したオブジェクトをパーサに渡し、 * PMDモデルファイルのパースを開始すると、 * 各種データの出現に応じてコールバックメソッドを次々と呼び出してくれる。 diff --git a/src/main/java/jp/sfjp/mikutoga/typical/AliasMap.java b/src/main/java/jp/sfjp/mikutoga/typical/AliasMap.java index bd33ba7..9e1dfa9 100644 --- a/src/main/java/jp/sfjp/mikutoga/typical/AliasMap.java +++ b/src/main/java/jp/sfjp/mikutoga/typical/AliasMap.java @@ -41,11 +41,13 @@ class AliasMap { /** * NFKC正規化されたUnicode文字列を返す。 + * *

          等価な全半角、濁点、丸付き数字などの表現の正規化を目的とする。 *

            *
          • 「ボーン」は「ボーン」になる *
          • 「ホ゛ーン9」は「ボーン9」になる *
          + * * @param name 正規化対象文字列 * @return 正規化済み文字列 */ @@ -58,9 +60,12 @@ class AliasMap { /** * 別名管理オブジェクトを登録。 + * *

          キーとなる名前は、事前にNFKC正規化で * 揺らぎ表記が吸収されたプライマリ名およびグローバル名。 + * *

          登録キーが衝突した時は後の方が有効となる。 + * * @param alias 別名管理オブジェクト */ void addAlias(T alias){ @@ -71,8 +76,11 @@ class AliasMap { /** * 別名管理オブジェクトと正規化プライマリ名を対応づける。 + * *

          事前にNFKC正規化されたプライマリ名が登録キーとなる。 + * *

          登録キーが衝突した時は後の方が有効となる。 + * * @param alias 別名管理オブジェクト */ private void addPrimary(T alias){ @@ -86,8 +94,11 @@ class AliasMap { /** * 別名管理オブジェクトと正規化グローバル名を対応づける。 + * *

          事前にNFKC正規化されたグローバル名が登録キーとなる。 + * *

          登録キーが衝突した時は後の方が有効となる。 + * * @param alias 別名管理オブジェクト */ private void addGlobal(T alias){ @@ -101,8 +112,11 @@ class AliasMap { /** * 名前から別名管理オブジェクトを得る。 + * *

          プライマリ名、グローバル名の順で検索される。 + * *

          名前は事前にNFKC正規化された後、検索キーとなる。 + * * @param name 名前 * @return 別名管理オブジェクト。見つからなければnull */ @@ -117,7 +131,9 @@ class AliasMap { /** * プライマリ名から別名管理オブジェクトを得る。 + * *

          プライマリ名は事前にNFKC正規化された後、検索キーとなる。 + * * @param primaryName プライマリ名 * @return 別名管理オブジェクト。見つからなければnull */ @@ -129,7 +145,9 @@ class AliasMap { /** * グローバル名から別名管理オブジェクトを得る。 + * *

          グローバル名は事前にNFKC正規化された後、検索キーとなる。 + * * @param globalName グローバル名 * @return 別名管理オブジェクト。見つからなければnull */ @@ -141,7 +159,9 @@ class AliasMap { /** * プライマリ名から代表グローバル名を得る。 + * *

          プライマリ名は事前にNFKC正規化された後、検索キーとなる。 + * * @param primaryName プライマリ名 * @return 代表グローバル名。見つからなければnull */ @@ -154,11 +174,13 @@ class AliasMap { /** * グローバル名から代表プライマリ名を得る。 + * *

          グローバル名は事前にNFKC正規化された後、検索キーとなる。 + * * @param globalName グローバル名 * @return 代表プライマリ名。見つからなければnull */ - String global2primary(String globalName){ + String global2primary(String globalName){ T alias = getAliasByGlobal(globalName); if(alias == null) return null; String primary = alias.getTopPrimaryName(); diff --git a/src/main/java/jp/sfjp/mikutoga/typical/I18nAlias.java b/src/main/java/jp/sfjp/mikutoga/typical/I18nAlias.java index e6e8c29..f6b558d 100644 --- a/src/main/java/jp/sfjp/mikutoga/typical/I18nAlias.java +++ b/src/main/java/jp/sfjp/mikutoga/typical/I18nAlias.java @@ -23,13 +23,17 @@ import org.xml.sax.SAXException; /** * 国際化&別名管理オブジェクトの実装基板。 + * *

          別名管理オブジェクトは、 * 各々のリストの先頭が代表名となる、 * プライマリ名の不変リストとグローバル名の不変リストを持つ。 + * *

          国産モデルではプライマリ名に日本語名が収められることが多い。 * プライマリ名は必ず一つ以上なければならない。 + * *

          国産モデルではグローバル名に英語名が収められることが多いが、 * プライマリ名と同一の日本語名が収められている場合も多い。 + * *

          別名管理オブジェクトは、 * インスタンス間での順序を定義するためのオーダー番号を持つ。 */ @@ -51,8 +55,10 @@ class I18nAlias { /** * コンストラクタ。 + * *

          各初期数が0以下の場合は、 * 状況に応じて伸長する連結リストが用意される。 + * * @param primaryNum プライマリ名初期数。 * @param globalNum グローバル名初期数。 */ @@ -81,6 +87,7 @@ class I18nAlias { /** * コンストラクタ。 + * *

          プライマリ名、グローバル名共、 * 状況に応じて伸長する連結リストが用意される。 */ @@ -131,7 +138,9 @@ class I18nAlias { /** * プライマリ名の代表をひとつ返す。 + * *

          必ず存在しなければならない。 + * * @return 最初のプライマリ名 */ public String getTopPrimaryName(){ diff --git a/src/main/java/jp/sfjp/mikutoga/typical/TypicalBone.java b/src/main/java/jp/sfjp/mikutoga/typical/TypicalBone.java index d97a752..46e433c 100644 --- a/src/main/java/jp/sfjp/mikutoga/typical/TypicalBone.java +++ b/src/main/java/jp/sfjp/mikutoga/typical/TypicalBone.java @@ -19,9 +19,12 @@ import org.xml.sax.SAXException; /** * 一般的な標準ボーン構成に関する情報。 + * *

          各ボーン情報はひとつ以上のプライマリ名(≒日本語名)と * ゼロ個以上のグローバル名(≒英語名)を持つ。 + * *

          選択基準は独断。 + * *

          和英対訳はMMD Ver7.39の同梱モデルにほぼ準拠。 */ public final class TypicalBone extends I18nAlias { @@ -68,8 +71,10 @@ public final class TypicalBone extends I18nAlias { /** * コンストラクタ。 + * *

          各初期数が0以下の場合は、 * 状況に応じて伸長する連結リストが用意される。 + * * @param primaryNum プライマリ名初期数。 * @param globalNum グローバル名初期数。 */ @@ -136,6 +141,7 @@ public final class TypicalBone extends I18nAlias { /** * 全ボーン情報に通し番号を付ける。 + * *

          XMLでの定義順が反映される。 */ private static void numbering(){ @@ -201,7 +207,9 @@ public final class TypicalBone extends I18nAlias { /** * このボーンが親を持たないルートボーンとして扱われる慣習なのか * 判定する。 + * *

          ※「全親」ボーンに関する慣習は無視される。 + * * @return 親を持たなければtrue */ public boolean isRoot(){ diff --git a/src/main/java/jp/sfjp/mikutoga/typical/TypicalMorph.java b/src/main/java/jp/sfjp/mikutoga/typical/TypicalMorph.java index 2581ac3..7c5c438 100644 --- a/src/main/java/jp/sfjp/mikutoga/typical/TypicalMorph.java +++ b/src/main/java/jp/sfjp/mikutoga/typical/TypicalMorph.java @@ -23,9 +23,12 @@ import org.xml.sax.SAXException; /** * 一般的な標準モーフに関する情報。 + * *

          各モーフ情報はひとつ以上のプライマリ名(≒日本語名)と * ゼロ個以上のグローバル名(≒英語名)を持つ。 + * *

          選択基準は独断。 + * *

          和英対訳はMMD Ver7.39の同梱モデルにほぼ準拠。 */ public final class TypicalMorph extends I18nAlias { @@ -74,8 +77,10 @@ public final class TypicalMorph extends I18nAlias { /** * コンストラクタ。 + * *

          各初期数が0以下の場合は、 * 状況に応じて伸長する連結リストが用意される。 + * * @param type モーフ種別 * @param primaryNum プライマリ名初期数。 * @param globalNum グローバル名初期数。 @@ -173,6 +178,7 @@ public final class TypicalMorph extends I18nAlias { /** * 全モーフ情報に通し番号を付ける。 + * *

          同一グループ内ではXMLでの定義順が反映される。 */ private static void numbering(){ diff --git a/src/main/java/jp/sfjp/mikutoga/typical/UniqBone.java b/src/main/java/jp/sfjp/mikutoga/typical/UniqBone.java index af171c5..3328e8c 100644 --- a/src/main/java/jp/sfjp/mikutoga/typical/UniqBone.java +++ b/src/main/java/jp/sfjp/mikutoga/typical/UniqBone.java @@ -39,13 +39,16 @@ public final class UniqBone { /** * IK演算時の回転方向に制限を受ける「ひざボーン」か否か、 * ボーン名で判定する。 + * *

          ボーンのプライマリ名が「左ひざ」もしくは「右ひざ」で始まれば * ひざボーンとする。 + * *

          ひざボーン名の例 *

            *
          • 「左ひざ」 *
          • 「左ひざげり」 *
          + * *

          ひざボーン名ではない例 *

            *
          • 「左ひ」 @@ -57,6 +60,7 @@ public final class UniqBone { *
          • 「左膝」 *
          • 「Knee_L」 *
          + * * @param boneNameJp プライマリボーン名 * @return ひざボーンならtrue */ diff --git a/src/main/java/jp/sfjp/mikutoga/typical/package-info.java b/src/main/java/jp/sfjp/mikutoga/typical/package-info.java index 128bf08..156d617 100644 --- a/src/main/java/jp/sfjp/mikutoga/typical/package-info.java +++ b/src/main/java/jp/sfjp/mikutoga/typical/package-info.java @@ -7,7 +7,9 @@ /** * MMDコミュニティにおける一般的な慣例に関する情報を提供する。 + * *

          例)ボーン名やモーフ名の一般的な名前、対訳など + * *

          MikuMikuDance Ver.7.39同梱のモデルなどが主な情報源。 */ diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/VmdConst.java b/src/main/java/jp/sfjp/mikutoga/vmd/VmdConst.java index 076d309..7af1e03 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/VmdConst.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/VmdConst.java @@ -39,7 +39,9 @@ public final class VmdConst { /** * IK ON/OFFスイッチ用ボーン名最大長。バイト単位。 + * *

          ※MikuMikuDance Ver7.40からの機能。 + * *

          モーション指定用ボーン名と長さが違うので注意。 */ public static final int IKSWBONENAME_MAX = 20; diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/VmdUniq.java b/src/main/java/jp/sfjp/mikutoga/vmd/VmdUniq.java index 44faede..4659fd8 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/VmdUniq.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/VmdUniq.java @@ -52,9 +52,11 @@ public final class VmdUniq { /** * カメラやライティングなどのステージ演出データの可能性があるか、 * モデル名から推測する。 + * *

          モデル名が「カメラ・照明」である場合、 * そのモーションファイルはほぼ * カメラ・ライティング用ステージ演出データであると推測される。 + * * @param modelName モデル名 * @return モデル名にカメラもしくはライティングの可能性があるならtrue */ diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicHandler.java b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicHandler.java index 08b8ba0..6915fad 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicHandler.java @@ -14,14 +14,18 @@ import jp.sfjp.mikutoga.bin.parser.ParseStage; /** * VMDモーションファイルの基本情報(ボーンモーション/モーフモーション) * の通知用ハンドラ。 + * *

          フレーム番号は相対的なものとなる。 * 一番若いモーションのフレーム番号が0となる模様。 + * *

          位置情報の座標基準は左手系ワールド座標で表される。 + * *

          モーション補間情報は三次ベジェ曲線により記述される。 * 三次ベジェ曲線は4つの制御点P0,P1,P2,P3により定義される。 * P0は(0,0)、P3は(127,127)で固定。 * P1,P2はP0,P3を対角線とする正方形の内部になければならない。 * 直線補間の場合、P1には(20,20)、P2には(107,107)が使われることが多い。 + * *

          補間情報は直後のボーンモーション情報との差分に関するもの。 */ public interface VmdBasicHandler extends LoopHandler { @@ -63,8 +67,10 @@ public interface VmdBasicHandler extends LoopHandler { /** * モーションの適用先モデル名に関する情報を通知する。 + * *

          カメラやライティングなどの演出データには * 特殊なモデル名が使われる。 + * * @param modelName モデル名 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -74,7 +80,9 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーンモーションのボーン名及びキーフレーム番号に関する情報を通知する。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * * @param boneName ボーン名 * @param keyFrameNo キーフレーム番号 * @throws MmdFormatException 不正フォーマットによる @@ -85,8 +93,11 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーン移動モーション情報の通知を受け取る。 + * *

          座標基準は親ボーンもしくはワールド座標。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * * @param xPos X座標 * @param yPos Y座標 * @param zPos Z座標 @@ -98,11 +109,16 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーン回転モーション情報の通知を受け取る。 + * *

          回転及び姿勢はクォータニオンによって記述される。 * MMDUI上のボーン数値入力YXZオイラー角と等価な回転。 + * *

          座標基準は親ボーンもしくはワールド座標。 + * *

          ※ボーン種別によっては、無意味な情報。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * * @param qx クォータニオン虚部 X * @param qy クォータニオン虚部 Y * @param qz クォータニオン虚部 Z @@ -115,8 +131,11 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーンモーションX軸移動補間情報の通知を受け取る。 + * *

          三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * * @param xP1x P1点のX座標 * @param xP1y P1点のY座標 * @param xP2x P2点のX座標 @@ -129,8 +148,11 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーンモーションY軸移動補間情報の通知を受け取る。 + * *

          三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * * @param yP1x P1点のX座標 * @param yP1y P1点のY座標 * @param yP2x P2点のX座標 @@ -143,8 +165,11 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーンモーションZ軸移動補間情報の通知を受け取る。 + * *

          三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * * @param zP1x P1点のX座標 * @param zP1y P1点のY座標 * @param zP2x P2点のX座標 @@ -157,9 +182,13 @@ public interface VmdBasicHandler extends LoopHandler { /** * ボーンモーション回転量補間情報の通知を受け取る。 + * *

          三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #BONEMOTION_LIST}ループの構成要素。 + * *

          クォータニオン間のslerp処理に利用される。 + * * @param rP1x P1点のX座標 * @param rP1y P1点のY座標 * @param rP2x P2点のX座標 @@ -173,7 +202,9 @@ public interface VmdBasicHandler extends LoopHandler { /** * モーフモーション情報の通知を受け取る。 + * *

          {@link #MORPH_LIST}ループの構成要素。 + * * @param morphName モーフ名。特殊モーフ名「base」は無視してもよい? * @param keyFrameNo フレーム番号 * @param flex モーフ変量。通常は0.0以上1.0以下。 diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicParser.java b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicParser.java index 5316461..31fe622 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicParser.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBasicParser.java @@ -19,6 +19,7 @@ import jp.sfjp.mikutoga.vmd.VmdUniq; /** * VMDモーションファイルの基本部パーサ。 + * *

          ボーンのモーション情報およびモーフモーション情報のパース処理を含む。 */ class VmdBasicParser extends ProxyParser{ @@ -256,7 +257,9 @@ class VmdBasicParser extends ProxyParser{ /** * 補間情報の冗長箇所の整合性チェックを行う。 + * *

          ※ MMDの版数によって微妙に詳細が異なる場合がある。 + * * @throws MmdFormatException 冗長箇所の不整合を検出した。 */ private void checkIntpltStrict() throws MmdFormatException{ diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolHandler.java b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolHandler.java index c5af766..d4b9c06 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolHandler.java @@ -14,6 +14,7 @@ import jp.sfjp.mikutoga.bin.parser.ParseStage; /** * VMDモーションファイルの各種ON/OFF情報(モデル表示・IK有効無効) * の通知用ハンドラ。 + * *

          MikuMikuDance Ver7.40よりVMDファイルに導入された新仕様。 */ public interface VmdBoolHandler extends LoopHandler { @@ -27,7 +28,9 @@ public interface VmdBoolHandler extends LoopHandler { /** * モデルの表示フラグを通知する。 + * *

          {@link #MODELSIGHT_LIST}ループの構成要素。 + * * @param show モデルの表示が行われる場合true * @param keyFrameNo キーフレーム番号 * @throws MmdFormatException 不正フォーマットによる @@ -38,8 +41,10 @@ public interface VmdBoolHandler extends LoopHandler { /** * IKボーン別のIK処理のON/OFFを通知する。 + * *

          {@link #MODELSIGHT_LIST}ループの下位 * {@link #IKSW_LIST}ループの構成要素。 + * * @param boneName IKボーン名 * @param validIk IK処理が無効になる場合false * @param keyFrameNo キーフレーム番号 diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolParser.java b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolParser.java index daffc6d..041439c 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolParser.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdBoolParser.java @@ -17,6 +17,7 @@ import jp.sfjp.mikutoga.vmd.VmdConst; /** * VMDモーションファイルの各種ON/OFF情報(モデル表示・IK有効無効) * パーサ。 + * *

          MikuMikuDance Ver7.40以降でサポート */ class VmdBoolParser extends ProxyParser { diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdCameraHandler.java b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdCameraHandler.java index 7fbef1f..14f24e5 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdCameraHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdCameraHandler.java @@ -13,12 +13,17 @@ import jp.sfjp.mikutoga.bin.parser.ParseStage; /** * VMDモーションファイルのカメラワーク情報の通知用ハンドラ。 + * *

          フレーム番号は相対的なものとなる。 * カメラ・照明・シャドウのうち * 一番若いモーションのフレーム番号が0となる模様。 + * *

          ターゲット位置、カメラ回転量とも、座標基準はワールド座標。 + * *

          カメラターゲットの座標は左手系で表される。 + * *

          ターゲットに対するカメラ位置は極座標で表される。 + * *

          補間情報は直前カメラ情報との差分に関するもの。 */ public interface VmdCameraHandler extends LoopHandler { @@ -29,73 +34,96 @@ public interface VmdCameraHandler extends LoopHandler { /** * カメラモーションのキーフレーム番号に関する情報を通知する。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param keyFrameNo キーフレーム番号 - * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * @throws MmdFormatException + * 不正フォーマットによるパース処理の中断をパーサに指示 */ void vmdCameraMotion(int keyFrameNo) throws MmdFormatException; /** * ターゲットとカメラ間の距離情報を通知する。 + * *

          球座標(極座標)の動径に相当する。 * 通常はターゲットより手前に位置するカメラまでの距離が負の値で渡される。 + * *

          カメラ位置がターゲットを突き抜けた場合は正の値もとりうる。 * ※MMDのUIと符号が逆なので注意。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param range 距離 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraRange(float range) throws MmdFormatException; /** * カメラのターゲット位置情報を通知する。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param xPos ターゲットのX座標 * @param yPos ターゲットのY座標 * @param zPos ターゲットのZ座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraPosition(float xPos, float yPos, float zPos) throws MmdFormatException; /** * カメラの回転および回転量情報を通知する。 + * *

          極座標(球座標)が用いられる。 + * *

          180度を超える値も回転量として意味を持つ。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param latitude ターゲットから見たカメラの仰俯角(≒緯度)。 - * 単位はラジアン。 - *

          Y軸回転量が0の時のZ正軸がY正軸へ倒れる方向が正回転。 - * (MMDのUIとは符号が逆になるので注意) - *

          仰俯角が0の場合、 - * カメラはターゲットに対しXZ平面(水平)と平行な箇所に位置する。 + * 単位はラジアン。 + * + *

          Y軸回転量が0の時のZ正軸がY正軸へ倒れる方向が正回転。 + * (MMDのUIとは符号が逆になるので注意) + * + *

          仰俯角が0の場合、 + * カメラはターゲットに対しXZ平面(水平)と平行な箇所に位置する。 + * * @param longitude Y軸周りの回転量(≒経度)。単位はラジアン。 - *

          X正軸がZ正軸へ倒れる方向が正回転。(ボーン回転と逆) - *

          仰俯角およびY軸回転量が0の場合、 - * カメラレンズはZ軸-∞方向からZ軸+∞方向を向く。 + * + *

          X正軸がZ正軸へ倒れる方向が正回転。(ボーン回転と逆) + * + *

          仰俯角およびY軸回転量が0の場合、 + * カメラレンズはZ軸-∞方向からZ軸+∞方向を向く。 + * * @param roll レンズをターゲットを向けたカメラのロール回転量。 - *

          仰俯角とY軸回転量が0の時にY正軸がX正軸に倒れる方向が正回転。 - *

          仰俯角およびロール回転量が0の場合、カメラ上部はY軸+∞の方を向く。 + * + *

          仰俯角とY軸回転量が0の時にY正軸がX正軸に倒れる方向が正回転。 + * + *

          仰俯角およびロール回転量が0の場合、カメラ上部はY軸+∞の方を向く。 + * * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraRotation(float latitude, float longitude, float roll) throws MmdFormatException; /** * カメラを通じたスクリーン座標への投影に関する情報を通知する。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param angle 縦画角。単位は度数法。MMDのUIでは1から125が指定可能。 * @param hasPerspective パースペクティブスイッチがONならtrue。 - * スイッチがOFFの場合、画角は無視され遠近感処理が行われなくなる。 - * (平行投影?) + * スイッチがOFFの場合、画角は無視され遠近感処理が行われなくなる。 + * (平行投影?) * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraProjection(int angle, boolean hasPerspective) throws MmdFormatException; @@ -103,13 +131,15 @@ public interface VmdCameraHandler extends LoopHandler { /** * カメラターゲットX軸移動補間情報の通知を受け取る。 * 三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param p1x P1点のX座標 * @param p1y P1点のY座標 * @param p2x P2点のX座標 * @param p2y P2点のY座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraIntpltXpos(byte p1x, byte p1y, byte p2x, byte p2y) throws MmdFormatException; @@ -117,13 +147,15 @@ public interface VmdCameraHandler extends LoopHandler { /** * カメラターゲットY軸移動補間情報の通知を受け取る。 * 三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param p1x P1点のX座標 * @param p1y P1点のY座標 * @param p2x P2点のX座標 * @param p2y P2点のY座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraIntpltYpos(byte p1x, byte p1y, byte p2x, byte p2y) throws MmdFormatException; @@ -131,13 +163,15 @@ public interface VmdCameraHandler extends LoopHandler { /** * カメラターゲットZ軸移動補間情報の通知を受け取る。 * 三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param p1x P1点のX座標 * @param p1y P1点のY座標 * @param p2x P2点のX座標 * @param p2y P2点のY座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraIntpltZpos(byte p1x, byte p1y, byte p2x, byte p2y) throws MmdFormatException; @@ -145,14 +179,17 @@ public interface VmdCameraHandler extends LoopHandler { /** * カメラ回転量補間情報の通知を受け取る。 * 三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * *

          カメラ回転でクォータニオン補間は使われない。 + * * @param p1x P1点のX座標 * @param p1y P1点のY座標 * @param p2x P2点のX座標 * @param p2y P2点のY座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraIntpltRotation(byte p1x, byte p1y, byte p2x, byte p2y) throws MmdFormatException; @@ -160,13 +197,15 @@ public interface VmdCameraHandler extends LoopHandler { /** * カメラ-ターゲット間距離補間情報の通知を受け取る。 * 三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param p1x P1点のX座標 * @param p1y P1点のY座標 * @param p2x P2点のX座標 * @param p2y P2点のY座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraIntpltRange(byte p1x, byte p1y, byte p2x, byte p2y) throws MmdFormatException; @@ -174,13 +213,15 @@ public interface VmdCameraHandler extends LoopHandler { /** * スクリーン投影補間情報の通知を受け取る。 * 三次ベジェ曲線のP1,P2点に関する情報を受け取る。 + * *

          {@link #CAMERA_LIST}ループの構成要素。 + * * @param p1x P1点のX座標 * @param p1y P1点のY座標 * @param p2x P2点のX座標 * @param p2y P2点のY座標 * @throws MmdFormatException 不正フォーマットによる - * パース処理の中断をパーサに指示 + * パース処理の中断をパーサに指示 */ void vmdCameraIntpltProjection(byte p1x, byte p1y, byte p2x, byte p2y) throws MmdFormatException; diff --git a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdLightingHandler.java b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdLightingHandler.java index 065be3a..adf7f20 100644 --- a/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdLightingHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/vmd/parser/VmdLightingHandler.java @@ -14,6 +14,7 @@ import jp.sfjp.mikutoga.bin.parser.ParseStage; /** * VMDモーションファイルのライティング情報(照明光源・セルフシャドウ) * の通知用ハンドラ。 + * *

          フレーム番号は相対的なものとなる。 * カメラ・照明・シャドウのうち * 一番若いモーションのフレーム番号が0となる模様。 @@ -29,7 +30,9 @@ public interface VmdLightingHandler extends LoopHandler { /** * 照明情報のキーフレーム番号に関する情報を通知する。 + * *

          {@link #LUMINOUS_LIST}ループの構成要素。 + * * @param keyFrameNo キーフレーム番号 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -39,7 +42,9 @@ public interface VmdLightingHandler extends LoopHandler { /** * 光源の色情報を通知する。 + * *

          色情報はRGB色空間で記述される。 + * *

          MMDのUI上の各色成分指定0~255定義域に便宜上256を追加したものが、 * 0.0以上1.0以下にマップされる。 *

            @@ -47,7 +52,9 @@ public interface VmdLightingHandler extends LoopHandler { *
          • 128は正しく0.5にマップされる。 *
          • 255は1.0より少しだけ小さい数にマップされる。 *
          + * *

          {@link #LUMINOUS_LIST}ループの構成要素。 + * * @param rVal 赤成分(0.0以上1.0以下) * @param gVal 緑成分(0.0以上1.0以下) * @param bVal 青成分(0.0以上1.0以下) @@ -59,15 +66,21 @@ public interface VmdLightingHandler extends LoopHandler { /** * 光源の方向情報を通知する。 + * *

          照明方向は、 * ワールド座標原点から伸びる方向ベクトルとして記述される。 * この方向ベクトルに向けて、無限遠の光源から照明が当たる。 + * *

          MMDのスライダUI上では各軸成分の定義域は-1.0以上+1.0以下だが、 * さらに絶対値の大きな値を指定することも可能。 + * *

          方向ベクトルの長さは演出上の意味を持たないが、 * キーフレーム間の照明方向の補間に影響を及ぼすかもしれない。 + * *

          方向ベクトルが零ベクトル(0,0,0)の場合、全ポリゴンに影が落ちる。 + * *

          {@link #LUMINOUS_LIST}ループの構成要素。 + * * @param xVec 方向ベクトルX軸成分 * @param yVec 方向ベクトルY軸成分 * @param zVec 方向ベクトルZ軸成分 @@ -79,7 +92,9 @@ public interface VmdLightingHandler extends LoopHandler { /** * シャドウ演出情報のキーフレーム番号に関する情報を通知する。 + * *

          {@link #SHADOW_LIST}ループの構成要素。 + * * @param keyFrameNo キーフレーム番号 * @throws MmdFormatException 不正フォーマットによる * パース処理の中断をパーサに指示 @@ -89,7 +104,9 @@ public interface VmdLightingHandler extends LoopHandler { /** * セルフシャドウモードを通知する。 + * *

          {@link #SHADOW_LIST}ループの構成要素。 + * * @param shadowMode シャドウモード指定。 *