[HOME]
[INDEX]
[J3Cの言語仕様]
[J3Cプログラミング入門]
[J3CとJ3Wの命令対応表]
J3C 組み込み関数の解説
2008/11/01 Jun Mizutani
組み込み関数概要
組み込み関数詳説
J3C組込み関数の概要
●インスタンスに関する操作
J3Wの中心的な存在であるインスタンスの生成と削除,インスタンス間の通信に関する
組込み関数には以下の10種類があります.
●「物体」に対する操作
1つのインスタンスは1つの「物体」を持つことができます.以下の組込み関数を使用
して「物体」の形状を設定したり,位置や角度の設定と取得を行います.
「物体」を持っていないインスタンスが以下の組込み関数を実行するとエラーとなります.
●「物体」の運動に関する操作
「物体」を持っているインスタンスが以下の組込み関数を実行すると,「物体」は空間
内で運動します.「物体」を持っていないインスタンスが以下の組込み関数を実行する
とエラーとなります.
Forward | 前進 X座標の増加 |
Back | 後退 X座標の減少 |
Left | 左移動 Y座標の減少 |
Right | 右移動 Y座標の増加 |
Up | 上移動 Z座標の減少 |
Down | 下移動 Z座標の増加 |
RotHead | ヘッド回転 横を向く |
RotPitch | ピッチ回転 見上げる |
RotBank | バンク回転 首をかしげる |
Move0 | RX,RY,RZ,RH,RP,RBの値で同時に移動と回転を行う |
Move | RX,RY,RZ,RH,RP,RBの値で同時に移動と回転を行う |
SetGravity | 重力加速度の設定 初期値はゼロ |
GetGravity | 重力加速度の取得 |
SetAcceleration | 加速度の設定 初期値はゼロ |
GetAcceleration | 加速度の取得 |
SetVelocity | 速度,角速度の設定 初期値はゼロ |
GetVelocity | 速度,角速度の取得 |
SetWVelocity | 「物体」の速度を世界座標系で設定 初期値はゼロ |
GetWVelocity | 「物体」の速度を世界座標系で取得 |
Scale | 指定した時間で「物体」の縮尺を変化 |
●テクスチャに関する操作
面にテクスチャを貼ることができます。
●演算
レジスタを用いて演算を行います.結果は指定したレジスタに返ります.
●レジスタに関する操作
レジスタの設定,メモリへの格納,スタックへの退避とスタックからの復帰
等に関する組込み関数です.
●共有メモリ
●入出力
テキスト画面とグラフィック画面への文字出力,線分の描画,音の出力とキーボード,
マウスからの入力に関する組込み関数です.これらの組込み関数はインスタンス毎に
独立していません.どのインスタンスも同じデバイスに対して操作することになります.
●システム関連組込み関数
J3Wシステム(インスタンスに依存しない)に関する状態の取得と設定,共有メモリ
のファイル入出力に関する組込み関数です.
組み込み関数
J3Cの組み込み関数は,仮想マシンであるJ3Wの命令1つ1つに対応しています.
-
Forward( 式1,式2 )
Back( 式1,式2 )
Left( 式1,式2 )
Right( 式1,式2 )
Up( 式1,式2 )
Down( 式1,式2 ) [top] -
- 指定された時間で指定された距離を移動します.
- 式1に時間, 式2に距離を設定します. 時間の単位はミリ秒です.
- メッセージを受信すると,時間が余っていても次の命令に移ります.
- 長い時間を指定しても自動的に途中経過が表示されます.
-
RotHead( 式1,式2 )
RotPitch( 式1,式2 )
RotBank( 式1,式2 ) [top] -
- 指定された時間で指定された角度を回転します.
- RotHeadはZ軸まわり,RotPittchはY軸まわり,RotBankはX軸まわりの回転です.
- 角度は360度を8倍した値を単位として指定します.
例えば30度:240, 90度:720, 180度:1440, 360度:2880 のように指定します.
- 式1に時間, 式2に距離を設定します.時間の単位はミリ秒です.
- パラメータ(角度)は32bit符号付き整数
- メッセージを受信すると,時間が余っていても次の命令に移ります.
- 長い時間を指定しても自動的に途中経過が表示されます.
-
Move0( 式 )
[top] -
- 式に指定した時間(単位はミリ秒)のあいだ移動,回転します.
- RX, RY, RZに移動量, RH, RP, RB に回転角を設定します.
- 角度は360度を8倍した値を単位として指定します.
例えば30度:240, 90度:720, 180度:1440, 360度:2880 となります.
- 命令実行後 RX, RY, RZ, RH, RP, RB の値は不定となります.
- 移動が先, その後回転します.
- メッセージを受信すると,時間が余っていても次の命令に移ります.
- 長い時間を指定しても自動的に途中経過が表示されます.
-
Move( 式 )
[top] -
- 式に指定した時間(単位はミリ秒)のあいだ移動,回転します.
- Move0より回転の補間精度は良区なりますが,180度以上の角度を
指定すると絶対値が180度以内で指定されたように動作します.
- RX, RY, RZに移動量, RH, RP, RB に回転角を設定します.
角度は±180度(1440)以内を指定します.
- 命令実行後 RX, RY, RZ, RH, RP, RB の値は不定となります.
- 移動が先, その後回転します.
- メッセージを受信すると,時間が余っていても次の命令に移ります.
- 長い時間を指定しても自動的に途中経過が表示されます.
-
Scale( 式 )
[top] -
- 指定時間で縮尺を変化させます.時間の単位はミリ秒です.
- RX, RY, RZ に各軸の相対縮尺(1000が等倍)を設定します.
例えば 800で現在の縮尺の80%の大きさまで指定時間で変化します.
縮尺を変化させたくない軸には1000を設定しておく必要があります.
- メッセージを受信すると,時間が余っていても次の命令に移ります.
- 長い時間を指定しても自動的に途中経過が表示されます.
-
SetGravity( 式 )
[top] -
- 「物体」毎に重力加速度を設定します.(単位はunit/1000/sec^2)
- 重力加速度の方向はワールド座標系でZの正方向(下向き)です.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値を指定して
ください(単位は 1/1000unit).
- 「物体」生成後に指定して, 再設定されるまで有効です.
- 初期値は0 で重力の影響を受けません.
-
GetGravity()
[top] -
- 「物体」毎の重力加速度をレジスタに取得します.(単位はunit/1000/sec^2)
- 重力加速度の方向はワールド座標系でZの正方向(下向き)です.
- 初期値は0 で重力の影響を受けません.
-
SetAcceleration()
[top] -
- RX, RY, RZ に「物体」の各軸に関する加速度を設定します.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値を指定して
ください(単位は(1/1000)unit/sec^2)
- 初期値は(0,0,0)です.
-
GetAcceleration()
[top] -
- RX, RY, RZ に「物体」の各軸に関する加速度を取得します.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値が返ります.
(単位は(1/1000)unit/sec^2)
-
SetVelocity()
[top] -
- RX, RY, RZ に「物体」の各軸に関する速度を設定します.
- 速度は重力,加速度の影響で自動的に変化します.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値を指定して
ください(単位は(1/1000)unit/sec)
- RH, RP, RB に「物体」の各軸に関する角速度を設定(単位は(1/8)度/sec)
- 初期値は(0,0,0,0,0,0)です.
-
GetVelocity()
[top] -
- RX, RY, RZ に「物体」の各軸に関する速度を取得します.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値が返ります.
(単位は(1/1000)unit/sec)
- 速度は重力,加速度の影響で自動的に変化します.
- RH, RP, RB に「物体」の各軸に関する角速度を取得(単位は(度/8)/sec)
-
SetWVelocity()
[top] -
- RX, RY, RZ にワールド座標系の各軸に関する速度を設定します.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値を指定して
ください(単位は(1/1000)unit/sec)
- GETVELで得られる局所座標系の(x,y,z)も変化します.
- 速度は重力,加速度の影響で自動的に変化します.
- 角速度の指定はできません.
-
GetWVelocity()
[top] -
- RX, RY, RZ に「物体」の各軸に関する速度を取得します.
- 距離指定に用いる値(Move組込み関数など)を1000倍した値が返ります.
(単位は(1/1000)unit/sec)
- GETVELで得られる局所座標系の(x,y,z)をワールド座標系に変換した値が
返ります. RH, RP, RBは変化しません.
- 速度は重力,加速度の影響で自動的に変化します.
-
Pause( 式 )
[top] -
- 式には時間を指定します.指定時間の間, 何もしないで待ちます.
時間指定つきのWaitに相当します.指定時間を経過すると次の命令を
実行します.
- メッセージを受信すると,時間が余っていても次の命令に移ります.
-
Throw()
[top] -
- 何もせず, 渡された時間をすべて消費, つまり制御を別のインスタンスに
渡します.
-
Near(近面クリップ位置)
[top] -
- 視点から近過ぎるポリゴンを削除する限界の距離を指定します。
- 指定した値が小さすぎるとZバッファの精度が低下します。
- 互換性からデフォルトは50にしていますが、より大きい値を指定
したほうが、視点から遠くにあるポリゴン同士の表示が乱れるのを
防ぐことができます。
-
Far(遠面クリップ位置)
[top] -
- 視点から遠過ぎるポリゴンを削除する限界の距離を指定します。
- 定数で指定する場合は32767以内の値に制限されます。
- デフォルトは4,000,000です。
-
PointUV()
[top] -
- UV座標を明示的に指定して頂点を登録する場合に使用します。
- TextureAxis、TextureMap による影響は受けません。
- 「物体」頂点座標の定義(レジスタRX,RY,RZにより指定)
- 「物体」頂点のU座標をレジスタRH、V座標をレジスタRPに指定
- DefPointUVと同じだが, 実行時に計算した頂点座標を定義可能
- SetOffset, ClearOffset によるオフセットが加算されます。
-
DefPointUV(x, y, z, u, v)
[top] -
- プロセス所有の「物体」にUV座標付きの頂点座標を追加します。
- UV座標を明示的に指定して頂点を登録する場合に使用します。
- TextureAxis、TextureMap による影響は受けません。
- 定数を指定, 実行時に指定するためにはPointUVを用います。
- SetOffset, ClearOffset によるオフセットが加算されます。
-
TextureFile(テクスチャファイル番号, "ファイル名")
[top] -
- ビットマップファイルをテクスチャとして読み込む
- ビットマップファイルはモノクロ、16, 24, 32 bitが使用可
- オブジェクト間で共通のテクスチャファイル番号を使用
- テクスチャファイル番号は 0 から 127 の範囲を使用します。
- グラフィックモードに切り替えた後に実行すること
-
TextureSet(テクスチャ番号")
[top] -
- オブジェクトで使用するテクスチャ番号を指定します。
- テクスチャ番号は 0 から 127 の範囲を使用します。
- テクスチャ番号が -1の時はテクスチャは貼られません(デフォルト)
- テクスチャ番号はオブジェクト毎に独立しています。
- オブジェクト生成(NewObject または Child)後に実行すること。
- テクスチャを使用するオブジェクトの場合、頂点登録前に実行すること。
平面マッピングでUV算出する場合、テクスチャサイズが必要となるため。
-
TextureAxis(軸指定数値)
[top] -
- 1:x, 2:y, 3:z が中心軸になります。
- -1:x, -2:y, -3:z の場合は逆方向からテクスチャが貼られます。
- 0 を指定するとz 軸を指定することと同じ。
- 頂点毎に指定可能
- オブジェクト生成 (New または Child) の後で、頂点登録(Point または DefPoint)前に実行すること。
-
TextureAlpha(透明度%)
[top] -
- テクスチャの透明度を0から100の範囲で指定する。100で不透明
- 値が大きいほどテクスチャは不透明となる
- TextureFileの前に実行すること
-
TextureScale(横の拡大率, 縦の拡大率)
[top] -
- テクスチャの拡大率の指定
- 200とすると頂点のUまたはV座標を0.5倍します。この場合テクスチャの見かけの大きさは2倍になります。
- いつでも実行して拡大率を動的に変更できます。
-
TextureChange(テクスチャ番号, テクスチャファイル番号)
[top] -
- テクスチャ番号に対応するテクスチャファイル番号を変更することでテクスチャを動的に変更できます。
- テクスチャファイル番号に -1 を指定するとテクスチャマッピングを解除できます。
- テクスチャファイル番号は TxtureFile関数で指定された番号
- テクスチャ番号は頂点またはポリゴン登録時にTextureSetで指定された番号
-
TextureMap(マッピング方法)
[top] -
- テクスチャマッピングの方法を指定します
- デフォルトは0で球面マップ、1:は平面マップ
- オブジェクト生成(New または Child)後で、頂点登録
(DefPoint または Point)前に実行すること
- ポリゴン毎に指定可能
-
TextureBias(U座標, V座標)
[top] -
- 頂点登録時の頂点座標に対してTextureAxisの設定に対応した座標にオフセットを加えます。
- 平面マッピングに対してのみ動作。球面マッピングには影響なし。
- オブジェクト毎に指定し、その後に登録されたポリゴンに対して影響します。
- ポリゴン登録後はそのポリゴンのオフセットは変更できません。
-
new( クラス, メモリサイズ )
[top] -
- 新たにインスタンスを生成し,仮想CPUのレジスタ群とデータメモリを
確保します.メモリサイズは定数式で指定します.
- 生成するクラスされたインスタンスはスタート位置から実行を開始します.
- この命令を実行したインスタンスの レジスタ変数を新規インスタンスの
レジスタ変数にコピーします.レジスタ変数を新規インスタンスへの引数
として使用できます.
-
delete()
[top] -
- この組込み関数を実行しているインスタンスを消去(自殺)します.
- インスタンスが「物体」を所有する場合「物体」も消去します.
- 子インスタンスが存在する場合には子インスタンスはワールド座標系で独立した
1つの「物体」となり,消滅しません.
- 仮想CPUのレジスタ群とデータメモリを解放します.
-
Wait()
[top] -
- メッセージ領域をクリア(0)し, Throwを無限回繰り返します.
- メッセージを受け取ると次の命令に進みます.
- 受け取ったメッセージはクリアされません.
- 停止メッセージ(Stopが送信した)が優先されます.
- 通常,静止して動かない物体の場合,INITメソッドの最後に置きます.
-
Stop()
[top] -
- すべてのインスタンスに停止メッセージ(-1)を送り, 自分も消滅します.
- プログラムは終了します.
- 仮想CPUのレジスタ群とデータメモリを解放します.
-
Send( 式1, 式2 )
[top] -
- 式1に指定されたインスタンスIDの示すインスタンスに式2のメッセージ
(32bit)を送ります.
- 同じインスタンスID(RQの値)を持つ複数のインスタンスが存在する場合は,
そのようなすべてのインスタンスがメッセージを受信します.
- J3Wの世界では,物体間のコミュニケーションはメッセージの交換だけで
行います. どの物体が他の物体に対して何をさせたいか(何をお願いするか)
を「どのようなメッセージを送るか?」で整理しておく必要があります.
例えば「ラジコンの操縦者が「U」キーでメッセージ99を送った場合に,
インスタンスID12番のラジコンヘリはどう反応するか?」という形で相互
作用を整理して自由にコントロールできる世界を構築します.
-
Receive()
[top] -
- RLレジスタにメッセージが返る形でRUNメソッド中で使用されています.
J3Cでは使う必要はありません.
- 同時に複数のメッセージを受け取った場合は大きい値のメッセージが
優先して保持されています.
- 実行後メッセージはクリアされます.
-
SendTo(式1, 式2)
[top] -
- システムが管理しているインスタンス管理番号のインスタンスに式 2
のメッセージメッセージ(32bit)を送ります.インスタンス番号は
Distance組込み関数のRYレジスタに返る値です.
- 同じインスタンスIDを持つインスタンスが複数存在しているような場合に
インスタンスを区別するために使用します.
- 衝突判定には,Distance組込み関数を使用しますが,特定のインスタンスを
確実に指定するために使用します.
-
child(クラス名, メモリサイズ, 最大頂点数, 最大ポリゴン数)
[top] -
- 新しいインスタンスと下位の階層の「物体」を生成して,関節を持つような
物体を実現します.
- クラス名, メモリサイズ, 最大頂点数, 最大ポリゴン数は定数式で指定します.
- 新たなインスタンスを生成,実行スタート位置を指定した後に, この組込み関数を
発行したインスタンスの直下に所属する「物体」を生成します.
「物体」は親子関係を形成しますが,生成したインスタンスには親子関係
はありません.
仮想CPUのレジスタ群とデータメモリが新規に確保されます.
- この組込み関数を発行したインスタンスのレジスタを生成するインスタンスのレジスタ
にコピーします.生成するインスタンスに渡す引数として利用できます.
- 親「物体」が先に消滅した場合は,その子供たちはそれぞれ空間内で
独立した「物体」になります.
- 頂点数, 面数は実際に使用する数より多くても問題ありませんが,
少ないとエラーが発生します.注意して下さい.
-
GraphMode()
[top] -
- グラフィックウインドウを表示します.
- 色の設定は初期化されます.
-
TextMode()
[top] -
- グラフィックウインドウを閉じます.
- プログラム実行開始時はテキストモードで始まります.
-
BackgroundColor( 式 )
[top] -
- RGB各4ビット(黒 0x0000 - 白 0x0FFF)で背景色を指定します(4096色).
- グラフィックモード時のスクリーンの背景色が設定されます.
-
Zoom( 式 )
[top] -
- 0ならば90度(初期値), 1ならば53度の視野角になります.
- グラフィックウィンドウが開いている状態で実行します.
-
Wire( 式 )
[top] -
- すべてのポリゴンをワイヤーフレーム(線分)で表示します.
- 手前の線分はキチンと手前に表示されます.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
Emit( 式 )
[top] -
- Emit(1) を実行した物体インスタンスが光源を持ちます.
Parallel(0) の時は点光源が原点位置にあるものとして
すべての物体が照明されます.Parallel(1)の場合は
平行光線の方向が物体インスタンスの向きに合わせて変
化します.
- Emit(0) が実行されると特定の物体インスタンスは光源を持たず,
仮想的な光源が視点とともに移動するようになります.
つまり,視点から見た光源の相対位置と方向は一定となります.
初期設定は Emit(0).
- See()とEmit()の関係.
Emitが実行されない限りSee組込み関数で 光源も視点と
同じ物体に移動します. 一度 Emit(1)が実行されると,
See組込み関数で視点が移動しても光源は移動しません.
Emit(0)を実行すると元に戻ります.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
Parallel( 式 )
[top] -
- 式の値が 0 ならば点光源, 1ならば平行光源(初期値)になります.
- 平行光源の場合の光の方向は初期値は画面手前から奥
(X軸方向)でLight組込み関数で変更できます.
さらに物体インスタンスが光源を持つ場合(Emit(1)),オブジェク
トの姿勢で後方が変化します.Light組込み関数の方向指定がオブジ
ェクトの局所座標系で指定されたものと解釈されます.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
InKey()
[top] -
- アスキーコードをキーボードから入力
- InKeyによるキー入力はグラフィックウィンドウかテキストウィンド
ウがアクティブ(フォーカスがある)になっている必要があります.
アクティブでない場合でもキー入力を取得するためには RawKey を使
用してください.
-
RawKey( 式 )
[top] -
- 式で指定したキーコードのキーの押下チェック
- 複数キーの同時押下チェックが可能です.
- キーが押されていれば 1 , 押してなければ 0 が返ります.
-
Mouse()
[top] -
- マウス座標のチェック
- RXにX座標, RYにY座標, RZにシフトキー状態を返します.
- RZに返る値はシフトキーの状態により以下の値となります.
Shiftキー | 1 |
Altキー | 2 |
Ctrlキー | 4 |
マウス右ボタン | 8 |
マウス左ボタン | 16 |
-
Number( 式 )
[top] -
- 式1の内容の数値をテキストウインドウに表示します.
-
Char( 式 )
[top] -
- 1文字をテキストウインドウに出力します.
- 以下の文字コード(10進)はテキストウインドウで機能を持ちます.
9 | TAB | タブ |
12 | Form Feed | すべてクリア |
13 | CR | 改行(Linux版では13は10[LF に内部で変換されます.) |
18 | CAN | 現在行クリア |
-
Stringm( 式,定数)
[top] -
- 式の示す位置のデータメモリに格納された文字列をテキストウインドウに出力します.
-
String( "abc" )
[top] -
-
gNumber( 式 )
[top] -
- グラフィックウインドウへの文字列出力を行います.
- グラフィック文字列バッファ(2000文字分)は全インスタンスで
共有します.出力はバッファのカーソル位置に順次追加されます.
-
gChar(定数)
[top] -
- グラフィックウインドウへの文字出力を行います.
- グラフィック文字列バッファ(2000文字分)は全インスタンスで
共有します.出力はバッファのカーソル位置に順次追加されます.
-
gStringm( 式,定数)
[top] -
-
gString( "abc" )
[top] -
- カーソル(文字列位置)の文字列バッファに文字列を書き込みます.
- グラフィックウインドウへの文字列出力を行います.
- グラフィック文字列バッファ(2000文字分)は全インスタンスで
共有します.出力はバッファのカーソル位置に順次追加されます.
- カーソルは更新されます.
-
gColor( 式 )
[top] -
- グラフィックウインドウへの表示文字色を設定します.
- すべての文字の色が変化します.文字単位で色の設定はできません.
-
gClear()
[top] -
- グラフィックウインドウの文字列バッファ(2000文字分)のクリア
グラフィックウインドウに表示中のすべての文字を消去します.
-
gCursor( 式 )
[top] -
- グラフィックウインドウで次に描画される文字の位置を指定します.
- 字の位置の指定は0から1999の数値を設定します.
- 80文字x25行 = 2000 として左上を0とします.
-
gPosition()
[top] -
- グラフィックウインドウで次に描画される文字の位置を返します.
- 文字列の位置は0から1999の数値が返ります.
- 80文字x25行 = 2000 として左上を0とします.
-
gLine()
[top] -
- スクリーン(640x480)に直接描画する線分を登録します.
- 線分は100本までです.
- 以下のレジスタ変数に設定します.
RX | x0 始点 |
RY | y0 |
RZ | 色 |
RH | x1 終点 |
RP | y1 |
RB | ライン番号 (0 - 99) |
- 一度設定されたラインは消去または再設定されるまで表示されます.
- すでに設定されたライン番号を指定すると以前の設定は上書きされます.
-
gLineClear( 式 )
[top] -
-
Note( 定数, 定数, 定数 )
[top] -
- MIDI ノートオンにより音階出力
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
Midi( 定数, 定数, 定数 )
[top] -
- MIDIメッセージ出力 (0..127,0..127 )
(?はチャンネル番号) |
0x8? | ノ−トオフ |
0x9? | ノ−トオン |
0xA? | ポリフォニックキープレッシャー |
0xB? | コントロールチェンジ |
0xC? | プログラム(音色)チェンジ |
0xD? | チャンネルプレッシャー |
0xE? | ピッチホイールチェンジ |
0xF? | システムメッセージ |
- パラメータ不要の場合は0として下さい(省略不可).
- 詳細はMIDI規格を参照して下さい.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
NewObject( 定数1, 定数2 )
[top] -
- 頂点数, 面数を指定して「物体」を生成します.
- 頂点数, 面数は実際に使用する数より多くても問題ありませんが,
少ないとエラーが発生します.注意して下さい.
-
DefPoint( 定数, 定数, 定数 )
[top] -
- インスタンス所有の「物体」に頂点座標を追加します.
- 定数を指定, 実行時に指定するためには Point を用います.
- SetOffset, ClearOffset組込み関数によるオフセットが加算されます.
-
DefPlane( 式, 頂点数, 1, 2, 3, 4, 5 )
[top] -
- 式に「物体」の面の色を設定します.
- インスタンス所有の「物体」の面を定義します.
- 命令中に頂点数を保持します. 従ってパラメータ数は可変.
- パラメータ数が「物体」の頂点数と異なる場合の動作は不定
- 指定する頂点番号はVertexRelativeを使用した場合,VertexRelative後の
頂点番号は再度 0から始まります.
- 負の値を使用すると親の頂点を指定する事ができます.したがって
親の頂点番号0を指定することができません.0番頂点を指定する
必要がある場合にはダミー(使用しない)頂点を番号0として追加し
ます. 親の頂点番号の指定には VertexRelative の影響はなく,0から始ま
る頂点番号に単にマイナス符号をつけて指定します.
-
DeleteObject()
[top] -
- インスタンス所有「物体」の消滅
- DeleteObjectを実行した後,NewObjectで新たに物体を定義すること
ができます.
-
See()
[top] -
- Seeを実行した「物体」インスタンスが視点を持ちます.
- NewObjectを実行したインスタンスは,どれでも視点を持つこと
ができます.
-
Point()
[top] -
- 「物体」の頂点座標を定義します.(レジスタ変数RX,RY,RZにより指定)
- DefPointと同じですが, 実行時に頂点座標を定義することができます.
- SetOffset, ClearOffset組込み関数によるオフセットが加算されます.
-
Specular( 式 )
[top] -
- ポリゴンのスペキュラー(反射)の強度を指定します.
- この組込み関数の後に登録されるポリゴンのスペキュラーの強度を指定します.
- 初期値は100, 0で反射無し, 200で2倍の強度になります.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
Ambient( 式 )
[top] -
- ポリゴンの環境光強度 (光がない時の色) を指定します.
- この組込み関数の後に登録されるポリゴンの環境光強度を指定します.
- 初期値は 25, 0で黒, 100で最も明るくなります.
- J3W 4.43,6.43 以降でサポート.Version組込み関数でJ3Wの
バージョンを取得した上で使用するほうが安全です.
-
CountVertex()
[top] -
- 「物体」の登録済み頂点数を返します.
- 次に登録される頂点番号として使用できます.
-
Plane( 式 )
[top] -
-
Transpose()
[top] -
- 頂点全体のローカル座標系での平行移動による頂点座標の変更
レジスタ RX | X座標の移動量 |
レジスタ RY | Y座標の移動量 |
レジスタ RZ | Z座標の移動量 |
- 設計時と実行時の原点位置を変更できます.
-
VertexRelative()
[top] -
- この組込み関数の後に登録される頂点番号を0とします.
- 頂点と面をグループ化して組み合わせる場合に使用します.
- グループ化したい頂点登録の前に実行します.面の登録時の頂点
番号を0から開始することができます.
- DefPlane, Plane 組込み関数に影響しますが,親の頂点を指定する場合には
影響しません.親の頂点は VertexAbsoluteが指定されていると考えて下さい.
-
VertexAbsolute()
[top] -
- 「物体」の最初に登録された頂点番号を0とする.
- デフォルトではこの設定になっています.
- DefPlane, Plane 組込み関数の頂点指定に影響します.
-
SetOffset()
[top] -
- 頂点登録時のローカル座標系での頂点座標オフセットを設定します.
レジスタ変数 RX | X座標のオフセット |
レジスタ変数 RY | Y座標のオフセット |
レジスタ変数 RZ | Z座標のオフセット |
- この組込み関数の後,登録される頂点は登録する座標にオフセットが加算さ
れます.初期値は0に設定されています.
- DefPoit, Point 組込み関数に影響します.
- 同形の複数の形状を「物体」内に複数配置する場合など使用します.
-
ClearOffset()
[top] -
- 頂点登録時のローカル座標系での頂点座標オフセットを(0,0,0)と
設定します.
- DefPoit, Point 組込み関数に影響します.
-
GetPosition()
[top] -
- 親「物体」が存在すれば親座標系または親がなければワールド座標系
に対する「物体」の位置と姿勢をレジスタ変数に取得します.
レジスタ変数 RX | X座標 |
レジスタ変数 RY | Y座標 |
レジスタ変数 RZ | Z座標 |
レジスタ変数 RH | ヘッド角 |
レジスタ変数 RP | ピッチ角 |
レジスタ変数 RB | バンク角 |
-
SetPosition()
[top] -
- 親「物体」が存在すれば親座標系または親がなければワールド座標系
に対する「物体」の位置と姿勢をレジスタ変数から設定します.
レジスタ変数 RX | X座標 |
レジスタ変数 RY | Y座標 |
レジスタ変数 RZ | Z座標 |
レジスタ変数 RH | ヘッド角 |
レジスタ変数 RP | ピッチ角 |
レジスタ変数 RB | バンク角 |
-
Where( 式 )
[top] -
- 指定したインスタンスIDのインスタンスが持つ「物体」のワールド座標系に
対する位置と姿勢を取得します.
- 他インスタンスの位置と姿勢を取得できます.
レジスタ変数 RX | X座標 |
レジスタ変数 RY | Y座標 |
レジスタ変数 RZ | Z座標 |
レジスタ変数 RH | ヘッド角 |
レジスタ変数 RP | ピッチ角 |
レジスタ変数 RB | バンク角 |
-
Distance( 式 )
[top] -
- 現在のインスタンスの「物体」と指定したインスタンスIDのインスタンス
が持つ「物体」のワールド座標系における距離を求めます.
- 同じインスタンスIDが複数存在する場合は最も近いインスタンスの距離を取得
します.
レジスタ変数 RX | 距離が返ります. |
レジスタ変数 RY | インスタンス管理番号が返ります.(SENDTOで使用) |
レジスタ変数 RZ | 同一IDのインスタンスの数が返ります. |
- 距離が−1の場合は指定IDのインスタンスは存在しません.
-
Priority( 式 )
[top] -
- ポリゴンのデプスソート時のオフセットを指定します.
- 同一インスタンス内でこの指定の後,登録されるポリゴンはデプスソート時
に,ここで指定された値が加算されます.何度も再指定可能です.
デプスソートはポリゴンの重心位置でソートされるため,地面のように
必ず最低の表示順位としたい場合に不都合が生じる場合があります.
最低の順位は遠方クリッピングの4000000を指定すれば,必ず最も遠く
に表示されます.地面上の道路等は,たとえば2000000とすれば良いで
しょう.
- 数値指定では符号付き16ビット整数のみが指定可能なため,上記の
値を設定するにはレジスタに代入後,レジスタ指定する必要があります.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
Relative0( 式 )
[top] -
- 現インスタンスのローカル座標系からみたインスタンスidの「物体」の座標(x,y,z)
をRX, RY, RZに返し,角度をRH(ヘッド角), RP(ピッチ角)に返します.
RBには0が返ります.
- インスタンスidの「物体」が存在しない場合,RX,RY,RZ,RH,RPは保存され,
RBには1が返ります.
- 座標を指定して,その座標をローカル座標系に変換する目的で使用します.
そのため一時的に位置をずらしての座標変換を可能にするため,SetPosition
で瞬間的に移動した場合でも移動後の値が使用されます.
レジスタ変数 RX | X座標 |
レジスタ変数 RY | Y座標 |
レジスタ変数 RZ | Z座標 |
レジスタ変数 RH | ヘッド角 |
レジスタ変数 RP | ピッチ角 |
レジスタ変数 RB | 0または1 |
-
Look( 式 )
[top] -
- ワールド座標系からみたインスタンスIDの「物体」への角度を
RH(ヘッド角), RP(ピッチ角)に返します.RBには0が返ります.
- インスタンスIDの「物体」が存在しない場合,RH,RPは保存され,
RBには1が返ります.
レジスタ変数 RH | ヘッド角 |
レジスタ変数 RP | ピッチ角 |
レジスタ変数 RB | 0または1 |
-
Relative()
[top] -
- RX, RY, RZ に設定したワールド座標系の座標(x,y,z)を現インスタンスの
ローカル座標系からみた値に変換してRX, RY, RZに返し,角度をRH
(ヘッド角), RP(ピッチ角)に返します. RBには0が返ります.
レジスタ変数 RX | X座標 |
レジスタ変数 RY | Y座標 |
レジスタ変数 RZ | Z座標 |
レジスタ変数 RH | ヘッド角 |
レジスタ変数 RP | ピッチ角 |
レジスタ変数 RB | 0 |
-
FindVertex()
[top] -
- RPに指定されたインスタンスIDのインスタンスを検索し,もし存在すれば
「物体」を持つかチェックする.もし存在すればその「物体」
の各頂点に対してRX,RY,RZとの距離を求め,最も小さくなる頂点番号をRH,
距離をRBに返します.エラーならばRBに負の値を返します.
-
SetVertex()
[top] -
- RPに指定したインスタンスIDの頂点番号RHの頂点座標(ローカル)を
RX,RY,RZの値に置換する.
- 「物体」が存在しなければRBに−1,存在すれば0が返ります.
- 頂点番号が不正ならば何もしない.RBは0が返ります.
-
GetVertex()
[top] -
- RPに指定したインスタンスIDの頂点番号RHの頂点座標(ローカル)を
- RX,RY,RZに取得する.
- 「物体」が存在しなければRBに−1,存在すれば0が返ります.
- 頂点番号が不正ならばRX,RY,RZ,RBは0が返ります.
-
SetPlane()
[top] -
-
GetPlane()
[top] -
-
SetScale()
[top] -
- 物体インスタンスの縮尺を設定します.
- RX, RY, RZ に各軸の絶対縮尺(1000が等倍)を設定します.
例えば 800で標準の縮尺の80%に設定されます.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
GetScale()
[top] -
- 物体インスタンスの現在の縮尺をRX, RY, RZ に取得します.
- RX, RY, RZ には各軸の縮尺(1000倍した値)が返ります.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
SystemTime()
[top] -
- システム時間をミリ秒単位で関数の値として返します.
- PAUSE中でも時間は経過します.
-
SystemCount()
[top] -
- インスタンス実行ループの起動時からのループ回数を関数の値として返します.
- グラフィックウインドウの総書き換え回数+α(グラフィックウイン
ドウオープン前のループ回数)となり,FPSの計算に使用できます.
-
SystemProcess()
[top] -
- 現在存在するインスタンス数を関数の値として返します.
-
CommonData( 式, データ数, 2, 3, 4, 5 )
[top] -
- 式に共有メモリのアドレスを設定します.
- データを共有メモリのアドレスに書き込みます.
- データ数は可変です.
- データ数が実際のデータの個数と異なる場合の動作は不定
- 共有メモリを初期設定する場合に使用します.
-
Write( "abc" )
[top] -
- 共有メモリの内容を32bit符号付き10進数でファイルに書き込みます.
- RXレジスタに読み出す共有メモリの先頭アドレスを設定します.
- データ数をRYに設定します.
- エラーのときはRYに0が返ります.
-
Read( "abc" )
[top] -
- 32bit符号付き10進数のファイルを共有メモリに読み込みます.
- RXレジスタに書き込む共有メモリの先頭アドレスを設定します.
- データ数をRYに返します.
- エラーのときはRYに0が返ります.
-
Light( 式 )
[top] -
- 光源の強度 (0 - 100)を式1に指定します.
- 方向を以下のレジスタ変数に設定します.
RH | 方向 X成分 ( 0 - 100 ) 方向は相対値 内部で正規化される |
RP | 方向 Y成分 ( 0 - 100 ) |
RB | 方向 Z成分 ( 0 - 100 ) |
- 光源の以前の設定は上書きされます.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
NumColors()
[top] -
- シェイディング可能な色数を関数の値として返します.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
NumShading()
[top] -
- 1色あたりのシェイディング段数を関数の値として返します.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
VertexCount()
[top] -
-
PolygonCount()
[top] -
- システムに登録されている総ポリゴン数を関数の値として返します.
総ポリゴン数はDefPlaneまたはPlaneで登録された数を示します.
-
SetColor( 式 )
[top] -
- 式1に設定した色番号の色をRX-RBに指定した色に設定します.
- 以下のレジスタ変数に設定します.
RX | 拡散光 赤成分 ( 0 - 255 ) 光源から照明された場合の色 |
RY | 拡散光 緑成分 ( 0 - 255 ) |
RZ | 拡散光 青成分 ( 0 - 255 ) |
RH | 周辺光 赤成分 ( 0 - 255 ) 光源から照明されない場合の色 |
RP | 周辺光 緑成分 ( 0 - 255 ) |
RB | 周辺光 青成分 ( 0 - 255 ) |
光源の影響を受けない色にするには RX-RZを0に設定します.
- 以前の設定は上書きされます.
- グラフィックモードの時のみ有効です.
-
ResetColor()
[top] -
-
Version()
[top] -
- RXにJ3Wのメジャーバージョン,RYにマイナーバージョンを設定します.
- J3Wのバージョンに動作が依存します.Version組込み関数でJ3Wの
バージョンを取得した上で使用するようにして下さい.
-
not( 式 )
[top] -
-
sqrt( 式 )
[top] -
-
sin( 式 )
[top] -
- 式のサインを求める.角度は8倍したもの,
結果は10000倍したものが返ります.
-
cos( 式 )
[top] -
- 式のコサインを求める. 角度は8倍したもの,
結果は10000倍したものが返ります.
-
atan( 式1,式2 )
[top] -
- アークタンジェント
y/x のアークタンジェントを計算, yは式1に設定し
ます.結果の角度は8倍した値が返されます.
x と y が共に0にの場合は0が返ります.
-
Random( 式 )
[top] -
- 0から式の値−1までの値の乱数を関数の値として返します.
- 負の値を指定した場合は値の絶対値が乱数のシードとなり,
その後の乱数系列が変化します.
-
ClearRegisters()
[top] -
- レジスタ変数(RX, RY, RZ, RH, RP, RB)をすべて0に設定します.
-
PushRegisters()
[top] -
- レジスタ変数(RX, RY, RZ, RH, RP, RB)をすべてスタックに格納
します.格納順は RX, RY, RZ, RH, RP, RB の順です.
-
PopRegisters()
[top] -
- レジスタ変数(RX, RY, RZ, RH, RP, RB)をスタックから取り出し
ます.取り出す順序は RB, RP, RH, RZ, RY, RX の順です.
-
GetCommon( 式 )
[top] -
-
SetCommon( 式1,式2 )
[top] -
[J3Cの言語仕様]
[J3Cプログラミング入門]
[J3CとJ3Wの命令対応表]
[INDEX]
ご意見・ご感想は,mizutani.jun@nifty.ne.jp
まで.