COJTとは

1/31に、筑波大学キャンパスOJT(以下COJT)という大学の産学連携の授業の成果発表をしてきました。

COJTには、ソフトウェアコースとハードウェアコースがあり、私はソフトウェアコースの方を受講しました。

ソフトウェアコースでは、アクセル社のAG4というグラッフィクスLSIで動作するゲームの開発と発表を行いました。

ハードウェアコースは、FPGAを使って各自好きな回路を作成したようです。

Read more


近状報告

早いもので大学3年の授業が終わってCOJTを残すのみとなってしまいました。

一昨日成績開示があったのですが、卒業に必要な単位のうち取り切っていないのは、 卒業研究と技術英語と体育だけなので、実質的に大学の授業は取り終わったに等しいです。

3年の秋学期のABモジュールに開講された、インタラクティブCGという授業を履修したのですが、 今学期で一番楽しい授業だったと思うので、振り返ってみます。

ちなみに、去年にも似たような記事を書いていました。

Read more


久々の更新です。

早いもので大学2年の授業が終わって春休みになってしまいました。

3学期には、コンピューグラフィックス基礎という授業を履修したのですが、 今学期で一番楽しい授業だったなーと思うので振り返ってみます。

基本的にはOpenGLを使って色々しました。

特に力を入れた課題などを紹介します。

ソースコードなどはすべてgithubにあるので、 気になる人はぜひ見てね!

課題3 ASTEROIDS

OpenGLを使ってアニメーションを作るという課題があったので、 全方位シューティングゲームを作ってみました。

技術的な点だと、自機、隕石、弾の3つは、慣性移動、衝突判定、描画などは共通の処理でできるので、 この3つをobjectという構造体1つで管理して、同じような処理を何度も書かないようにしました。

title画面

プレイ中

ゲームオーバー

課題4 立体の展開図

OpenGLの回転と平行移動を駆使して、立体の展開図のアニメーションを作りました。

まずは立方体の展開図。

立方体-1 立方体-2 立方体-3

正12面体となると、座標の計算が大変でしたが、気合で実装しました。

正12面体-1 正12面体-2 正12面体-3 正12面体-4

課題5 ベジエ曲線

マウスで制御点を入力してベジエ曲線を描く課題です。

定義式をプログラムにするだけの簡単なお仕事でした。

制御点が3次のベジエ曲線

オプションとして3次元バージョンにも挑戦しました。

制御点が3次のベジエ曲線の3次元

課題7 OBJファイルで立体を表現

OBJファイルという、頂点と面の2つの情報で立体を表す立体図形のフォーマットがあるのですが、 このOBJファイルを出力するプログラムを作りました。

ちなみに、OBJファイルを描画するプログラムは先生の方で用意してくれました。

球体は普通にやると頂点部分で例外処理があって面倒ですが、頂点部分に複数の頂点がくるようにして楽しました。

球体

Wikipediaにトーラスの式があるので、それを参考にして作りました。

球の課題の式の定義部分を変更するだけで、できたので楽でした。

トーラス

3角関数で半径を変化させて、適当な回転体を作りました。

回転体

また、マウスで入力した線から任意の回転体を作ったりしました。

UFO コマ グラス hoge

また、マウスで線を描くときに下から上に線を引くと、面が裏返るので、それを利用してプリンみたいなのも作りました。

プリン

課題9 レイトレーシング

レイトレーシングをやりました。

普通にやるとつまらないので、いろいろ工夫しました。

  • レイを再帰的に計算して、ピカピカに
  • 3x3でアンチエイリアス
  • 色は乱数でRGBを求めると鮮やかにならないので、HSVで計算
  • Zbuffer的な概念を取り入れて、球が床に食い込んでも重なっても大丈夫なように

レイトレーシング1 レイトレーシング2 レイトレーシング3 レイトレーシング4 レイトレーシング5 レイトレーシング6

課題10 布のシュミレーション

Mass-Spring モデルによる簡易的な布の物理シミュレーションをしました。

布のシュミレーション

球体との衝突判定を追加してみたのが次です。

布のシュミレーション(球との衝突)

まとめ

こうして振り返ると、かなり色々な課題に挑戦しましたが、どれも楽しかったです。

CGを自分の研究としてもいいなーとか思ってしまいました。

Read more