오픈프레임웍스
| OpenCV 추가 기능을 이용한 오픈프레임웍스 | |
| 개발자 | Zachary Lieberman, Theo Watson, Arturo Castro |
|---|---|
| 최근 버전 | 0.007 "pre-release" / 2010-11-17 |
| 운영 체제 | 크로스 플랫폼 |
| 종류 | 프로그래밍 언어 |
| 라이선스 | MIT |
| 웹사이트 | http://www.openframeworks.cc/ |
오픈프레임웍스(openFrameworks)는 C++를 기반으로 한 오픈 소스 라이브러리로서 "창의적인 코딩"을 위해 디자인되었다. 오픈프레임웍스는 윈도, Mac OS X, 리눅스에서 작동하는 크로스 플랫폼 소프트웨어 프레임워크이다. 오픈프레임웍스는 Zachary Lieberman, Theo Watson, Arturo Castro, 그리고 오픈프레임웍스 커뮤니티에 의해 공동 개발되었다.
목차 |
특징 [편집]
오픈프레임웍스는 기존의 다양한 라이브러리를 통합하여 손쉽게 사용가능하도록 설계되어있다. 그래픽에는 오픈지엘이, 오디오 작동에는 rtAudio를, 글꼴에는 프리타입이, 이미지 작업에는 freeImage가, 그리고 비디오 재생에는 퀵타임이 사용되었다.
설치 [편집]
오픈프레임웍스는 별도의 IDE를 제공하지 않으며, 별도의 설치과정이 존재하지 않고, 소스 코드 형태로 제공이 된다. 오픈프레임웍스를 시작하는 과정은 다음과 같다.
운영 체제별 IDE 설치 [편집]
- 윈도:
- 윈도에서는 마이크로소프트 비주얼 스튜디오나, 오픈 소스로 제공되는 Code::Blocks를 설치한다.
- 맥 OSX:
- 리눅스:
- 리눅스 사용자는 Code::Blocks를 설치하도록 한다.
릴리즈 다운로드 [편집]
사용자들은 홈페이지 상의 다운로드 메뉴에서 최신 버전의 릴리즈를 내려받을 수 있다. 모든 버전은 운영 체제와 IDE에 따라 별도로 제공된다.
v0.05 버전 출시 이후로는 일반 버전과 FAT 버전으로 구분해서 제공된다. FAT 버전에서는 다양한 추가 기능(addons)이 포함되어 있다. 추가기능에는 openCV, 벡터 출력 및 연산, OSC, 네트워크 통신 등을 포함하고 있다.
오픈프레임웍스 구조 [편집]
오픈프레임웍스에는 다양한 소트프웨어 라이브러리가 통합되어 제공된다. 오픈프레임웍스의 다양한 함수와 클래스들은 이러한 내부 라이브러리 기능들을 쉽고 편리하게 사용할 수 있도록 제공한다.
폴더 구조 [편집]
오픈프레임웍스를 내려받으면, libraries, addOns, example 같은 일련의 폴더들을 발견할 수 있다. 각 폴더의 내용은 다음과 같다.
- addons - FAT 버전을 내려받으면, 다양한 추가 기능이 제공되는데, 그러한 추가 기능이 담겨 있는 폴더이다.
- apps - 직접 작성한 응용 프로그램이 저장되는 장소이며, 다양한 예제들이 포함되어 있다.
오픈프레임웍스를 사용할 때 계층 구조를 유지하는 것이 매우 중요하다. 내려받은 패키지는 응용 소프트웨어가 내부 폴더들과 지역적으로 링크될 수 있도록 구성되어 있다. 만약 폴더들을 옮기거나, 변경하게 되면 컴파일이 되지 않을 수 있다.
새로운 프로젝트를 생성할 때는 apps 폴더 안의 examples 폴더의 예제 응용 프로그램들과 같은 폴더 구조를 띄어야 한다.
apps > (예제와 같은)그룹 폴더 > 프로젝트 이름 > 프로젝트 파일
코드 구조 [편집]
오픈프레임웍스의 코드 구조는 다음과 같다.
- main.cpp : mail.cpp 파일은 c++ 컴파일러에게 어떠한 리소스를 프로그램 내에서 사용할 것인지를 알려주고, 프로그램을 실행시키는 역할을 한다.
- testApp : 실제 코딩은 testApp.h와 testApp.cpp 파일 내에서 이루어지게 된다. 사용자는 기본적으로 setup(), update(), draw() 함수를 사용할 수 있다. setup은 응용 프로그램이 실행되는 순간에 한번만 실행되며, 다양한 변수와 업데이트가 필요하지 않은 설정들을 선언하는 부분이다. update 함수는 매 프레임별로 지속적으로 작동한다. 하지만 내부에 드로잉 함수를 호출 할 수 없고, 실제 매 프레임 드로잉되는 함수들은 draw함수에 포함시켜야 한다.
헬로 월드 [편집]
가장 기본적인 응용 프로그램 작성을 위해 examples 폴더 내의 emptyProject 프로젝트를 실행한다. 가장 기본적인 헬로월드 프로그래밍은 testApp.cpp 파일 내의 setup()함수를 다음과 작성하면 된다.
void testApp::setup(){ cout << "Hello World" << endl ; }
하지만 다음의 코드가 오픈프레임웍스의 언어를 잘 표현해 주는 좋은 예라고 할 수 있다.
//testApp.h #ifndef _TEST_APP #define _TEST_APP #include "ofMain.h" class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); ofTrueTypeFont font; }; //testApp.cpp #include "testApp.h" //-------------------------------------------------------------- void testApp::setup(){ font.loadFont("myFont.ttf", 32); } //-------------------------------------------------------------- void testApp::update(){ } //-------------------------------------------------------------- void testApp::draw(){ ofSetColor(0x00FF00); font.drawString("Hello World", 100,100); }
추가 기능(addons) [편집]
오픈프레임웍스에는 기본 라이브러리 이외에도 다양한 추가 기능이 제공된다. FAT 버전을 다운받게 되면 addons 폴더 안에 추가 기능이 기본적으로 설치가 된다. 기본적으로 설치되는 추가 기능은 다음과 같다. [1]
- ofxDirList : 디렉터리 내부의 내용을 나열해서 보여 준다.
- ofxXmlSettings : xml 파일을 저장하고 불러온다.
- ofxOsc : OSC 프로토콜을 사용한 통신을 돕는다.
- ofxOpenCv : 인텔 OpenCV 라이브러리를 통한 컴퓨터 비전의 사용을 지원한다.
- ofxNetwork : UDP 와 TCP 통신을 통한 크로스 플랫폼 네트워크를 위 코드를 포함한다.
- ofxThread : 크로스 플랫폼 스레드 관리를 위한 코드를 포함한다.
- ofxVectorMath : 벡터 계산을 위한 개체를 포함한다.
- ofxVectorGraphics : CreEPS를 위한 내용을 포함한다.
- ofx3dModelLoader : 3차원 모델을 불러오고 보여주는 기능을 제공한다.
주석 [편집]
관련 프로젝트 [편집]
- graffiti analysis project - Evan Roth
- audio space - Theodore Watson
- drawn - Zach Lieberman
- colors - Cory Arcangel
- re-gaze - Chris Sugrue
- L.A.S.E.R. Tag - Theo Watson/Graffiti Research Lab
- EyeWriter - Free Art and Technology (F.A.T.), 오픈프레임웍스, Graffiti Research Lab, The Ebeling Group, TEMPTONE
- Magic Torch - Alberto García, Julio Obellerio, Martín Nadal , Alberto Cortés
- Memento - Jeldrik Schmuch, Ulrike Gollner
- Le Sacre du Printemps - Klaus Obermaier, Ars Electronica Futurelab, Chris Sugrue, and Matthias Bauer.
- TouchKit Multitouch System - NOR_/D
참고 [편집]
바깥 고리 [편집]
| 이 글은 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |