.phnファイルは、シーンとphunletを保存するために使用するファイル形式である。Beta4以降においてはThymeのコードと同じもので、クリップボードを介しこれをコピー&ペーストすることが出来る。

プレーンテキストなのでテキストエディタで編集することが出来るが、全て大文字と小文字を区別するので注意しなければならない。 この記事はPhunの開発とは無関係の者が執筆しているため、誤りを含んでいます。ご了承くださいませ。

Contents

ごく簡単な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
Copyright 2008 Algoryx Simulation