------------------------------------------------------------------------
    ３次元ポリゴンアニメーションキット                          11/28/99

                   サンプルファイル解説

               Copyright (c) Jun Mizutani  1996-1999

------------------------------------------------------------------------


      J3Wに同梱されているサンプルファイルの簡単な紹介です．
      プログラムの詳細は *.j3c, *.J3S 中に詳細なコメントがありますので
      参照してください．
      *.J3Dファイルはアセンブル済み実行用ファイルです．
      *.J3Iはインクルードファイルです．

     【注】Unix版ではファイル名はすべて小文字にしています．

     サンプルソースは自由に使用して頂いてかまいません．
     面白いものができたら公開して頂けると幸いです．

---------------------------------------------------------------------------
実行形式オブジェクトファイル
---------------------------------------------------------------------------

    flight.j3d     フライトシミュレータ
    pose.j3d       人体モデルアニメーション
    frame_2.dat    人体モデルアニメーションのデータ
    frame_3.dat    人体モデルアニメーションのデータ 走る人間
    human2.j3d     走る二人の人間のサンプル
    color.j3d      色見本
    cube.j3d       まわる立方体
    line.j3d       直線のサンプル
    manual2.j3d    マニュアルに記載のサンプル
    multiprc.j3d   マルチプロセスのテスト
    testcalc.j3d   計算
    hand.j3d       左手がニギニギします．objview.j3sにリンクして作成
    falcon.j3d     objviewで作成したF-16
    ball.j3d       objviewで作成した
    taco.j3d       objviewで作成したタコ
    tubo.j3d       objview(j3c版)で作成した回る壷

    J3Wから実行できます．


---------------------------------------------------------------------------
J3C のソース  j3c_scriptディレクトリ 以下
---------------------------------------------------------------------------

FLIGHT ディレクトリ

    FLIGHT.J3C     フライトシミュレータソース mainクラス
    FALCON02.J3C   main に継承される自機の形状クラス
    F_SCENE.J3C    風景を構成するクラス群
    AIRSHIP.J3C    飛行船の形状クラス
    F_ENEMY.J3C    飛行船を継承した敵機クラス
    F_CAMER.J3C    視点クラス
    WINDGEN.J3C    風力発電所の形状クラス
    F_CANON.J3C    弾のプロセス
    F_GLOBAL.J3C   グローバルに使用する定数，関数
    F_DISP.J3C     グラフィック画面への文字出力

    j3w_script/flight を J3Cに移植したソース．空間内に存在するすべての
    物体はクラスのインスタンスとして存在している．j3w_script/flightより
    改造が楽と思います．


LIB ディレクトリ

    EMPTY.J3C      何もしない空のクラス
    SSOLID.J3C     単純な形状を生成 library
    ZSOLID.J3C     Z軸方向に伸びる形状生成 library
    XSOLID.J3C     X軸方向に伸びる形状生成 library
    KEY.J3C        キーコード名定義 library
    COLOR.J3C      色名の定義 library
    EYE.J3C        視点クラス
    ESCKEY.J3C     ESCキー終了チェッククラス
    REVOLUTN.J3C   回転体生成クラス
    FPS_POS.J3C    表示速度計算クラス

    flight, objview中で継承されているクラス定義，ライブラリ定義など．
    クラス定義は継承，再定義してカスタマイズして使用します．


OBJVIEW ディレクトリ

    OBJVIEW.J3C    オブジェクトビューアメインクラス
    MODEL.J3C      形状指定用のクラス
    FALCON02.J3C   F-16クラス
    TACO.J3C       スキンと拡大縮小を使用した例（タコクラス）
    LHAND.J3C      左手クラス
    WEED.J3C       海草クラス
    BODY.J3C       J3WのPOSEで使用した人体を移植したクラス
    TUBO.J3C       回転体で作成した壷クラス

    j3w_script/objview と機能的に同等なJ3Cによるプログラム．
    taco.j3c は複雑なクラス継承と物体の階層構造の例となっています．
    表示する物体のクラス定義を model.j3c の modelクラスが継承，
    カスタマイズすることで種々の物体を表示するアプリケーションが
    作成できます．別のアプリケーションで使用する物体のテストに使用
    します．


TUTORIAL ディレクトリ

    LIST_1.J3C 〜 LIST_15.J3C
    j3ctutor.html中のリスト

TEST ディレクトリ

    bcolor.j3c     背景色の変更のテスト
    hsort.j3c      ヒープソートによるベンチマーク
                   j3opt.plで最適化したコードをLinux上 Celeron(100MHz x 4.5)
                   で実行した場合の所要時間を 100% としている．遅いほど数値
                   が大きくなる．
    random.j3c     乱数と乱数シードのテスト
    while.j3c      do { } while()のテスト

---------------------------------------------------------------------------
J3DASM のソース  j3w_scriptディレクトリ 以下
---------------------------------------------------------------------------

POSE ディレクトリ

    POSE.J3S      人体モデルアニメーション メイン
    BODY_DEF.J3I  人体モデル形状定義
    BODYPROC.J3I  人体モデル構造定義
    BODY_MOV.J3I  人体モデル動作定義
    POSE_KEY.J3I  キー入力処理
    CM_MEM.J3I    フレームデータ管理
    POSE_CAM.J3I  視点のプロセス

    人体アニメーションの作成と再生を行うアプリケーションです．
    フレームと呼ぶ「人体の姿勢」を複数作成して，それらの姿勢を滑らかに
    補間しながら再生する機能を持っています．
    pose.j3dを起動して， 2 を押した後，Mを押してください．
    サンプルのアニメーションが起動します． ESCキーで終了します．使用法の
    詳細はpose_man.txtを参照してください．


HUMAN ディレクトリ

    HUMAN2.J3S     多関節物体のサンプルです．
    HITO_MOV.J3I   人間の関節動作定義
    HITO_DEF.J3I   人間パーツ形状定義
    HITO_STR.J3I   人間の構造定義

    走る二人の人間のサンプル．人間はまずいです．動きのおかしいとこ
    ろがすぐバレます．ロボットにすればよかった．
    ポリゴンの人間が二人なら当然「格闘もの」ですが，改造はお任せします．


FLIGHT ディレクトリ

    FLIGHT.  J3S   フライトシミュレータソース main
    WINDGEN. J3I   風力発電所のイメージ
    FL_DISP. J3I   グラフィック画面への文字出力
    FL_CAMER.J3I   視点
    FL_ENEMY.J3I   飛行船の運動
    FL_SCENE.J3I   風景
    FLIT_KEY.J3I   入力キー処理インクルードファイル
    FALCON02.J3I   自機の形状定義
    AIRSHIP. J3I   飛行船の形状定義
    FL_CANON.J3I   弾のプロセス
    FL_MOVE. J3I   自機の操縦

    自機がF-16ファルコンであるフライトシミュレータ風プログラムです．
    風力発電所と視点に多関節オブジェクトを利用しています．
    実行が始まるとオートパイロットモードとなっています．MキーとESCキー以
    外の入力を受け付けない状態になっています．また視点は空中に固定された
    位置にあります．Mキーを押してマニュアルモードに変更するとキー操作で
    きるようになります．カメラの位置の変更も可能です．
    Fキーで位置固定の視点に切り替わります． カーソルキーとＫ，Ｌキーで方
    向転換，Ｓキーでキャノン発射，ESCキーで終了します． 詳細は FLIGHT.J3S
    とFL_xx.J3Iを参照してください．また飛行速度は意識的に遅くしてあります．
    FLIGHT.J3SとFL_xx.J3Iを改造することによって自由にカスタマイズできます．
    数値キーの[５]で自機のまわりを移動する視点となります．
    フライトシミュレータ風というのは，重力加速度などの物理モデルがまった
    くインプリメントされていないので，単なる空間移動プログラムになってい
    るためです．はじめは敵もF-16で実際の速度に近いものにしましたが，せっ
    かくモデリングしたにもかかわらず一瞬で通り過ぎてしまい，まったくつま
    らないものになってしまいました．
    このサンプルでは撃墜の対象が飛行船という，非常に卑怯なシミュレータで
    す．撃墜した場合，自機の速度が得点に加算されます．
    操作法はテキストウインドウに簡単に表示されます.
    FLIGHT.J3Sを改造してまともフライトシミュレータにして下さい．
    スクリーンに表示される座標は航空力学で用いられる座標系（本キットで使
    用している座標系）で，通常３次元グラフィックで用いる奥行きがＺ座標と
    は異なりますから注意して下さい．


SAMPLE ディレクトリ

    LINE.J3S
          ２角形（直線のこと）のデモ
    CUBE.J3S
          回転，移動する立方体を表示するサンプルです．
          ３次元物体を表示する最も基本的な部分のみで構成されています．
          本キットで使用している座標系は，通常３次元グラフィックで用いる
          奥行きがＺ座標の座標系とは異なりますから注意して下さい．
    COLOR.J3S
          色見本です．左上から色番号０から１５まで裏は１６から３１です．
          色番号０は色が再定義されています．
    MANUAL2.J3S
          マニュアルに記載のソースとオブジェクトファイルの関係を示すファ
          イル．
    MULTIPRC.J3S
          複数のプロセスがそれぞれ勝手に文字出力するテキストモードのサン
          プル．
    TESTCALC.J3S
           ”計算もできます”というテキストモードのサンプル．


OBJVIEW ディレクトリ

    OBJVIEW.J3S    オブジェクトビューアソース
    OBJ_KEY.J3I    入力キー処理インクルードファイル
    DESIGN.J3I     形状定義ファイルのインクルード用
    D_HAND.J3I     DESIGN.J3Iをリネーム
    LHAND.J3I      左手の形状定義
    D_FALC02.J3I   DESIGN.J3Iをリネーム
    FALCON02.J3I   F-16の形状定義
    D_BALL.J3I     DESIGN.J3Iをリネーム
    BALL.J3I       回転体の形状定義
    TACO.J3I       スキンと拡大縮小を使用した例（タコと昆布）
    D_TACO.J3I     TACO.J3I用のDESIGN.J3Iをリネーム

    物体の形状を確認するためのビューア．物体を回転させて見るというのでは
    なくキー操作による命令を受けて物体が自分で回転移動します．ラジコンの
    感覚です．
    形状定義したファイルをDESIGN.J3Iにインクルードして，以下のように実行．
      >J3DASM OBJVIEW.J3S
      >J3W OBJVIEW.J3D
    BALL.J3D, HAND.J3DはDESIGN.J3Iに設定してアセンブルした後にOBJVIEW.J3D
    をリネームしたものです．
    視点は原点にあります．物体の位置を調節して中心から２０ｍの位置にある
    ため，大きな物体は最初に移動しないとみえないので注意してください．
    OBJVIEW.J3S の改造は簡単でしょう．

LIB ディレクトリ

    DEFCOLOR.J3I   色名の宣言
    KEY_TAB.J3I    汎用キー処理テーブル設定
    ESCAPE.J3I     ESCキーで終了
    REVOLUTN.J3I   回転体の生成
    ACT_KEY0.J3I   入力キー処理のテンプレート
    LIB00002.J3I   汎用ライブラリ ３角柱〜８角柱などの形状定義用
    LIB0002Z.J3I   汎用ライブラリ ３角柱〜８角柱などの形状定義用（Ｚ軸）

    他のサンプルファイルから %../LIB/LIB00002.J3I% の様にインクルード
    されているライブラリ群．

TUTORIAL ディレクトリ

    LIST1.J3S 〜 LIST13.J3S
    TUTORIAL.TXT中のリスト

【注】
多くのファイルに分割されているソースが多いですが，別に分割しないで
１本のファイルでもかまいません（誤解されて雑誌に紹介されたことがあるので）．

                                 水谷 純（mizutani.jun@nifty.ne.jp）
