第2回 コンピュータグラフィクス演習(遠隔講義)
VRMLプログラムの基礎


 

講義に関する質問について

この授業について質問がある場合は、hemmi@sun.ac.jp までメールで問い合わせてください。
その際、件名は 「コンピュータグラフィクス演習の講義について(2)」 としてください。

 



【注意】ブラウザは Internet Explorer を使っていますか?
 


座標系について  

VRMLの座標系はShadeと同じ右手座標系です(コンピュータグラフィクスの講義で習いましたね)。
初期状態(プログラムで視点を指定しなければ)での視点の位置は(0, 0, 10)となっています。
図中の●印が視点です。
●印から向こう向き(奥方向)にCGを見ることになります。

初期状態でCGは原点に表示されます(プログラムで物体の位置を指定しなければ原点に表示されます)。

 



●プログラムの作り方

(1)エディタ(メモ帳でかまいません)でプログラムを入力する。

(2)ファイルを保存 → 拡張子を .wrl (ドットwrl)とする

 【例】kadai.wrl


プログラム作成時には若干注意することがあります。こちらを参照してください。 

 


●プログラムの実行方法

ファイルをダブルクリックする。
(cortona3D Viewerがインストールされていれば、ダブルクリックするだけで自動的に実行される)

 

【例題】次のサンプルを実行しなさい(エディタにペーストして実行してください)。
ファイル名は、sample.wrl としましょう。

#VRML V2.0 utf8
#sample.wrl
Shape{ 
    appearance Appearance{ 
        material Material{ } 
    }
    geometry Box{ }

}
 

 

 


ノードとフィールド

VRMLの文法では、ノードとフィールドを定義するように規定されています。
ノードとフィールドの意味は、プログラムを作っていくうちにわかってくると思いますので、ここでは「大文字で始まるか」、「小文字で始まるか」の違いだけを覚えておいてください。

 ノード: 命令(大文字で始まる)
 フィールド: 属性を設定する(小文字で始まる)
 


コメントについて

# の右側はコメントとなります(無視されます)。
 


基本図形(プリミティブ)

3DCGの作成では基本図形(プリミティブと呼びます)を組み合わせてCGを作ります。VRMLの基本図形は、球、直方体、円すい、円柱、文字、です。

これらを作る時の文法を学びましょう。
 

●球(Sphereノード) Shapeノードのgeometryに記述する

#VRML V2.0 utf8
Shape{
  geometry Sphere{
    radius 2.0 #半径
  }
}


実行例


●直方体(Boxノード) Shapeノードのgeometryに記述する

#VRML V2.0 utf8
Shape{
  geometry Box{
    size 5.0 3.0 2.0     # 幅、高さ、奥行き
  }
}


実行例


●円すい(Coneノード) Shapeノードのgeometryに記述する

#VRML V2.0 utf8
Shape{
  geometry Cone{
    bottomRadius 1.0     # 底面の半径
    height 3.0           # 高さ
  }
}


実行例 


●円柱(Cylinderノード) Shapeノードのgeometryに記述する

#VRML V2.0 utf8
Shape{
  geometry Cylinder{
    height 3.0           # 高さ
    radius 1.0           # 半径
  }
}


実行例


●文字列 Shapeノードのgeometryに記述する

#VRML V2.0 utf8
Shape{
  geometry Text{
    string ["3DCG"]      # 表示する文字列
  }
}


実行例

 


2時間目はここまでで終了です

12:00までに、ここまでの課題が終わったかどうかを返信してください。
返信は、LiveCampusの「授業連絡」から行ってください。
返信内容は、「終わった」または「終わらなかった」のいずれかとしてください。

【返信期限】 

2020年5月11日(月) 12:10
  

【返信方法】

LiveCampusの「授業連絡」から「返信」で行ってください。
 

【返信内容】

「終わった」または「終わらなかった」のいずれかで答えてください。

 
以上