続、VRML(20051015)


いやー、VRML、気に入っちゃったなぁ。
何と言っても、「タダ」ってところが。
とゆーのも、このおじさんは札幌万博横軽で大散財した結果、目下、大金欠になっていたりするのだった。(-_-)事前にしっかり計画しろ。

さて、車両を作ったら、次は線路だ。
図 線路のモデル(クリックでVRMLを表示)
一応、KATOの固定式線路、S124、直線124mm相当のつもり。
でも、枕木の数は2個少ないし、いろいろ手抜きも。

ちなみに今回、枕木などのコピーには、「GROUP」「DEF」「USE」の代わりに「PROTO」を使ってみたり。
「PROTO」は、表示をさせずに定義だけ出来るので、使い回しが便利。
#↓定義
PROTO AAA [
    field SFVec3f position 0 0 0
]
{
  Transform {
    translation IS position
    children [

      Shape { 
        ・
        ・
      }

    ]
  }
}
#↑定義

#↓使用
AAA{
  position xxx zzz -yyy
}
#↑使用
→リスト

ついでに、コキ10000も「PROTO」を使って書き直してみたり。
ご興味のある方は比較など、どうぞ。
→リスト
さらに、ついでに、コンテナの脚をびみょーに小さくしていたり。

で、線路に車両を載せると、こんな感じ。
図 線路と車両のモデル(クリックでVRMLを表示)
やっぱり、車両の下には線路がないとね。
→リスト

視点を変えて眺めると、うひゃー、ス・テ・キ。(-_-)自画自賛。
コンテナの脚をびみょーに小さくした効果が、って、わかる?
図 線路と車両のモデル(クリックでVRMLを表示)
ちなみに、この視線方向、ゲットできて、ちょっとうれしかったり。
#視点を設定する
Viewpoint { 
position       -0.1 0.01 0         #視点の位置
orientation    0 1 0 -1.5707963268 #視線の方向(右)
}

ここに至る、長く険しい道。ベクトルとか、チョー苦手だし。
図 回転軸と回転角
二つのベクトルv1=(x1 y1 z1)、v2=(x2 y2 z2)が直交する時
v1・v2=x1・x2+y1・y2+z1・z2=0

よって
x・0+y・1+z・(-1)=y−z=0
x・1+y・0+z・1=x+z=0

x=-1あるいは1とすると回転軸は
(-1 1 1)または(1 -1 -1)

また、二つのベクトルの角度θ12は
cosθ12=v1・v2/(|v1|・|v2|)

よって
cosθ=(0・1+1・0+(-1)・1)/(√2・√2)=-1/2

すなわち
θ=120度(2.0943951ラジアン)または-120度(-2.0943951ラジアン)
正解かどうかは知らないが、それほど外れてはいないよーな気が。

さて、面倒な話は、それぐらいにして。
VRMLで作った線路や車両は、当然、簡単にコピーが出来るのだった。
とゆーことは、20両の長大編成なんぞも、思いのままだったり。
図 線路と車両のモデル(クリックでVRMLを表示)
あっはっは、いやー、オイシイっす。
→リスト

調子に乗って、次は、一気に、これを5編成、〆て100両だーっ。ほほーい。
って、やってみたら、およよ。待てども待てども表示されない。(-_-)死んだか。
図 線路と車両のモデル(クリックでVRMLを表示)
結局、表示するのに20分もかかってしまったり。
→リスト

ちっ、広大なコンテナヤードに手が届いた、と思ったのにーっ、惜しい。


追記(20051023)

>正解かどうかは知らないが、それほど外れてはいないよーな気が。
ある条件の場合だけに使える解法のよう。
視線方向と視野の上方向の角度、向き、大きさが同じとか。
先は長いのだった。


追記(20211017)

フツーのXYZ座標系とVRMLのXYZ座標系が違う、という衝撃(笑撃?)的事実に基づき、座標系を変更。
ついでに、長年シカトして放置していた、距離の値をメートル基準に変更。
続いて、2題目。よく考えると、これって、波及先がすごく多くネ?(-_-)すでに遅し。


トップ /前ページ /次ページ