イベントやテーマパークでのプロジェクションマッピングや、大規模なデジタルインスタレーションの成功により、一般にも広く知られるようになったデジタルアートの世界。
近年、そうしたデジタルアートに触れて魅力を知り、アート系プログラミングの世界に飛び込む異業種のエンジニアが増えています。
「アートとコードの融合」をテーマに、前後編の2回にわけて最新のデジタルアートの世界を実例を混じえながら紹介していきます。前編の今回は、デジタルアートとはなにか、そしてデジタルアートを生み出すクリエイティブコーディングについて掘り下げていきます。
デジタルアートという言葉が指す範囲はかなり広いものです。比較的新しく、発展も著しいため、分類には諸説あります。ここでは大きく3つに分類し解説します。
デジタルアート第一の種類は、絵画、写真、コラージュなどの2D(二次元)メディアです。筆とキャンバス、アナログカメラとフィルム、ハサミと糊などのアナログ手法で制作されていたものを、デジタル環境に置き換えて制作します。
制作には、絵画を描くためのベクターグラフィックスソフト(Adobe Illustratorなど)や、デジタル写真を加工するためのラスターグラフィックスソフト(Adobe Photoshopなど)が用いられ、入力にはマウスやペンタブレット、デジタルカメラが使われます。
このような手法のため、アナログ的手法で描画/撮影された従来の作品と見た目が大変近いものになる場合があります。
これらを作品とする場合、複製が容易なことが懸念点でした。しかし近年、ブロックチェーン技術を用いたNFT(非代替性トークン)が登場したことで、デジタルデータの所有権が証明できるようになり、デジタルアートマーケットでの売買が活発になっています。
デジタルアート第二の種類は、2D及び3Dのコンピューター グラフィックスです。これらはアナログ時代には存在しなかったもので、デジタル技術により生まれました。
3Dグラフィックスは、ポリゴンなどを用いて画像を設計し3次元の物体やシーンを生成します。そのままゲームやシミュレーション用途で使用すれば3Dグラフィックスとなりますし、3Dデータをベースに平面画像を生成すれば2Dグラフィックとなります。
映画に用いられるコンピューターグラフィックスは、フルCGのアニメーション映画と、実写映像に特殊効果として組み合わせるSFX(特殊効果)があります。
3Dモデルの制作には、3Dモデリングソフトウェア(Autodesk Mayaなど)が用いられ、入力にはマウスやペンタブレット、デジタルカメラが使われますが、実世界のオブジェクトをスキャンしてモデリングする場合もあります。
デジタルアート第三の種類では、コードを書くことで図形を描画したり、アートを自律して生成するプログラムを作成したりします。
歴史的にごく初期から使われてきた名称は、コンピューターアート及びジェネレーティブアートです。フラクタルアートやアルゴリズムアートもコンピュータープログラムなくしては作り上げることができないジャンルのアートです。
そして近年、アートとコードの関係に注目を集めたきっかけのひとつが「デジタルインスタレーションアート(インタラクティブアート)」です。仮想領域への没入をいざなう拡張現実デジタルインスタレーションの登場により、プログラムが生成するアートの存在が広く知られるようになりました。
前の項目で紹介した「プログラムが生成するアート」は、創造的な表現を目的とした「クリエイティブコーディング」によって生み出されます。
ここ20年ほどで、表現に特化したコードやツールキットが相次いで生まれ、クリエイティブコーディングは私たちにとって身近なものになりました。
最近では、プログラミングに対する深い知識がなくても、GUIを操作したり簡単なコードを書くことで創作可能な方法も存在します。そのため、エンジニアやプログラマーのみならずアーティストやデザイナーがクリエイティブコーディングに取り組むケースも増えています。
ここでは、代表的なクリエイティブコーディング系のソフトを5つ紹介します。その形態は、言語、総合開発環境(IDE)、フレームワーク、ゲームエンジンなどさまざまです。
画像引用:Processing公式Twitter
Processingとは、メディアアートやビジュアルデザインなどのグラフィック機能に特化したプログラミング言語とIDEのことを指します。
デジタルアートの普及でもっとも注目を集めている言語であると同時に、シンプルなコードで表現することに重きを置いた言語のため、クリエイティブコーディング入門用として世界的に学ばれています。
Javaをベースに開発されましたが、現在ではPythonでも利用できます。また、JavaScriptへの移植版「p5.js」も存在し、こちらも近年人気です。
どちらかといえば初心者向けで、高度なプロジェクトで使われる機会は多くはありません。また、C言語やC#と比べると実行時間や精度は一歩譲ります。
【データ】
画像引用:openFrameworks公式サイト
openFrameworksは、クリエイティブなプログラミングのために作られた、C++のオープンソースツールキットです。APIは前述の「Processing」に類似したもので、容易にグラフィックが扱えます。
独自のIDEは用意されず、さまざまな開発環境(XCode、Code::Blocks、and Visual Studio、Eclipse)をサポートします。自由度が高く、C++を使うぶん速度面でも有利です。一方で、C++は複雑になりやすく、自ら開発環境の整備も行う必要があるなど、初心者向けとはいえません。
2D/3Dグラフィックス、動画、アニメーション、音声などのメディアを扱えるため、メディアアート、インタラクティブなメディアで活用されています。初心者はProcessingでの開発に慣れてから、openFrameworksに移行するのもよいでしょう。
【データ】
画像引用:vvvv公式サイト
vvvvは、ノードベースのビジュアルプログラミング言語です。「ノード」というのは機能を「箱」もしくは「部品」として現したもので、マウスを使ってその箱どうしを線でつないでアイデアをカタチにしていきます。
こうした形態のため、プログラミング言語の入力がほとんどありません。プログラミングを学びたいけれどコードに苦手意識がある人や、クリエイティブコーディングの概念を学びたい人の学習用にも向いています。
2D/3Dグラフィックやインタラクション、映像処理や音声など、さまざまなものに幅広く対応でき、プロトタイピング用ツールとしても優秀です。日本ではユーザーが少なく資料も多くありませんが、公式フォーラムのコミュニティ(英語)のコミュニケーションは活発です。
【データ】
画像引用:Unity 公式サイト
Unityはゲーム開発用に作られたツールです。ゲームエンジン自体はC言語/C++で書かれており、コーディングレス開発(ノンプログラミング)に対応します。開発者はC#を用いての機能拡張も可能です。
元々ゲーム用のツールということもあり、物理演算用のエンジンを搭載しています。そのため、2D/3Dグラフィックスの自由度が高く、インタラクティブに動かすのも得意です。こういった特性から、VR/ARコンテンツを制作する際に真っ先に選択肢に挙がるソフトのひとつでもあります。
専門的なプログラミング知識がなくても扱いやすいため、アートや映像に関わることだけでなく、医療業界や工業デザイン業界でも利用されており、今後より利用されていくものと予測されます。
【データ】
TouchDesignerもノードベースのビジュアルプログラミング環境で、コーディングレス開発(ノンプログラミング)に対応しています。リアルタイムレンダリングや、インタラクティブに強く、3DCGの扱いも容易です。
vvvvと似ていますが、TouchDesignerは映像に特に強く、しかも安定しているため、海外では大規模なインスタレーションや、プロジェクションマッピングに用いられる例が増えています。開発者はPythonやC++を用いての機能拡張が可能です。
【データ】
「アートとコードの融合」前編の今回は、デジタルアートの概要と「クリエイティブコーディング」について解説しました。
様々なクリエイティブコーディング系ソフトが登場したことで、コンピュータープログラムによって生み出されるアートは、エンジニアやプログラマーだけのものではなくなりつつあります。
しかし、それはすべての分野に当てはまることではありません。例えば、デジタルインスタレーションや、プロジェクションマッピング、AR(拡張現実)など大規模なデジタルアートの現場では、スピードや安定性が重視され、そのときに必要となるのは、C言語/C++など複雑な言語に対する知識と経験です。大規模なデジタルアートの最前線では、今もって、エンジニアのプロフェッショナルな能力や、豊富な経験が求められています。
次回は後編「デジタルアートの歴史とデジタルアートの事例」をご紹介します。
掲載日:2021年10月26日