[HOME] [J3Wの紹介]

3次元ポリゴンアニメーションキット ver.6.51 (Linux版)

08/06/2012
Copyright (c) Jun Mizutani 1996 - 2012

j3w651.tar.gz のダウンロードはここから(489KB).

【1】はじめに

空間内の物体がすべてCPU (コンピュータ)を持っているような世界を 考えて見てください。 地面も車も飛行機もそれぞれ異なるCPU によってコントロールされています。 物体の動作はCPU が実行するプログラムによ って決められています。


J3W では,CPU が主役で物体はCPU がプログラムにしたがって生成し ます。CPU が「10秒間で100m前」という命令を実行すると,物体が10秒 間で100m前進します。同時に別の物体の別のCPU が「1秒間で360度回転」 という命令を実行すれば,その物体はそこで1回転します。同様にいくつでも CPU を用意すれば,その数の物体を独立して運動させることができます.


J3W は3次元グラフィックライブラリではありません。物体の形状と動き, その速さ等を定義したファイルを作成し実行することによって,本キット単 独で自由に3次元ポリゴンアニメーションを構築することが可能です.


オブジェクトファイル(拡張子がJ3D)をソースファイルに使用する言語と 独立させるため,オブジェクトファイルを作成するアセンブラ(j3dasm) とオブジェクトファイルを実行するアプリケーション(j3w)と分けてあ ります。さらにJAVA風の言語コンパイラ(j3c)によってアセンブラの 入力ファイルを作成できます.

【2】J3W の構成

提供するj3w651.tar.gzは,以下のファイルで構成されています。

j3w-651ディレクトリ

        README.utf8    j3wの使用法(このファイル)
        history.txt    J3Wの歴史
        sample.txt     サンプルソースの説明
        COPYING        GNU General Public License
        gpl.text       GNU General Public License 日本語訳 (UTF8に変換)
                       ftp.sra.co.jp/pub/gnu/local-fix/GPL2-j/より転載
        j3             j3w, j3c, j3dasm 用 GUIフロントエンド (tcl/tk)
        j3cc           コンパイル,アセンブルを連続して実行する
                       シェルスクリプト
        j3opt.pl       「おまけ」j3cの出力の最適化ツール (j3m-->j3o)
                       Perlスクリプト, /usr/bin/perl が必要。
        Makefile       make でj3c, j3w, j3dasmがコンパイルされます。

j3dディレクトリは 各種サンプルのJ3W用実行形式ファイル.

        *.j3d          各種サンプルの実行形式ファイル
        list_*.j3d     j3ctutor.htmlのリストの実行形式ファイル
        list*.j3d      tutorial.htmlのリストの実行形式ファイル
        frame_2.dat    人体モデルアニメーションのデータ 空手
        frame_3.dat    人体モデルアニメーションのデータ 走る人間

htmlディレクトリは HTMLで書かれたオンラインドキュメント。

        index.html           J3Wの紹介と総目次
        tutorial.html        J3Wプログラミング入門
        j3w_m??.html         J3Wリファレンスマニュアル
        j3ctutor.html        J3Cプログラミング入門
        j3c_spec.html        J3C言語の詳細
        j3c_func.html        J3C組み込み関数の解説
        pose_man.html        人体アニメーションpose.j3dの使用法
        j3c_pngディレクトリ  j3c_spec.htmlの画像ファイル

j3c_scriptディレクトリには以下のサンプルのソースディレクトリがあります.

        Makefile             j3c_script以下のソースから j3d を作成
        flight               フライトシミュレータのソース
        objview              オブジェクトビューアのソース
        test                 j3c のテスト用ソース
        lib                  他のサンプルから使用されるライブラリ
        tutorial             j3ctutor.html内のソース

j3w_scriptディレクトリには以下のサンプルのソースディレクトリがあります.

        Makefile             j3w_script以下のソースから j3d を作成
        pose                 人体アニメーションエディタのソース
        human                人間が走るアニメーション
        flight               フライトシミュレータのソース
        sample               簡単なサンプルのソース
        objview              オブジェクトビューアのソース
        house                マンションの一室を探検
        lib                  他のサンプルから使用されるライブラリ
        tutorial             tutorial.html内のソース

blender ディレクトリには 以下のファイルがあります.

        blendview.j3c        blenderが出力するblend.j3cを使うデモ
        j3cExporter.py       blender に組み込むエクスポート用Pythonスクリプト

sourceディレクトリは j3w, j3c, j3dasmのソースがあります.

【3】インストールとアンインストール(削除)

最近のLinuxディストリビューションには開発環境がインストールされていない場合があります。 GNU Make と g++、libX11 が必要です。Debian や Ubuntu では次のようにインストールしてください。

        bash$ sudo apt-get install g++
        bash$ sudo apt-get install xorg-dev

(以下の説明中で bash$ はコマンドプロンプトです。入力の必要はありません) まず適当なディレクトリで解凍(展開)します。

        bash$ gzip -dc j3w651.tar.gz | tar xvf -

または

        bash$ tar zxf j3w651.tar.gz

j3w-651ディレクトリへ移動します。

        bash$ cd j3w-651

コンパイルは make の実行だけで問題ないと思います。 64bitアプリケーションとしてコンパイルする場合は Makefile を編集して BIT64 = 1 を有効にしてください。

        bash$ make

コマンドサイズを小さくする場合は(オプション):

        bash$ make strip

インストールはスーパユーザ(root)権限が普通必要です。 デフォルトでは /usr/local/bin にインストールされます。

Redhat系のディストリビューションでも /usr/local/bin 以下に インストールされたファイルは rpm の管理外なので勝手にコンパイル してインストールしても問題ないと思います。

        bash$ su -c 'make install'

/usr/local/bin がコマンドの検索パスに含まれていない場合は, export PATH=/usr/local/bin:$PATH (bashの場合) PATH=/usr/local/bin:$PATH; export PATH (shの場合) を実行するか .bashrc 等に追加してください。

/usr/local/bin 以外のディレクトリにインストールする場合は, j3w-651/Makefile の INSTALL_DIR=/usr/local/bin を変更して下さい。

Linux以外のUnixの場合もj3w-651/Makefileを変更して下さい。 Makefileの先頭部分で使用するOSに合わせてのコメントをはずして下さい。 例えば FreeBSD では以下のように変更して,gmake して下さい。

      # OS = LINUX
        OS = FREEBSD
      # OS = AIX
      # OS = SOLARIS

Linux以外の環境では,十分にテストしていません。

サンプルはコンパイルまたはアセンブル済みの *.j3d が j3d ディレ クトリにありますが、 make sample; make sample_install で j3d ディレクトリに新たに作成されます。個々のサンプルファイルを試す 場合は各ディレクトリの Makefile を参考にしてください。

アンインストールは,j3w651.tar.gzを展開したディレクトリと, デフォルトで make install した場合は,/usr/local/bin/ にある j3cc, j3, j3c, j3dasm, j3w, j3opt.pl の6つのファイルを削除して ください。

【4】使用法

《コンパイル, アセンブル, 実行》

list2.j3cというソースファイルをコンパイルして実行するまでを解説 します。

        bash$ j3c list2.j3c
        bash$ j3dasm list2.j3m

で list2.j3m は list2.j3d へアセンブルされます。

        bash$ j3w list2.j3d

で実行されます。 j3ccというシェルプログラムが用意されています。 コンパイルとアセンブルを同時に行ないたい場合は次のように指定します。

        bash$ j3cc list2.j3c

これで list2.j3m と list2.j3d が生成されます。 更に,コンパイルと アセンブル,j3w の実行まで行ないたい場合は

        bash$ j3cc -r list2.j3c

とすると j3w list2.j3d の実行まで自動的に行われます。 実際にj3cの ソースを直接実行できるような環境となります。

j3cのソースに構文エラーがある場合,またj3dasmのアセンブリソースに エラーがある場合は,エラーを見つけた段階でスクリプトは終了します。

tcl/tk が使用できる環境ならば,GUIでコンパイル,アセンブル,実行が できる j3 を起動します。


Perl が使用できる環境ならば j3opt.pl で j3c の出力ファイル *.j3m を最適化(10-15%)して *.j3o に変換することができます。 j3o という拡張子は,j3m や j3s と同じく j3dasm の入力に使用できます。 j3opt.pl は Perl スクリプトです。 /usr/bin/perl 以外の場所に Perl がインストールされている環境では,j3opt.pl の1行目を変更して下さい。

《サンプルの実行》

Xサーバが起動していない場合はここで起動してください。 256色以上でXサーバを起動して(例えば xinit -- -bpp 16 )下さい。 動作しているXサーバの色数で表示品質が決まります。


        bash$ cd j3d
        bash$ j3w pose.j3d

でこの場合ポーズエディタが起動します。 pose.j3dは人体モデルのアニメーションのサンプルです。人体モデルの ポーズを作成してアニメーションとして再生させ,ファイルに保存する事 ができます。 pose.j3dを起動して, 2 を押した後,Mを押してください. サンプルのアニメーションが起動します。 ESCキーで終了します。使用法 の詳細はpose_man.htmlを参照してください.

        bash$ j3w flight.j3d

として起動すると, 簡単なフライトシミュレータが実行されます。


実行が始まるとオートパイロットモードとなっています。MキーとESCキー以 外の入力を受け付けない状態になっています。また視点は空中に固定された 位置にあります。Mキーを押してマニュアルモードに変更するとキー操作で きるようになります。Y, U, H, G, J, N, T キーでカメラの位置が変わります. Fキーで位置固定の視点に切り替わります。 カーソルキーと K,L キーで方 向転換,S キーでキャノン発射,ESCキーで終了します。 詳細は flight.j3c を参照してください。 また飛行速度は意識的に遅くしてあります.


実行時にオプションとして -f を指定すると高速で動作しますが、CPUの 負荷が大きくなります(ver.6.44以前のデフォルト動作)。ver.6.45から デフォルトでは、高速なマシンの場合に発生する無駄な描画を抑制すること でCPUの負荷を低くしています。次のように指定すると FPS の値が大きく なることが確認できます。

        bash$ j3w -f flight.j3d

《ソースファイルの作成》

vi, muleなどのエディターで作成し、拡張子をj3cとして保存します. ソースファイルの内容に関しては,サンプルファイル,または, html/index.html を参考にしてください。


日本語はテキストウインドウに対してのみ可能です。漢字コードは ソースファイル(j3c, j3s)で使用したコードがそのまま出力されます。

《注意》

ソース(*.j3s)もオブジェクトファイル(*.j3d)も Unix形式の テキストファイル(改行コード0x0A)である必要があります。 Windows環境で作成したファイルは

          fromdos  <file >file2

または

          perl -i~ -pe 'tr/\r//d' file

などのコマンドで改行コードを変換する必要があります。

ウィンドウマネージャで強制終了をした場合などでターミナル画面 に戻った場合にキー入力が受け付けられないように見える場合があ ります。

この場合はエンターキーを押した後に、画面上で見えなくても

          j3w[エンター]

と入力して、引数なしで j3w を起動して下さい。

          bash$ j3w
          J3W ver.6.51 2012 Jun Mizutani
          usage : j3w [-f] file

を表示した後に正常に戻ります。

《必要な環境》

Ubuntu 12.04, Debian wheezy で動作確認。

【5】blender をモデラーとして使う

blender (http://www.blender3d.org/)は3Dのモデリング、 レンダリング、アニメーションが可能な フリー(オープンソース)の高機能3Dグラフィックツールですが、 Python を使って3D データを好きなフォーマットに変換して出力することもできます。 blenderのメッシュをJ3Cのソースコードに変換し、j3wを実行する J3C Exporter を同梱しています。blender 2.37a と blender 2.40 で動作確認しました。


j3w を展開したディレクトリが、例えば /home/jun/j3w-651 の場合、 環境変数 J3WBLEND を /home/jun/j3w-651/blender と設定します。 環境変数 J3WBLEND は J3Cのソースコードの出力先を 指定します。 直接 j3w を実行する場合は blendview.j3c が存在するパスである必要があります。


J3C Exporter 内でも指定できますが、何度も実行する場合は面倒なので J3WBLEND を j3w を展開したディレクトリ直下の blender に設定しておいてください。


.bashrc などに以下の行を追加しておくと毎回設定しなくてすみます。

     export J3WBLEND=/home/jun/j3w-651/blender

j3w-651/blender/j3cExporter.py を blender のスクリプトがおいてあるディレクトリ (私の場合/usr/local/blender-2.40-linux-glibc2.3.6-i386/.blender/scripts) に コピーしてください。


または、blender を起動して最上部のメインメニューの下端を下方向にドラッグ するとボタンが現れます。右端の「File Paths」ボタンを押して左から2番目下の Python: に /home/jun/j3w-651/blender を設定します。 Pythonのパスを設定したすぐ右側のボタン (マウスポインタをボタンにおいて しばらくすると「Re-evaluate scripts registration in menus」と表示されます) をクリックします。この場合は blender 付属のスクリプトがメニューから選べなく なります。


run_j3w メニューのFile/Exportから 「J3C code (.j3c)」を選択するとダイアログが表示 されます。Factor スライダ(クリックで数値入力、左右にドラッグで数値変更)で オブジェクトの拡大率が変更できます。 各座標軸の最大最小値とサイズが表示されます。 滑らかな(面と面の角度の差が小さい)物体は、サイズを1000以上にしてください。 サイズが大きいほど滑らかに表示されます。


Distance スライダで視点の位置を指定します。 Distance の値をサイズの 2倍程度 に設定して「Run J3W」ボタンをクリックすると モデルデータが blend.j3c に 出力され、blendview.j3c とともにコンパイル、アセンブルされて blendview.j3d が j3w により起動されます。個々のオブジェクトは Head回転していますが、 出力時の設定(Bank,Pitch,Headボタン)で回転方向を変更できます。起動された blendview.j3d は画面に表示されたキーを入力することにより、さらにリアルタイムに操作できます。


【6】J3Wのバージョン番号

J3Wのバージョン番号は以下の規則とします.

    J3W ver.4.xy  Windows95/98/NTで動作するもの.
    J3W ver.5.xy  Windows95 + DirectX3以降またはWindows98で動作するもの.
    J3W ver.6.xy  Linux + X11R6で動作するもの.
    J3W ver.7.xy  Linux + X11R6 + Mesa(or OpenGL)で動作するもの。(未公開)

x が同じ場合は,ほぼ同等な機能を有するものとします. y はプラットホーム依存のマイナーバージョン.

2008/07/27 現在公開している j3w のバージョン番号

j3w ver.4.51 Windows95/98/XPで動作するもの。
j3w ver.5.60 WindowsXP SP2以降 Vistaで動作するDirectX9版。
j3w ver.6.51 Linux + X11R6で動作するもの。

【7】互換性

【8】使用条件

このソフトはフリーソフトウェアです。GNU General Pulic Licenceにしたがって 自由に使用,配布,改変して頂いてかまいません。 GNU General Pulic Licence の詳細はCOPYINGを参照して下さい. GNU General Pulic Licence の日本語訳は gpl.text です.


義務ではありませんが,ネットへの転載,書籍への収載時には、事後でもかまいま せんのでメールにてご連絡くださるとウレシイです。


このソフトウェアおよびマニュアル,サンプルファイルの著作権は私 (水谷 純, mizutani.jun@nifty.ne.jp)が保有しています。


本ソフトウェアによって生じた損害について著作者は責任を負いません。 また、著作者はバージョンアップの義務を負いません。

【9】サポート

本ソフトウェアに関して,著作者にはいかなる種類のサポートの義務はあり ません. すべてにお答えできると限りませんが,対応できる限り,質問などのメール に返答させていただいております. 最新情報は https://www.mztn.org/を参考にしてください. バグ報告も歓迎いたします.


Linux Japanに連載 (9回) した J3W の解説記事本文の PDF と記事中の リストのアーカイブを https://www.mztn.org/lj_code/index.html に置いています。記事全文がPDFでダウンロードできます。

水谷 純(mizutani.jun@nifty.ne.jp)