第9回からは、テキストのJavaプログラムでの例題のファイル(サーバにコピーしたもの)を紹介した。index.htmlファイルが目次ページになっている。そこで、Javaでの実行画面例とjavaソースリストが見れる。前回までは、これを参照しながら、学習した。
Java3Dは、3次元グラフィックスや3次元アプレット、3次元ロゴを作成し、仮想空間を構築するためのAPIである。 Java2DはJava2のコアAPIに組み込まれていたが、Java3Dは拡張APIとして提供されている。
テキスト10章の解説を読み、例題を(コンパイルし、)実行してみる。それらの中で、皆さんの興味を持った例を解析し、改造しなさい。
レポートには、それらの中から、考察を行い、ハイパーリンクのこと。
Java3Dのプログラム機能とその構造を考察すること。(シーン・グラフによる仮想宇宙を作り、変換を行う。3つボタンのマウスでのインタラクティブプログラミング例が2つあった。
そして、第10章のJavaプログラムの改造をする。あるいは、逆の順序でも良いが。
Java3Dアプリケーションからアプレットプログラムへの変換は、簡単である。(もともと、appletクラスを継承してMainFrameを作っているのだから。)
ただし、このアプレットはWebブラウザでは、plug-inを使うようにしなければ動かない。(appletviewerなら、Java3Dをインストールした環境で動く。)
皆さんのWebページのアップロードが未完であるので、残念である。前期で図形処理の授業が終わるので、9月末までに、これまでの整理をすること。
この授業でのテキストは、以下のWebページを使わせていただく。
GLUTによる「手抜き」OpenGL入門
和歌山大学システム工学部 床井浩平
テキストによると、OpenGLは、シリコングラフィックス社(以下 SGI)が開発した、 Java3Dの元になったプラットフォームを選ばない3次元のグラフィックスライブラリである。(関谷のコメント:例えば、Windows用グラフィックスライブラリでは、DirectXなどがある。)
OpenGLは、OS に依存しない3次元のグラフィックスライブラリ (API) です。でも、この「OS に依存しない」というところが実は曲者で、ウィンドウを開いたりウィンドウマネージャと通信したりするところは、ちゃんとそれぞれの流儀に則って、 OS やウィンドウシステムにお願いしないといけません。
ここが、相当にやっかいで、そこをサポートしているのがGLUTです。
(関谷のコメント:WindowsプログラミングでのSLS-このCGの最初の5回で使用-は、Windowsでしか使えないが、ウィンドウを開いて、線を引いたり文字を書くための簡単に使える基本グラフィックライブラリである。)
最新版を入手して、解凍したものをファイルサーバread\Archive\glut-3.7.2-dllsにコピーしている。
テキストにあるように解凍後の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)
コマンドラインでコンパイルする場合は、vcvars32.batで、コンパイラへのpathをセットすれば、これまでと同じclコマンドでコンパイルできる。
テキストでは、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 ガイド日本語版(/usr/share/GLUT/glutspec.ps の訳)は、glutのapiなどを詳しく説明している。
GoogleでOpenGLを検索するとたくさんある。授業で使わせてもらうページのほかの幾つかを紹介する。
これから、和歌山大学システム工学部 床井先生のWebテキストを参照して、GlutによるOpenGLプログラミングを学習しよう
例題のソースプログラムは、Webページで選択・コピーし、秀丸などのエディタに貼り付けて、「名前を付けて保存」し、コマンドラインでのコンパイル・リンクclと実行をする。次々と、機能を追加していくが、途中のプログラムを保存したければ、「名前を付けて保存」で、新しい名前を付ければ良い。
実習としては、それぞれのソースプログラムに、ファイル名、プログラム名、作成日、氏名や、考察、プログラムのソース行の右側へのコメント追加などをして、そのソースを見れば、後でも分かるようにするのが望ましい。
4.1 空のウィンドウを開く 4.2 ウィンドウを塗りつぶす
5.1 線を引く 5.2 図形のタイプ 5.3 線に色を付ける 5.4 図形を塗りつぶす (注)このプログラムは、8節で使うので、コピーを作っておくこと。 >copy prog1.c prog2.c (あるいは、エクスプローラなどを使っても良いが。) 5.5 関数の命名法
6.1 座標軸とビューポート 6.2 位置やサイズを指定してウィンドウを開く
7.1 マウスボタンをクリックする 7.2 マウスをドラッグする
ラバーバンドを描く際,消えずにラバーバンドが残ってしまう場合は、glEnable() / glDisable() において GL_LOGIC_OP の代りに GL_COLOR_LOGIC_OP を使ってみてください。
(ラバーバンドを残して、線の色を変えるには:motion(){}の新しいラバーバンドを描くところで、5.3 線に色を付けるのglColor3d()のr、g、bの成分の比を変えてやることになる。
7.3 キーボードから読み込む
テキストの例題とその解説を読み、例題をコンパイルし、実行してみる。
それらの中で、皆さんの興味を持った例を解析し、改造して、各自の作品を作りなさい。
レポートには、それらの中から、考察を行い、ハイパーリンクのこと。(残念ながら、Webでは実行できない。実行画面をPrintScreenで取り込み、ペイントなどで圧縮したものを表示すること。)