.phnファイルは、シーンとphunletを保存するために使用するファイル形式である。Beta4以降においてはThymeのコードと同じもので、クリップボードを介しこれをコピー&ペーストすることが出来る。
プレーンテキストなのでテキストエディタで編集することが出来るが、全て大文字と小文字を区別するので注意しなければならない。
この記事はPhunの開発とは無関係の者が執筆しているため、誤りを含んでいます。ご了承くださいませ。
例
ごく簡単なphnファイルの一例
FileInfo.title = "file title"; //題名
FileInfo.author = "author"; //作者名
FileInfo.description = "short description"; //短い説明文
FileInfo.version = 2; //ファイルバージョン。バージョン1はβ版3.5以前のphnファイルで使用されていた
Sim.gravity = [0.0, -9.800000190734863]; //phnファイルの変数の例。
//どんなコンソールコマンドでも追加可能。
Scene.addCircle { //円を追加するコマンド
geomID = 2; //固有の図形ID。固定具、ヒンジ、ペンの設定に使われる
density = 5.248076438903809; //密度
entityID = 0; //実体ID。値が等しいオブジェクトは互いに結合されている
color = [0.0, 0.0, 0.0, 1.0]; //色
pos = [-7.451908588409424, 23.29408836364746]; //重心の座標
zDepth = 1.0; //オブジェクトの順番。重なり順
radius = 0.598817765712738; //円の半径
angle = -1.612239003181458 //オブジェクトの回転角度
};
Scene.addPlane {
entityID = 555;
color = [0.5377467274665833, 0.7011092305183411, 0.5186272263526917, 1.0];
pos = [0.0, -41.41909027099609];
angle = 1.570796370506287;
geomID = 12718670;
zDepth = 41.0
};
Scene.addGroup { //グループ化するコマンド
name = "selected"; //グループ名
entityIDs = [767] //実体IDのリスト
};
Scene.addGroup {
name = "tracked"; //"tracked"はオブジェクト(グループ)を追跡表示させるための特別な名前である
entityIDs = [358]
}
ファイルに記述しなかったThyme変数は初期値をとる。普通、Thyme変数はファイルの先頭に書く。
オブジェクトのプロパティ
ポリゴン
シーンにポリゴン(多角形)を追加する。ThymeコマンドはScene.addPolygon {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| geomID | 正の整数 | 不明 | 固有の図形ID。バネやヒンジを付けるために使用される
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| color | 4組の正の小数 | 不明 | RGBA値 [赤, 緑, 青, 不透明度]
|
| heteroCollide | trueまたはfalse | false | 衝突の設定が全く同じ図形同士は衝突しない
|
| collideWater | trueまたはfalse | true | 水と衝突する
|
| collideSet | 整数 | 1 | 衝突グループ。二進数の十進数表現で指定
|
| density | 正の小数 | 2.0 | 密度
|
| friction | 正の小数 | 0.5 | 摩擦係数
|
| restitution | 正の小数 | 0.5 | 反発係数
|
| airFrictionMult | 正の小数 | 1 | 空気抵抗における抗力係数
|
| pos | 2組の小数 | 参照 | 重心を配置する座標 [x,y]
|
| zDepth | 正の小数 | 不明 | 深度
|
| angle | 小数 | 0.0 | 角度
|
| vecs | 小数の2次元配列 | "" | このプロパティは必須です。ポリゴンの頂点座標のリスト [[x,y],[x,y],[x,y]…]
|
| forceController | 文字列 | "" | コントローラのキー "keys w d s a"など
|
| controllerAcc | 正の小数 | 10.8000002 | コントロールの加速度
|
| controllerReverseXY | trueまたはfalse | false | コントローラの縦横を交換する
|
| controllerInvertX | trueまたはfalse | false | コントローラの左右操作を逆転
|
| controllerInvertY | trueまたはfalse | false | コントローラの上下操作を逆転
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
円
シーンに円を追加する。ThymeコマンドはScene.addCircle {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| geomID | 正の整数 | 不明 | 固有の図形ID。バネやヒンジを付けるために使用される
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| color | 4組の正の小数 | 不明 | RGBA値 [赤, 緑, 青, 不透明度]
|
| heteroCollide | trueまたはfalse | false | 衝突の設定が全く同じ図形同士は衝突しない
|
| collideWater | trueまたはfalse | true | 水と衝突する
|
| collideSet | 整数 | 1 | 衝突グループ。二進数の十進数表現で指定
|
| density | 正の小数 | 2.0 | 密度
|
| friction | 正の小数 | 0.5 | 摩擦係数
|
| restitution | 正の小数 | 0.5 | 反発係数
|
| airFrictionMult | 正の小数 | 1 | 空気抵抗における抗力係数
|
| radius | 正の小数 | 1.0 | 円の半径
|
| pos | 2組の小数 | 参照 | 重心を配置する座標 [x,y]
|
| zDepth | 正の小数 | 不明 | 深度
|
| angle | 小数 | 0.0 | 角度
|
| forceController | 文字列 | "" | コントローラのキー "keys w d s a"など
|
| controllerAcc | 正の小数 | 10.8000002 | コントロールの加速度
|
| controllerReverseXY | trueまたはfalse | false | コントローラの縦横を交換する
|
| controllerInvertX | trueまたはfalse | false | コントローラの左右操作を逆転
|
| controllerInvertY | trueまたはfalse | false | コントローラの上下操作を逆転
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
ボックス
シーンにボックス(長方形)を追加する。ThymeコマンドはScene.addBox {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| geomID | 正の整数 | 不明 | 固有の図形ID。バネやヒンジを付けるために使用される
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| color | 4組の正の小数 | 不明 | RGBA値 [赤, 緑, 青, 不透明度]
|
| heteroCollide | trueまたはfalse | false | 衝突の設定が全く同じ図形同士は衝突しない
|
| collideWater | trueまたはfalse | true | 水と衝突する
|
| collideSet | 整数 | 1 | 衝突グループ。二進数の十進数表現で指定
|
| density | 正の小数 | 2.0 | 密度
|
| friction | 正の小数 | 0.5 | 摩擦係数
|
| restitution | 正の小数 | 0.5 | 反発係数
|
| airFrictionMult | 正の小数 | 1 | 空気抵抗における抗力係数
|
| size | 2組の正の小数 | [1.0, 1.0] | ボックスの大きさ [幅,高さ]
|
| pos | 2組の小数 | 参照 | 重心を配置する座標 [x,y]
|
| zDepth | 正の小数 | 不明 | 深度
|
| angle | 小数 | 0.0 | 角度
|
| forceController | 文字列 | "" | コントローラのキー "keys w d s a"など
|
| controllerAcc | 正の小数 | 10.8000002 | コントロールの加速度
|
| controllerReverseXY | trueまたはfalse | false | コントローラの縦横を交換する
|
| controllerInvertX | trueまたはfalse | false | コントローラの左右操作を逆転
|
| controllerInvertY | trueまたはfalse | false | コントローラの上下操作を逆転
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
平面
シーンに平面を追加する。ThymeコマンドはScene.addPlane {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| geomID | 正の整数 | 不明 | 固有の図形ID。バネやヒンジを付けるために使用される
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| color | 4組の正の小数 | 不明 | RGBA値 [赤, 緑, 青, 不透明度]
|
| heteroCollide | trueまたはfalse | false | 衝突の設定が全く同じ図形同士は衝突しない
|
| collideWater | trueまたはfalse | true | 水と衝突する
|
| collideSet | 整数 | 1 | 衝突グループ。二進数の十進数表現で指定
|
| friction | 正の小数 | 0.5 | 摩擦係数
|
| restitution | 正の小数 | 0.5 | 反発係数
|
| pos | 2組の小数 | 不明 | 平面の表面上の座標 [x,y]
|
| zDepth | 正の小数 | 不明 | 深度
|
| angle | 小数 | 0.0 | 角度
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
固定具
シーンに固定具を追加する。ThymeコマンドはScene.addFixjoint {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| pos | 2組の小数 | 参照 | 参照
|
| geom0pos | 2組の小数 | 不明 | 始端を接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| geom1pos | 2組の小数 | 不明 | 終端を接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| world0pos | 2組の小数 | 不明 | 不明 [x,y]
|
| color | 4組の正の小数 | [0.5, 0.5, 0.5, 1.0] | RGBA値 [赤, 緑, 青, 不透明度]
|
| size | 正の小数 | 0.100000001 | 固定具の大きさ(見た目だけ)
|
| zDepth | 正の小数 | 不明 | 深度
|
| geom0 | 正の整数 | 不明 | 始端を接続する図形の図形ID
|
| geom1 | 正の整数 | 不明 | 終端を接続する図形の図形ID
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
ヒンジ
シーンにヒンジ(蝶番)を追加する。ThymeコマンドはScene.addHinge {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| pos | 2組の小数 | 参照 | 参照
|
| geom0pos | 2組の小数 | 不明 | 始端を接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| geom1pos | 2組の小数 | 不明 | 終端を接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| world0pos | 2組の小数 | 不明 | 不明 [x,y]
|
| color | 4組の正の小数 | [0.5, 0.5, 0.5, 1.0] | RGBA値 [赤, 緑, 青, 不透明度]
|
| size | 正の小数 | 0.100000001 | ヒンジの大きさ(見た目だけ)
|
| motor | trueまたはfalse | false | モーター
|
| ccw | trueまたはfalse | false | モーターを反時計回りにする
|
| motorSpeed | 正の小数 | 1.57079637 | モーターの回転数
|
| motorTorque | 正の小数 | 100.0 | モーターのトルク
|
| autoBrake | trueまたはfalse | false | 自動ブレーキ
|
| distanceLimit | 正の小数 | +inf | 距離による耐久限界
|
| impulseLimit | 正の小数 | +inf | 力積による耐久限界
|
| zDepth | 正の小数 | 不明 | 深度
|
| geom0 | 正の整数 | 不明 | 始端を接続する図形の図形ID
|
| geom1 | 正の整数 | 不明 | 終端を接続する図形の図形ID
|
| buttonForward | 文字列 | "" | 前進キー。トグルの場合は先頭に「toggle」と付く
|
| buttonBack | 文字列 | "" | 後退キー。トグルの場合は先頭に「on toggle」と付く
|
| buttonBrake | 文字列 | "" | ブレーキキー。トグルの場合は先頭に「toggle」と付く
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
バネ
シーンにバネを追加する。ThymeコマンドはScene.addSpring {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| length | 正の小数 | 1.0 | バネの自然長
|
| dampingFactor | 正の小数 | 0.100000001 | バネの減衰率
|
| strengthFactor | 正の小数 | 0.0500000007 | バネの復元力
|
| pos | 2組の小数 | 参照 | 参照
|
| geom0pos | 2組の小数 | 不明 | 始端を接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| geom1pos | 2組の小数 | 不明 | 終端を接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| world0pos | 2組の小数 | 不明 | 不明 [x,y]
|
| color | 4組の正の小数 | [0.5, 0.5, 0.5, 1.0] | RGBA値 [赤, 緑, 青, 不透明度]
|
| size | 正の小数 | 0.100000001 | バネの太さ(見た目だけ)
|
| zDepth | 正の小数 | 不明 | 深度
|
| geom0 | 正の整数 | 不明 | 始端を接続する図形の図形ID
|
| geom1 | 正の整数 | 不明 | 終端を接続する図形の図形ID
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
ペン
シーンにペンを追加する。ThymeコマンドはScene.addPen {}
geomプロパティとrelPointプロパティが無い場合はposプロパティが必須です。
| プロパティ名
| 型
| デフォルト値
| 説明
|
| entityID | 正の整数 | 不明 | 実体ID。オブジェクトを識別するための値。グループ化の際に使われる。省略した場合はgeomIDと同じ値となる
|
| fadeTime | 正の小数 | 10.0 | ペンの残像時間
|
| relPoint | 2組の小数 | 不明 | ペンを接続する位置(接続する図形の重心を原点とした相対座標) [x,y]
|
| pos | 2組の小数 | 参照 | 参照
|
| color | 4組の正の小数 | ランダム | RGBA値 [赤, 緑, 青, 不透明度]
|
| size | 正の小数 | 0.100000001 | ペンの太さ(見た目だけ)
|
| zDepth | 正の小数 | 不明 | 深度
|
| geom | 正の整数 | 不明 | ペンを接続する図形の図形ID
|
| buttonMirror | 文字列 | "" | 鏡映キー
|
| buttonDestroy | 文字列 | "" | 削除キー
|
グループ
オブジェクトをグループ化する。ThymeコマンドはScene.addGroup {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| name | 文字列 | 不明 | グループ名。通常のグループは空文字だが、"selected"は選択中、"tracked"は追跡中の実体であることを示す。引用符は必須
|
| entityIDs | 正の整数の配列 | 不明 | グループに含まれる図形の実体IDのリスト [ID,ID,ID…]
|
水
シーンに水を追加する。ThymeコマンドはScene.addWater {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| vecs | 小数の2次元配列 | 不明 | 水の粒子の座標のリスト [[x,y],[x,y],[x,y]…]
|
色はThymeのApp.waterColor = [0.1, 0.1, 1.0, 0.7] という形式で変更可能。
ウィジェット
ウィジェット(ウィンドウ)を表示させる。ThymeコマンドはScene.addWidget {}
| プロパティ名
| 型
| デフォルト値
| 説明
|
| groupID | 文字列 | 不明 | グループID
|
| minimized | trueまたはfalse | 不明 | 最小化
|
| entityIDs | 正の整数の配列 | 不明 | 対象となる図形の実体IDのリスト [ID,ID,ID…]
|
| pos | 2組の小数 | 不明 | ウィジェットの位置 [x,y]
|
| widgetID | 文字列 | 不明 | ウィジェットの種類
|
| title | 文字列 | 不明 | タイトルバーに表示される文字
|
プロパティの説明
collideSet
collideSetプロパティは、オブジェクトがどの層で衝突するかを指定する。指定する値は、各層に割り当てられた数を合計することで定まる。
- A = 1
- B = 2
- C = 4
- D = 8
- E = 16
例えば、A,C,Eで衝突するオブジェクトの場合、1+4+16 だから、collideSetの値は21となる。
heteroCollide
図形の衝突設定の一種で、No selfcollisionのこと。Phunに特有の概念であり、ユーザの間ではnscと略されている。
nscの規則は混乱を招きやすいので注意が必要。
基本的には同じ衝突グループを共有している物体同士は衝突する。例外として「衝突するはずの物体でも、双方にnscが適応されていて かつ 衝突設定が全く同じ物体は衝突しなくなる」という規則がある。
以下の記述では、例えば[A + B + nsc]は「衝突グループAおよびBに属し、nscがtrueになっている物体」の意味。
【衝突する例】
[A] と [A]
[A + B] と [A]
[A + nsc] と [A] (片方にnscがないため、上記例外が適用されず衝突する)
[A + nsc] と [A + B + nsc] (双方にnscがあるが、衝突設定が異なるため、上記例外が適用されず衝突する)
【衝突しない例】
[A] と [B]
[A + nsc] と [A + nsc]
[A + B + nsc] と [A + B + nsc]
[A + B + nsc] と [C] (片方にnscがないが、もともと衝突しない)
color
色は[赤,緑,青,不透明度]の4つの値の配列として指定する。
値は0.0~1.0の範囲でとる(小数)。例えば赤は[1,0,0,1]で、緑なら[0,1,0,1]。
図形のcolorの記述がない場合はランダムで決定するらしい。 図形以外のオブジェクト(ヒンジなど)では、colorは記述がない場合[0.5, 0.5, 0.5, 1.0]がデフォルトとして使用される。
pos
コピー&ペーストでオブジェクトを配置した場合、マウスの位置がposの値になる。
バネ、固定具、ヒンジ、ペンのposはその位置にそれらのオブジェクトが配置される。
ただし、これら(図形以外のオブジェクト)のposはgeom1などの値を決めるために一時的に作成されるだけであり、通常の保存時には残らない。
固定具・ヒンジでは、そのposの位置に存在する図形のうち、上から2つの図形のgeomIDがgeom0,geom1の値になる。
ペンでは、そのposの位置に存在する図形のうち、一番上の図形のgeomIDが、geomになる。
tracked
古いファイルで使われていた名残として使用可能。tracked = trueが複数のオブジェクトに書かれている場合、最後のオブジェクトのみ有効
size
バネ、固定具、ヒンジ、ペンのsizeは、見た目のみに影響を与える。配置した際のズームの値に依存する。
body
0なら背景に固定、1以上なら同じ値の図形と結合される。この値が等しければ固定具がない場合でも固定される。
パラメータの一覧表
オブジェクトのパラメータを表にまとめました(グループ、水、ウィジェットを除く)。この表はβ4.22版のphnデータに関するものです。
| パラメータ
| 意味
| Polygon
| Circle
| Box
| Plane
| Fixate
| Hinge
| Spring
| Pen
|
| buttonDestroy | 削除キー | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| buttonMirror | 鏡映キー | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| color | 色 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| entityID | 実体ID | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| pos | 位置 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| tracked | カメラの追跡 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| zDepth | 深度 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
|
| angle | 角度 | ○ | ○ | ○ | ○ | | | |
|
| collideSet | 衝突グループ設定 | ○ | ○ | ○ | ○ | | | |
|
| collideWater | 水との衝突設定 | ○ | ○ | ○ | ○ | | | |
|
| friction | 摩擦係数 | ○ | ○ | ○ | ○ | | | |
|
| geomID | 図形ID | ○ | ○ | ○ | ○ | | | |
|
| heteroCollide | NSC | ○ | ○ | ○ | ○ | | | |
|
| restitution | 反発係数 | ○ | ○ | ○ | ○ | | | |
|
| body | body | ○ | ○ | ○ | | | | |
|
| airFrictionMult | 空気抵抗係数 | ○ | ○ | ○ | | | | |
|
| controllerAcc | コントローラの加速度 | ○ | ○ | ○ | | | | |
|
| controllerInvertX | 〃左右操作を逆転 | ○ | ○ | ○ | | | | |
|
| controllerInvertY | 〃上下操作を逆転 | ○ | ○ | ○ | | | | |
|
| controllerReverseXY | 〃左右上下を逆転 | ○ | ○ | ○ | | | | |
|
| density | 比重 | ○ | ○ | ○ | | | | |
|
| forceController | コントローラのキー | ○ | ○ | ○ | | | | |
|
| vecs | 頂点の座標のリスト | ○ | | | | | | |
|
| radius | 円の半径 | | ○ | | | | | |
|
| size | サイズ(ボックス) | | | ○ | | | | |
|
| size | サイズ | | | | | ○ | ○ | ○ | ○
|
| geom0 | | | | | | ○ | ○ | ○ |
|
| geom0pos | | | | | | ○ | ○ | ○ |
|
| geom1 | | | | | | ○ | ○ | ○ |
|
| geom1pos | | | | | | ○ | ○ | ○ |
|
| world0pos | | | | | | ○ | ○ | ○ |
|
| autoBrake | | | | | | | ○ | |
|
| buttonBack | | | | | | | ○ | |
|
| buttonBrake | | | | | | | ○ | |
|
| buttonForward | | | | | | | ○ | |
|
| ccw | | | | | | | ○ | |
|
| distanceLimit | | | | | | | ○ | |
|
| impulseLimit | | | | | | | ○ | |
|
| motor | | | | | | | ○ | |
|
| motorSpeed | | | | | | | ○ | |
|
| motorTorque | | | | | | | ○ | |
|
| dampingFactor | | | | | | | | ○ |
|
| length | | | | | | | | ○ |
|
| strengthFactor | | | | | | | | ○ |
|
| geom | | | | | | | | | ○
|
| fadeTime | | | | | | | | | ○
|
| relPoint | | | | | | | | | ○
|
Last modified January 28, 2009 6:39 am