OpenFrameworks 使用手冊

簡介

Openframeworks 是一個C++函式庫,目的在於協助在創作過程中提供一個簡單而直觀的試驗框架。 此函式庫是被設計為如同一般目的膠水的運用,並且將一些常用的函式庫一起包裝在一個整潔的界面:針對圖形的 OpenGL,為音頻輸入和輸出的 rtAudio,處理字體的 freetype,影像輸入和輸出的 freeimage,播放視訊的 QuickTime 和引人注目的序列。

該程式碼是被編寫為跨平台(PC, Mac, Linux, iPhone)和跨編譯器。 API被設計成最小並且易於掌握。這有最少的類別,並且在這些類別裡面含有少量的函式。已經執行的程式碼,以便在這些類別內部是最小的跨越引用,使得它很容易被擷取出來再利用,如果你有所需要或者加以延長的話。

簡單地說,Openframeworks 是一個工具,通過程式碼讓它更為容易製作一些事情。我們覺得它是超級有用的,我們希望你也這麼認為。

Openframeworks 正由 Zach LiebermanTheodore WatsonArturo Castro 與社群的幫助下積極開發。ofxIphone 則是由Mehmet AktenZach Gage 積極開發,與來自Lee ByronDamian Stewart 的開發協助。 Chris O’shea 負責OF網站設計和維護。

Openframeworks 非常感激兩個重要的前輩:由 Casey Reas、 Ben Fry 建立的 Processing development environment 與 Processing 社群。和 theACU 套件,這是私人的分佈式 C++函式庫,由 Ben Fry 和麻省理工學院媒體實驗室的美學與計算組(MIT Media Lab’s Aesthetics and Computation Group)的其他人所開發。

OF 是基於 C++ 程式語言設計出來給設計師和藝術家們用來創作的工具,讓他們可以容易的設計出互動、影音等的數位創作,並且保有良好的效能。
語法上,與Processing相似。
功能上,可與Processing(Java base)做類比,在某些程度上,OF效能比較好。
使用上,比起Processing的快速簡潔,OF的編寫是複雜了一些,更偏向程式設計師的運用。

Processing V.S OF

有些事可以利用 Processing 清鬆簡單的完成,在 OF 可不一定,但反過來說,也是一樣的:

  1. 如果 Project 是要放到網路上,那就用 Processing 吧
  2. 如果這個 Project 打算繪製 3D 圖的話,那就用 OF 吧
  3. 如果你想讓你的 Project 放到其它電腦上不需 compiler 就能跑的話,那就用 Processing 吧
  4. 如你打算使用計算機視覺庫電腦視覺函式庫(computer vision library),如: OpcnCV,那就用 OF 吧
  5. 如果你的 Project 要用到 Arduino 做為你的控制介面,你就依你所要的應用來選擇 OF 或 Processing 就好

OF安裝(on ubuntu)

下載

目前 OF 的最新版本為 pre release v0.061,可至官網頁面下載或從 GitHub 下載,如你也和我們一樣,主要開發環境於 Linux 上,強烈建議下載 GitHub 上的板本,目前的 Pre v0.061 上的 Video Graber 於 Linux 上已改成使用 Gstream (v0.060 以前是使用 Unicap),另一方面,GStream 於 Linux 上預設是使用 32Bit 但 OF 是使用 24Bit 所以 Video Grab and Play 方面也是會有問題。

各平台的差別

如前所述,OF 的設計為了讓開發者可在不同的 OS 上開發、編譯與執行(最少現在是,希望以後也是這樣)。官方下載頁面已幫開發者分裝成各個 OS 的版本,其實各版本之前只差在對於開發環境設定不同,而從 GitHub 或 all platforms package 所下載就包含所有的開發環境檔。

FAT包

FAT包裡,除了 OF 提供最基本的五個library (ofBase) 之外,還提供幾個常用到的 addons (插件)與 各 addons 的 範例

ofxDirList, ofxOpenCv, ofxThread, ofxVectorMath, ofx3DModelLoader, ofxNetwork, ofxOsc, ofxVectorGraphics, ofxXmlSettings.

安裝 (on ubuntu)

OF 於 linux 有二個 script 來幫助安裝,都放在 {OF}/scripts/linux/ubuntu/ 中
1. 安裝 Code Block IDE 程式

sudo ./install_codeblocks.sh

2. 編譯 OF 提供的 library
sudo ./install_dependencies.sh 
編譯完成後,會產生二個 archive file,libopenFrameworks.a 和 libopenFrameworksDebug.a
二個都放在 {OF}/libs/openFrameworksCompiled/lib/linux

Addons (插件)

openFrameworks 插件是額外的第三方函式庫,這可以增加到你的計畫裡,用來擴大其功能。 每個插件網頁將包括詳細的說明和所需的文件,可方便地集成 openFrameworks。

插件背後的動機是為了讓主要的函式庫變小,易於管理,而在同一時間允許的添加其他功能,並支持其他函式庫。 如果你有任何想法對於你想看到執行的其他插件,或是想增加自己的插件,請參閱 論壇

OF FAT 已附帶幾個最常被使用的插件與範例:

  • ofxDirList : 有助於列出一個目錄的內容。
  • ofxXmlSettings : 包裝 TinyXML,協助載入和儲存XML(可用於儲存應用程式的設定狀態)。
  • ofxOsc : 包裝 oscpack,讓你用 OSC 通信協定來溝通, openframeworks被送入和送出資料到其它應用程式
  • ofxOpenCv : 包裝部分英特爾計算機視覺庫OpenCV的功能。
  • ofxNetwork : which contains cross platform network code for UDP and TCP communication, as well as * multicast。
  • ofxThread :包含題拱跨平台的線程管理程式碼。
  • ofxVectorMath : 包含向量數學物件,例如向量和矩陣。
  • ofxVectorGraphics : CreEPS 包裝器,提供openframeworks易於使用的 PostScript輸出。
  • ofx3dModelLoader : forcl ___ 包裝器,這使得它可以在 openframeworks載入和顯示3ds模型。

除了上面這幾個 addons 之外,官網上有列出更多好心人的貢獻

installing & using addons