2001年8月17日 更新(Window2000->WINNT) 関谷トップページへ CG2001 トップページへ  

図形処理・計算処理実習2001 No.13 OpenGL(GLUT入門-1)

1. 前回のJavaグラフィックス(7)の復習とコメント

 第9回からは、テキストのJavaプログラムでの例題のファイル(サーバにコピーしたもの)を紹介した。index.htmlファイルが目次ページになっている。そこで、Javaでの実行画面例とjavaソースリストが見れる。前回までは、これを参照しながら、学習した。

第10章 Java3D

 Java3Dは、3次元グラフィックスや3次元アプレット、3次元ロゴを作成し、仮想空間を構築するためのAPIである。  Java2DはJava2のコアAPIに組み込まれていたが、Java3Dは拡張APIとして提供されている。

テキスト10章の解説を読み、例題を(コンパイルし、)実行してみる。それらの中で、皆さんの興味を持った例を解析し、改造しなさい。
レポートには、それらの中から、考察を行い、ハイパーリンクのこと。

前回の実習とWebレポートへのコメント

 Java3Dのプログラム機能とその構造を考察すること。(シーン・グラフによる仮想宇宙を作り、変換を行う。3つボタンのマウスでのインタラクティブプログラミング例が2つあった。
 そして、第10章のJavaプログラムの改造をする。あるいは、逆の順序でも良いが。

 Java3Dアプリケーションからアプレットプログラムへの変換は、簡単である。(もともと、appletクラスを継承してMainFrameを作っているのだから。)
ただし、このアプレットはWebブラウザでは、plug-inを使うようにしなければ動かない。(appletviewerなら、Java3Dをインストールした環境で動く。)

 皆さんのWebページのアップロードが未完であるので、残念である。前期で図形処理の授業が終わるので、9月末までに、これまでの整理をすること。  

2.今日の学習-OpenGL(GLUT入門-その1)

この授業でのテキストは、以下のWebページを使わせていただく。
GLUTによる「手抜き」OpenGL入門 和歌山大学システム工学部 床井浩平

1.2 なぜOpenGLか?

 テキストによると、OpenGLは、シリコングラフィックス社(以下 SGI)が開発した、 Java3Dの元になったプラットフォームを選ばない3次元のグラフィックスライブラリである。(関谷のコメント:例えば、Windows用グラフィックスライブラリでは、DirectXなどがある。)

1.1 なぜ GLUT か

OpenGLは、OS に依存しない3次元のグラフィックスライブラリ (API) です。でも、この「OS に依存しない」というところが実は曲者で、ウィンドウを開いたりウィンドウマネージャと通信したりするところは、ちゃんとそれぞれの流儀に則って、 OS やウィンドウシステムにお願いしないといけません。
 ここが、相当にやっかいで、そこをサポートしているのがGLUTです。
(関谷のコメント:WindowsプログラミングでのSLS-このCGの最初の5回で使用-は、Windowsでしか使えないが、ウィンドウを開いて、線を引いたり文字を書くための簡単に使える基本グラフィックライブラリである。)

2.1 GLUT を入手する

 最新版を入手して、解凍したものをファイルサーバread\Archive\glut-3.7.2-dllsにコピーしている。

2.3 Windows にインストールする

 テキストにあるように解凍後の3つのファイルをそれぞれ各自のローカルのフォルダにコピーする。(注:この教室のWindows2000Proでは、パワーユーザでないとコピー出来ないようにアクセス権が設定してある。)

glut.h
コンパイラのヘッダファイルのパス (C:\Program Files\Microsoft Visual Studio\VC98\include\gl )
glut32.lib
コンパイラのライブラリのパス (C:\Program Files\Microsoft Visual Studio\VC98\lib)
glut32.dll
システムのディレクトリ (C:\WINNT\system)

3.コンパイルの仕方 3.2 Windows (VC++) の場合

 コマンドラインでコンパイルする場合は、vcvars32.batで、コンパイラへのpathをセットすれば、これまでと同じclコマンドでコンパイルできる。

OpenGL, glutのドキュメント

OpenGL(英文)のドキュメント

 テキストでは、manコマンドで、APIのドキュメントを調べるようになっている。この教室-Windows2000-では、OpenGL(glXxxxx)について、2つの検索が出来る。
(1)Visual Studio 6.0のMSDNライブラリで調べる。その方法は、スタートボタンからプログラム→Microsoft Developer NetworkをポイントしてMSDNライブラリVisual Studio 6.0をクリックする。あるいは、VC++を起動してのソースリストエディタで、調べたい単語を選択して、F1キーを押せば、英文の説明がある。
(左上の「アクティブ サブセット」を<*Visual C++,SDK,エンタープライズドキュメント>にすること。)
(2)これも英文だが、OepnGL の man ページの HTML 版を見る。
http://trant.sgi.com/opengl/docs/man_pages/hardcopy/GL/html/gl/Index of /opengl/docs/man_pages/hardcopy/GL/html/gl/
ここでは、ページが分類されているので、自分で探す必要がある。(glの次の文字列による。)

glut(日本語)のドキュメント

 GLUT ガイド日本語版(/usr/share/GLUT/glutspec.ps の訳)は、glutのapiなどを詳しく説明している。

OpenGL関連のWebサイト

 GoogleでOpenGLを検索するとたくさんある。授業で使わせてもらうページのほかの幾つかを紹介する。

  • OpenGL_Japan:OpenGL及び三次元CG関連技術の最新情報の提供と普及活動を目的とした、中立、非営利の任意団体です。
  • OpenGLプログラミングコース株式会社エヌ・ケー・エクサ様ご提供 OpenGL 教育コースのテキストを3次元コンピュータグラフィックス技術の普及に貢献することを 目的に無償 で公開しています。
  • OpenGL (3D グラフィックス) http://www.nara-edu.ac.jp/~asait/でのプログラミングにあるページです。
  • OpenGL リソースのページ
  • 稚内北星学園短期大学 2000年度 グラフィックス理論/プログラミング講義録 門間穣司が行った、OpenGLによる3Dグラフィックスプログラミングを扱った講義の内容です。
  • 4.ウィンドウを開く

     これから、和歌山大学システム工学部 床井先生のWebテキストを参照して、GlutによるOpenGLプログラミングを学習しよう
     例題のソースプログラムは、Webページで選択・コピーし、秀丸などのエディタに貼り付けて、「名前を付けて保存」し、コマンドラインでのコンパイル・リンクclと実行をする。次々と、機能を追加していくが、途中のプログラムを保存したければ、「名前を付けて保存」で、新しい名前を付ければ良い。
     実習としては、それぞれのソースプログラムに、ファイル名、プログラム名、作成日、氏名や、考察、プログラムのソース行の右側へのコメント追加などをして、そのソースを見れば、後でも分かるようにするのが望ましい。

      4.1 空のウィンドウを開く
      4.2 ウィンドウを塗りつぶす

    5.2次元図形を描く

      5.1 線を引く
    
      5.2 図形のタイプ
    
      5.3 線に色を付ける
    
      5.4 図形を塗りつぶす
          (注)このプログラムは、8節で使うので、コピーを作っておくこと。
            >copy prog1.c prog2.c
             (あるいは、エクスプローラなどを使っても良いが。)
             
      5.5 関数の命名法

    6.座標軸を設定する

      6.1 座標軸とビューポート
    
      6.2 位置やサイズを指定してウィンドウを開く

    7.マウスとキーボード

      7.1 マウスボタンをクリックする
    
      7.2 マウスをドラッグする

     ラバーバンドを描く際,消えずにラバーバンドが残ってしまう場合は、glEnable() / glDisable() において GL_LOGIC_OP の代りに GL_COLOR_LOGIC_OP を使ってみてください。
    (ラバーバンドを残して、線の色を変えるには:motion(){}の新しいラバーバンドを描くところで、5.3 線に色を付けるのglColor3d()のr、g、bの成分の比を変えてやることになる。

     
    
      7.3 キーボードから読み込む
    

    3 実習課題とレポート

    テキストの例題とその解説を読み、例題をコンパイルし、実行してみる。
    それらの中で、皆さんの興味を持った例を解析し、改造して、各自の作品を作りなさい。
     レポートには、それらの中から、考察を行い、ハイパーリンクのこと。(残念ながら、Webでは実行できない。実行画面をPrintScreenで取り込み、ペイントなどで圧縮したものを表示すること。)