放課後は 第二螺旋階段で

モバイルでは下部のカテゴリ一覧を御覧ください。カテゴリタグによる記事分類整理に力を入れています。ネタバレへの配慮等は基本的にありません。筆者の気の向くままに書き連ねアーカイブするクラシックスタイルのなんでもblog。「どうなるもこうなるも、なるようにしかならないのでは?」

剛体シミュレータの解説でたのでメモ

無茶苦茶長いメモなので続きを読む記法使います。


97 名前:なまえをいれてください 投稿日:05/03/01 20:16:15 ID:k+i3poND
でも、このシミュレータは本当に楽しいですね。
ヘリを作ろうと頑張ってます。
ただ、Val{ }に書く変数の中の値(default,min,max,step)がよくわかりません。
minやmaxは、負と正の限界稼動範囲でしょうか。でもそうなるとstepは?という疑問が。
Key{ }にはキーに対応した数字と出力を書く。というのは見てわかるんですが。
それにbreakの勝手が…空中でのバランス保持は…ってわからないことだらけです。

あまり技術板の方達に迷惑かけてもあれなので、こっちで質問しちゃいました('Д`*)ィィヵィ?



101 名前:学生 投稿日:05/03/01 21:20:39 id:zOxvoNAp
おじゃまします。
Valの中のstepはキー操作で値が変えられた後、少しずつdefaultの値に
戻ろうとする「少しずつ」の値です。Keyのstepは少しずつ変数を変化させる値です。
Valのstepが0だとキーを離しても値が保持されます。
breakはモーターを止める力です。単純にブレーキです。単位は...忘れました。


110 名前:なまえをいれてください 投稿日:05/03/01 23:56:02 ID:5AXxOcM2
key{ }の部分がキー操作なのかな?
プログラムをやらない人間にはよくわからないな・・・


112 名前:なまえをいれてください 投稿日:05/03/02 00:04:53 id:JLT+8C+d
>>110
KEYはキー操作に対する変動量
VALで動きの上限、下限、減衰量の設定

両方合わせてキー操作ってとこかな。


114 名前:なまえをいれてください 投稿日:05/03/02 00:12:53 id:JLT+8C+d
Val
{
Handle(default=0,min=-20,max=20,step=5)
}
Key
{
2:Handle(step=-0.5)
3:Handle(step=0.5)
}

例えば、コレだとハンドルの切れ角初期値0度、最大20度、最小20度
キー入力がないと0度に向かって5度ずつ戻る。
2(左カーソルキー)が押されてる間、-20度に向かって-0.5度ずつ切れる
3(右カーソルキー)が押されてる間、20度に向かって0.5度ずつ切れる

BODYの辺りはまだ試行錯誤中…


124 名前:なまえをいれてください 投稿日:05/03/02 00:52:58 id:JLT+8C+d
Body {
Core(){
N:Chip(){
N:Rudder(angle=Handle){
W:Frame(){
W:Wheel(angle=90,break=Break){

bodyも大体判ってきたんで解説
↑だと…

コア→コアの北方向にチップをひとつ→北方向にXジョイント(切れ角はhandleの数値)
西方向にフレーム→西方向にタイヤ(90度曲げる、ブレーキはブレーキの数値

{}の入れ子でつく位置が変わるんで、その辺は感覚で(ぉ


140 名前:学生 投稿日:05/03/02 17:32:20 ID:Do/4g3rf
とりあえず、関数一覧です
ttp://modan.hp.infoseek.co.jp/cgi-bin/img-box/img20050302172908.txt
CCDカメラは16ビットモードでないと動きません。


スクリプト関数一覧
_DT() //シミュレーションdt
_FPS() //Frame Per Second
_TICKS() // 描画フレーム数
_KEY(キー番号)//押されているかのチェック(0/1)
_CHIPS() //全体のチップの数(wheel系は中にリムが入っているので2つでカウント)
_WEIGHT() //全体の重さ(kg)
_WIDTH() //画面の幅
_HEIGHTt() //画面の高さ
_FACE() //地形データのポリゴン数

//チップ属性(チップ番号=0がコア)
_X(チップ番号) //位置
_Y(チップ番号)
_Z(チップ番号)
_AX(チップ番号) //角度
_AY(チップ番号)
_AZ(チップ番号)
_LX(チップ番号)//角運動量
_LY(チップ番号)
_LZ(チップ番号)
_VEL(チップ番号)//並進速度の絶対値
_VX(チップ番号) //並進速度
_VY(チップ番号)
_VZ(チップ番号)
_FX(チップ番号) //並進運動量
_FY(チップ番号)
_FZ(チップ番号)
_WX(チップ番号) //角速度
_WY(チップ番号)
_WZ(チップ番号)

//CCDカメラ(64x64ドット)
_CCD(x,y) //CCDカメラの色情報(x,y)15ビットRGB整数値
_RED(x,y) //CCDカメラの赤情報(x,y)0〜1実数値
_GREEN(x,y) //CCDカメラの緑情報(x,y)0〜1実数値
_BLUE(x,y) //CCDカメラの青情報(x,y)0〜1実数値
//算術関数
_PI() //π
_SQRT(値)
_SIN(値)
_COS(値)
_TAN(値)
_SGN(値)
_RND() //乱数0〜1
_TODEG(ラジアン)
_TORAD(度)
_ASIN(値)
_ACOS(値)
_ATAN(値)
_ATAN2(値1,値2)
_POW(値)
_EXP(値)
_INT(値)
_FIX(値)
_FLOOR(値)
_CEIL(値)
_LOG(値)
_LOG10(値)
_LEN3(a,b,c) //sqrt(a*a+b*b+c*c)
_LEN2(a,b) //sqrt(a*a+b*b)
_ABS(値)
_MOD(値1,値2)


//BasicCar<//の部分はコメントアウト(モデルには関係なし)
Val<これは設定値の設定
ここから{<括ってある物が影響される
| Break<設定名(default=0<初期値,min=0<最小値,max=80<最大値,step=80<一度に増減する量)
| HBreak(default=0,min=0,max=100,step=100)
| Handle(default=0,min=-20,max=20,step=5)
| Engine(default=0,min=-2500,max=2500,step=2500)
ここまで}
Key<キーごとの設定値の変更量
ここから{<括ってある物が影響
| 0:Engine(step=-500)
| 数値0はキーボードの↑:変数Engineは上の設定値の物と同一(stepはボタンを押した時の設定値の増減量)
| 1:Engine(step=500)
| 数値1はキーボードの↓
| 2:Handle(step=-0.5)
| 数値2はキーボードの←
| 3:Handle(step=0.5)
| 数値3はキーボードの→
| 7:Break(step=30),HBreak(step=20)
| 8:HBreak(step=20)
| 4〜8はCXZDSA(ZXCASD?)
ここまで}
Body<ボディの設定(ようするに表示されるあれ。これが一番重要) {
Core()<コアこれがないと動かないとか動くとか{
N:Chip()<NはNorthernのN北にパーツがくっつくということ。Chipはパネルのこと()の中身は設定値{
N:Rudder<Rudderまぁハンドルに見えるの(angle=Handle)<angleようするに角度この場合設定値Handleと同じ数値である{
W:Frame()<WはWaist、西である。Freameは文字通りフレームだけのパネル{
W:Wheel<Wheelはタイヤのこと(angle=90,break=Break<ここで初登場のbreakこれはブレーキをかけるための数値上の設定値Breakを使うように設定されている){
}
}
E:Frame()<EはEast東である{
E:Wheel(angle=90,break=Break){
}
}
}
}
S:Chip()<SはSouth南のこと。{
W:Frame(){
W:Wheel(angle=90,power=Engine<やっと出てきたpowerタイヤなので回る力であるEngineの設定値分回る,break=HBreak){
}
}
E:Frame(){
E:Wheel(angle=90,power=-Engine,break=HBreak){
}
}
}
}
}
Script<こっから先はわかりません
{
print 0,"Welcome to Rigid-Chips World.
print 1," FPS=",_FPS()," Chips=",_CHIPS()," Weight=",_WEIGHT()
print 2," Width=",_WIDTH()," Height=",_HEIGHT()
print 3," Faces=",_FACE()
print 3," Vel=",_VEL()
print 4," R=",_RED(32,32)
print 5," G=",_GREEN(32,32)
print 6," B=",_BLUE(32,32)
}
Trim(){}はZジョイント
RLW(){}は無反動モーター(チートパーツ)

学生氏はこのソフトウェアの作者。