2019年6月28日 星期五

04360783 沈郁翔 摸魚

摸魚



介紹:透過視訊畫面與虛擬魚缸中的魚互動

操作頁面及方式:
1. 點擊 Game.exe 開啟遊戲
2. 系統將自動抓取、開啟攝影機,並生成水族箱
3. 如果抓取攝影機失敗,將回到第 2 步
4. 觸摸遊戲中的魚,魚變成紅色並停止活動

活動的魚群

停止活動的魚顯示為紅色
遊戲特色:

一、水色覆蓋
  保留畫面的 Y 值,至於 U、V 是與原畫面混合
  來製作畫面沉沒在水中的感覺

由左至右,依序是原圖、覆蓋水藍 30%、覆蓋水藍 90%
(點擊放大)

二、水波效果
  畫面模擬方式是透過三角函數計算每列像素的偏移位置
  公式為 abs(偏移量 * sin(M_PI * (幀數 + 列數) / 180 )))
  我為了避免邊界判斷太複雜,只取公式正值(後來發現僅取正值效果也很好)
  幀數為隨時間遞增、循環的量,M_PI 為圓周率(sin 用弧度)

水波效果


三、水草繪製
  每次開啟程式時,畫面下方生成長度不一的水草
  另外水草的寬度、顏色,以及飄動都是獨立計算的
  畫面先套用水波效果,水草的晃動不受水波影響(而且公式改用 cos 函數)

 3 種隨機生成的水草佈景


四、膚色偵測
  互動主要由膚色偵測完成,偵測早於水色覆蓋
  受到環境光的影響,膚色偵測範圍跟顏色可能需要事先設定

Debug 模式的膚色偵測,偵測為膚色的部分顯示為粉紫色

遭遇的困難:
本遊戲是採用膚色偵測,但是膚色容易受到其他相似顏色的干擾;
另外就是畫面的扭曲效果,需要熟悉宏像素的 index 才能實作。

原本是想寫成類似養魚遊戲,但魚餌、魚以及畫面的互動很難設計。

遊玩影片:



沒有留言: