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.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より 改造が楽と思います.
| 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.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クラスが継承, カスタマイズすることで種々の物体を表示するアプリケーションが 作成できます.別のアプリケーションで使用する物体のテストに使用 します.
LIST1.J3C 〜 LIST15.J3C j3ctutor.html中のリスト
J3DASM のソース j3w_scriptディレクトリ 以下
| 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を参照してください.
| HUMAN2.J3S | 多関節物体のサンプルです. |
| HITO_MOV.J3I | 人間の関節動作定義 |
| HITO_DEF.J3I | 人間パーツ形状定義 |
| HITO_STR.J3I | 人間の構造定義 |
走る二人の人間のサンプル.人間はまずいです.動きのおかしいとこ ろがすぐバレます.ロボットにすればよかった. ポリゴンの人間が二人なら当然「格闘もの」ですが,改造はお任せします.
| 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キーで位置固定の視点に切り替わります. カーソルキーとK,Lキーで方 向転換,Sキーでキャノン発射,ESCキーで終了します. 詳細は FLIGHT.J3S とFL_xx.J3Iを参照してください.また飛行速度は意識的に遅くしてあります. FLIGHT.J3SとFL_xx.J3Iを改造することによって自由にカスタマイズできます.
フライトシミュレータ風というのは,重力加速度などの物理モデルがまった くインプリメントされていないので,単なる空間移動プログラムになってい るためです.はじめは敵もF-16で実際の速度に近いものにしましたが,せっ かくモデリングしたにもかかわらず一瞬で通り過ぎてしまい,まったくつま らないものになってしまいました.
このサンプルでは撃墜の対象が飛行船という,非常に卑怯なシミュレータで す.撃墜した場合,自機の速度が得点に加算されます. 操作法はテキストウインドウに簡単に表示されます.
FLIGHT.J3Sを改造してまともフライトシミュレータにして下さい.
スクリーンに表示される座標は航空力学で用いられる座標系(本キットで使 用している座標系)で,通常3次元グラフィックで用いる奥行きがZ座標と は異なりますから注意して下さい.| LINE.J3S | 2角形(直線のこと)のデモ |
| CUBE.J3S | 回転,移動する立方体を表示するサンプルです. 3次元物体を表示する最も基本的な部分のみで構成されています. 本キットで使用している座標系は,通常3次元グラフィックで用いる奥行きがZ座標の座標系とは異なりますから注意して下さい. |
| COLOR.J3S | 色見本です.左上から色番号0から15まで裏は16から31です.色番号0は色が再定義されています. |
| MANUAL2.J3S | マニュアルに記載のソースとオブジェクトファイルの関係を示すファイル. |
| MULTIPRC.J3S | 複数のプロセスがそれぞれ勝手に文字出力するテキストモードのサンプル. |
| TESTCALC.J3S | ”計算もできます”というテキストモードのサンプル. |
| 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 をリネームしたものです.
視点は原点にあります.物体の位置を調節して中心から20mの位置にある ため,大きな物体は最初に移動しないとみえないので注意してください. OBJVIEW.J3S の改造は簡単でしょう.| DEFCOLOR.J3I | 色名の宣言 |
| KEY_TAB.J3I | 汎用キー処理テーブル設定 |
| ESCAPE.J3I | ESCキーで終了 |
| REVOLUTN.J3I | 回転体の生成 |
| ACT_KEY0.J3I | 入力キー処理のテンプレート |
| LIB00002.J3I | 汎用ライブラリ 3角柱〜8角柱などの形状定義用 |
| LIB0002Z.J3I | 汎用ライブラリ 3角柱〜8角柱などの形状定義用(Z軸) |
他のサンプルファイルから %../LIB/LIB00002.J3I% の様にインクルード されているライブラリ群.
LIST1.J3S 〜 LIST13.J3S TUTORIAL.TXT中のリスト
【注】 多くのファイルに分割されているソースが多いですが,別に分割しないで 1本のファイルでもかまいません(誤解されて雑誌に紹介されたことがあるので).
水谷 純(mizutani.jun@nifty.ne.jp)