openFrameworksのアドオンofxQuadWarpを使ってプロジェクションマッピング


1 はじめに

openFrameworksで簡単なプロジェクションマッピングする方法を共有します。

2 環境

Visual Studio Community 2017
openFrameworks 0.10.1

3 Visual Studio 2017のセットアップ

以下のサイトを参考に、Visual Studio 2017のセットアップを行う。ただし、「Visual Studio向けopenFrameworksプラグイン」は「前提条件が不足しているため、次の製品に拡張機能をインストールできません」とエラーが出てインストールできなかったため省略した。
https://openframeworks.cc/ja/setup/vs/

4 openFrameworksのダウンロード

  1. openFrameworksのサイトからopenFrameworksをダウンロードする。また、Visual Studio 2017で開発する場合はopenFrameworks for visual studio (2017)をダウンロードする。
    https://openframeworks.cc/ja/download/

  2. ダウンロードしたものを解凍し、任意のフォルダに置く

5 プロジェクトの作成

  1. ダウンロードしたopenFrameworksのフォルダにある、projectGenerator-vs\projectGenerator.exeを実行する

  2. ウィンドウが表示されるため、自分の環境に合わせて設定する

    • Projection name:任意のプロジェクト名を設定する
    • Projection path:プロジェクトを作成するパスを設定する。デフォルトで入っているため、特に問題なければそのままにする
    • Addons:「ofxPoco、ofxOpenCv、ofxXmlSetting」を設定する
  3. Generateをクリックする

  4. GithubでofxQuadWarpをダウンロードする
    https://github.com/julapy/ofxQuadWarp/tree/master

  5. 先程作成したプロジェクトのsrc配下にダウンロードした以下のソースコードをコピーする

    • main.cpp
    • ofApp.cpp
    • ofApp.h
    • ofxQuadWarp.cpp
    • ofxQuadWarp.h
  6. プロジェクトのbinフォルダ配下に画像を置く

6 ソースコードの修正

openFrameworks 0.10.1の場合、ofxQuadWarpはビルドエラーとなるため以下の修正を行う。
※Github上で0.10.1で動作するように修正するpull requestがあったので、その修正が適用されれば以下の作業は不要です

  • 以下のインクルードを追加する
ofxQuadWarp.cpp
 #include "ofxXmlPoco.h"
 #include "calib3d.hpp"
  • ofXmlをofxXmlPocoに修正する
ofxQuadWarp.cpp
// ofXml xml;
ofxXmlPoco xml;

7 動作確認結果

四隅の点をマウスでドラッグ&ドロップで動かし、プロジェクションしたい物体の四隅に合わせることができます。

実際にプロジェクターで写した結果は以下となります。画像では荒いですが、実際は綺麗に写っています。