このページには松﨑卒研の卒業研究生が作成したデモを載せています。

Graphics processing unitsを用いた時間領域差分法による声道の音響数値解析と解析結果の即時可視化(2011年度修士論文、2009年度卒業論文)

このタイトルの論文が日本音響学会誌2013年2月号に掲載されております。FDTD(時間領域差分)法で音波伝搬シミュレーションの計算をGPUで行いながら同時に、CPU側で可視化処理を行い、インタラクティブに視点を変えながら音の伝搬の様子を確認できるようにしています。

人工筋肉制御(2009年度)

超指向性スピーカ(2009年度)

音の生成(2000年度)

音の生成

ギターの音が人の耳に届く例を使って考えてみましょう。ギターを弾くと、弦は振動します。すると弦のまわりは空気で満たされているために、弦の動きによって空気も押されます。押された空気が密集して、まわりより圧力の高い部分(密)ができます。この部分は隣の空気を押します。これがドミノ倒しのように繰り返されることになります。また、圧力の高くなった部分のあいだには空気がまばらで圧力の低い部分(疎)ができます。このようにして、平均より高い部分と低い部分が交互に生まれ(この圧力変化量を音圧という)、空気の波として次々と伝わっていきます。これが音波の基本的なイメージです。

つまり、ギターの音は弦の振動が空気の疎密の変動を引き起こし、それが空気を伝わって人の耳までとどいたものです。この場合、ギターの音が耳まで届いたのは、ギターと人との間に空気があったからです。もし真空であったら、いくら激しくギターを弾いても音は伝わってきません。この場合の空気のように音を伝える物質を「媒質」といい、媒質がなければ音は伝わりません。

音の生成のアプレット

下の図は上のことをJavaアプレットを使って表現したものです。図中の数本の縦線(以下、縦波と呼ぶ)は大気の様子を表していて、その下の横線は横波を表しています。 さらに、このアプレットには「音の生成」「縦波表示」「色表示」「停止」「初期化」の5つのボタンがあります。「音の生成」ボタンを押すと縦波が動き始め、縦波が動くことによって大気に気圧の高い部分と低い部分、すなわち疎密ができ、そのことによってできた横波が左から右に移動していきます。波が動いている状態で「停止」ボタンを押すと波の動きが止まります。そして、波が止まっている状態で再び「音の生成」ボタンを押すと再び波が動き出します。「初期化」ボタンを押すと初期状態に戻ります。 「縦波表示」と「色表示」ボタンは疎密の表示の方法を切り替えるボタンです。「縦波表示」ボタンを押すと疎密を縦波で表示し、「色表示」ボタンを押すと疎密を色で表示します。色の表示は赤になるほど大気の状態が密になるようにしています。

This browser does not support Applets.

Java Hyper-Hockey Game (2001年度)

卒業研究で作成された Javaのネットワーク機能を利用したサーバー/クライアント型ハイパーホッケー風ゲームを紹介します。

ゲームの概要

  1. ゲームサーバーにログインした2人のクライアントがボールを打ち合い点数を競う。
  2. 相手陣地のブロックを壊したとき得点が入るとする。
  3. 障害物をもうける。障害物にボールが当たるとボールは跳ね返り、障害物は消える。

サーバ/クライアント間の通信

クライアントは、一定時間ごとにゲームのフィールドの情報を要求する。サーバーはその要求に従いクライアントに情報を渡す。また、クライアントは左右矢印キーを押すとラケットの移動コマンドをサーバに送信する。サーバ/クライアント間の通信はキャラクタベースで行う。

遊び方

  1. サーバーとクライアントをダウンロードする。
  2. サーバーを起動する。
    % java -jar Server.jar 
  3. Clientを起動する。
    % java -jar Server.jar
    起動すると下図のようなゲーム画面があらわれます。

    ゲーム画面

  4. "login"ボタンをクリックすると下図のウィンドウがあらわれます。
    loginウィンドウ
    "host:"にはサーバーを起動したマシン名、あるいはIPアドレスを、"login:"には適当な名前を入力してください。
  5. "OK"をクリックするとゲーム画面が次のようになります。
    ゲーム開始画面
    真ん中の赤丸がボール、赤い長方形がラケット、青い長方形がブロックです。下側が常に自分側、上側が常に敵側になります。
  6. 同様に、もう一つのクライアントを立ち上げます。この際、"login:"で入力する名前は違うものにしてください。ゲーム中の画面は下図のようになります。緑色の四辺形は障害物で、ランダムに出現します。
    ゲーム中の画面
    "left"や"right"をクリックするか,矢印キーを押してラケットを移動します。(が、矢印キーが働かないいう不具合があります。(^^;;;)
  7. 自陣のすべてのブロックがなくなった方が敗けですが、現在のところ勝ち負けの判定機能はありません。

Javaを用いたシューティングゲーム(2003年度)

Java学習用に松崎が作成したシューティングゲームです。マウスクリックでゲーム開始、左右の矢印キー(←、→)で自機移動、スペースで弾を発射となります。音が出るので注意してください。

This browser does not support Applets.

上のシューティングゲームを2003年度卒業研究生が、ゲーム性を高めて改良したのが下記のシューティングゲームです。「ボス」が出てきます。携帯Javaにも移植しました(ハイスコアをサーバーに登録できました)。上下の矢印キー(↑、↓)でカーソル移動、左右の矢印キー(←、→)で自機移動、スペースキーで決定と弾発射となります。

This browser does not support Applets.