64bit 環境のMacOSでofxFftを使う方法

ofxFftを使うためにはプリコンパイルしたfftw3f.aが必要ですが、ダウンロードするように指示されているファイルは32bit環境用でビルドエラーが出ます。

https://github.com/kylemcdonald/ofxFft/issues/14

こちらに解決方法が紹介されていました。

http://www.fftw.org から最新のfftwをダウンロードして、展開したフォルダ内で以下のコマンドを実行します。

sudo ./configure --disable-shared --enable-static --enable-float --enable-threads CC="gcc -arch x86_64" CXX="g++ -arch x86_64" CPP="gcc -E" CXXCPP="g++ -E"
sudo make install

/usr/local/lib に以下のファイルが生成されているのでofxFftのlibs/fftw/libの中にコピーします。

また /usr/local/include のfftw3.hファイルを ofxFft/libs/fftw/includeにコピーします。

ビルド時に以下のようなエラーが出た場合は

ld: library not found for -lfftw

.zshrcに

export LIBRARY_PATH=/usr/local/lib/

を追加して

source ~/.zshrc

を実行します。

また、Project Generatorを使ってofxFftを読み込んでいる場合は.aファイルが追加されていないので手動でXcodeで追加します。

【openFrameworks】macOS High Sierraでプログラムをビルドするときにエラーが出る場合の対策

openFrameworksのプログラムをmacOS High Sierraでビルドしようとしたらエラーが出たので原因を調べてみました。
ちなみにプログラムはSierraで制作したものです。

Showing Recent Messages
:-1: The i386 architecture is deprecated. You should update your ARCHS build setting to remove the i386 architecture. (in target 'openFrameworks')

High Sierraから64bitのプログラムしか作れなくなっているようでそれが原因でエラーが出ているようでした。

修正箇所

BuildSettings

Architectureが64bit – intelになっていることを確認します。
Architecture

CoreOF.xcconfig

次にlibs/openFrameworksCompiled/project/osx/CoreOF.xcconfigを書き換えます。
書き換え箇所は以下を参考にしました。
github
この修正を適用すると無事にビルドできました。参考までに以下にも修正箇所を掲載しておきます。

VLID_ARCHSとOF_CORE_FRAMEWORKSの項目を修正します。

VALID_ARCHS = x86_64
OF_CORE_FRAMEWORKS = -framework Accelerate -framework AGL -framework AppKit -framework ApplicationServices -framework AudioToolbox -framework AVFoundation -framework Cocoa -framework CoreAudio -framework CoreFoundation -framework CoreMedia -framework CoreServices -framework CoreVideo -framework IOKit -framework OpenGL -framework QuartzCore -framework QTKit -framework Security -framework LDAP

【openFrameworks】ofTrueTypeFontで日本語のフォントを読み込む方法

openFrameworks v0.10.0でofTrueTypeFontを使って日本語のフォントを読み込む方法です。

ofApp.hにofTrueTypeFontのインスタンスを設定します。

ofTrueTypeFont text;

続きを読む

openFrameworks v0.10.0で画面サイズを設定できない場合

ofGLFWWindowSettings s;

のようにofGLFWWindowSettingsで作った画面のサイズを指定する方法です。

以下のように書くとエラーが出ます

s.width  = 1920;  //直接書き換えられない
s.height = 1080;  //直接書き換えられない

エラーメッセージは以下のようなものです。
‘height’ is a protected member of ‘ofWindowSettings’

直接書き換えるなということなので

以下のように書き換えます

s.setSize(1920, 1080);

v0.9.8では個別に書き換えられたのですが、v0.10.0からできなくなったようです。

Raspberry PI 3 + openFrameworksでマウスポインタが動かない時に確認すること

Raspberry PI 3にopenFrameworks(0.9.8)を入れてサンプルプログラムを動かしたのですが、マウスを使って操作するプログラムでマウスポインタが反応しない事象が発生したので、原因を調べてみました。
続きを読む

Elgato Game Capture HD60でMacの画面をビデオ録画する

Elgato Game Capture HD60
openFrameworksで作った映像をキャプチャーするためにElgato Game Capture HD60を導入しました。
続きを読む

openFrameworksでFboのスクリーンショットを保存する方法

openFrameworksでFboのスクリーンショットを保存する方法です。
ofFboをを一旦ofPixelsに変換したのちofImageにするとうまくいくようです。

    ofImage img;
    ofFbo fbo;
    ofPixels pixels;

sキーが押されたらファイルが保存されるようにします。

void ofApp::keyPressed(int key){
    if(key =='s'){
        fbo.readToPixels(pixels);
        img.setFromPixels(pixels);
        char fileNameStr[255];
        string date = ofGetTimestampString();//タイムスタンプをファイル名にする
        sprintf(fileNameStr, "%s.png", date.c_str());
        img.save(fileNameStr,OF_IMAGE_QUALITY_BEST);
    }
}

ofCreateWindowでウィンドウを作った際にGLSL #version 120のShaderを動かすための設定

ofCreateWindowでウィンドウを作った際にGLSLの#version 120が動きませんでした。
setGLVersionの設定を3,2から2,1に書き換えると動きました。

int main( ){
    ofGLWindowSettings s;
    s.setGLVersion(2,1);//ここを2,1にする
    s.width  = 1920;//画面サイズ
    s.height = 1080;//画面サイズ
    ofCreateWindow(s);
    ofRunApp(newofApp());
}

このサイトでも紹介されているように3,2だと#version 150しか動作しません。

ofCreateWindowでつくったウィンドウ内でマウスカーソルを消す方法

openFrameworksのプログラムでofCreateWindowを使ってウィンドウを生成した際にofHideCursor()でマウスカーソルが消えない事象に対する対策です。
Mac OSX Yosemiteで確認しました。

//setup()内に書く
//ofHideCursor(); 効かない
 CGDisplayHideCursor(NULL);//これでカーソルが消える

TrueTypeFontをofVboMeshに変換して表示する方法

openFrameworksでTrueTypeFontをofVboMeshに変換する方法を調べてみました。

フォーラムのこの投稿を参考にしました。
https://forum.openframeworks.cc/t/extrude-text-into-3d/6938/2
続きを読む