はじめに
こんにちは, 今回以前からUnityによる映像表現に気になっていたのでバーチャル学祭の期間を使って映像作品を作りました.
動機
UnityはshaderGraphなどのリッチなグラフィック機能がたくさんあり, Unityシェーダーなどを勉強したいなと思っていました. さらにUnityのカメラの制御やParticle機能など使ってVJチックな映像を作りたいと思っていたのが動機です.
機能
今回は実は, amagiさんの記事 に感化され作ろうと決意して一つ一つの映像はともかく各sceneをテクスチャに書き出し, 畳み込みをするという機能を実現していたいと思っていました. さらに記事をみていただくとわかる通りMIDIコントローラーも使いたいと思っていました.
しかし, いろいろあって(Unityなんもわからん)(MIDIコン動かん)自分なりになんとか動くものを作りました. 各Sceneをテクスチャに書き出すと非常に重くなってまともに動かなくなってしまい畳み込むことは諦め, 単にsceneを切り替えるだけにしました. さらにMIDIコンは諦めました. WebGLで動かすならいいかなと前向きに思いました.
作った映像は3つで, あまり凝ったことはできませんでしたが特徴的な部分を説明していきたいと思います.
ParticleSystem
作った映像の中で2つはParticleSystemを使ったものです. ParticleSystemはUnityに搭載された標準的な機能です.
1つはパーティクルトレイルをつかってノイズで動かすのもので, 他方はパーティクルにshaderとテクスチャを付与し蝶々のような動きを実現しました.
VolumeRendering
次にボリュームレンダリングです. wikiにはこうありました.
コンピュータグラフィックスにおいて、ボリュームレンダリングとは、3次元的な広がりのあるデータを直接2次元画面に表示することである。 半透明な物体や発光体などを光学的に正しくレンダリングしたり(レイキャスティング)、CTなどで3次元的に撮影された画像を目的に沿って見やすく提示したりする(最大値投影処理など。)
自分はMRIや白骨模型などの人体の独特な不気味さが結構好きで(色がついているとぐろいです). CGを勉強し初めてボリュームレンダリングを知ってからは絶対にいつかこれを基に映像作品を作ってみたいと思っていました.
UnityのTexture3Dを使って実現しました. ここからpvmファイルをダウンロードして rawデータに書き起こすプログラムをかいてレイマーチの原理で人体の頭が透けるようなテクスチャを作りました. こいつが後々悪いことをします
Camera
カメラは中心にあるオブジェクトをむいて球場にランダムな位置をしていしてアニメーションします. UnityにはLerpなどの便利な関数があるので簡単でした
PostEffect
シェーダーを使ってポストエフェクトをつくってカメラに付与しました. 実装したのは, 色反転, distort, グリッチ, sobelフィルター, sepiaなどです . アセットなどは使わず実装しました
実は
正直, 映像自体はまだまだだなとは思いつつカメラとエフェクトをキーボードで変更できるようになって結構おもしろくなったのでそのまま学祭に展示しようと思いました 書き出そうとしたときになんと rawデータに書き起こすプログラムが悪さをして書き出せなくなりました, エラーの内容は正直わからず rawデータに書き起こすプログラムのことも正直わからずで展示することはできませんでした
最後に
今回は残念な結果と言えますがやりたいと思っていたことを一通り試すことができ, Unityについても少しだけ仲良くなれたので次回はもっといい作品を作りたいです 自分はゲームを作っているわけではなくグラフィックを実装していきたいのでとくにunityの機能というよりはゲームエンジンのプログラムなどをくわしく勉強していく必要があると思いました