Baku Hashimoto

橋本 麦

TAG
cinema4d

プロジェクションマッピング制作支援ツールつくった

スクリーンの形状が複雑なプロジェクションマッピングの制作は、その展開図の上に映像をのせていくわけですが、立体スクリーンに投影された所をリアルタイムで確認しながらコンポジットできたら便利だなーと思い、ツールをつくりました。久々のoFです。

VirtualMapper ( source )

ネーミングセンス無くてすみません。(良い案あったら教えてください)

要するに、UV付きのモデルデータを読み込んで、Syphon(ソフト間で映像をやりとりするためのオープン規格)経由で送信された映像をテクスチャとしてリアルタイム表示するというツールです。

C4Dでモデルデータの書き出し、Syphonの出力をAfter Effectsから行った時の画面キャプチャです。

たいていのVJソフトやビジュアルプログラミング環境はSyphonに対応しています。AEは、AESyphonというプラグインをインストールすれば出力可能です。(シェアウェアですが、解像度制限のかかった試用版もあります)

投影時のキャリブレーションツールはたくさん出回っていますが、制作時に便利なツールはほとんど無くて。結構今でも展開図から組み上がった所を脳内補完しながら、力技で作っているケースが多い気がします。現場テストになって初めて、少し別角度から観ると全然飛び出て見えない、って分かってしんどい思いを何度かしているので、もし次制作する機会があったら大分楽になるかなぁと思ってます。

バグや不具合、アイディアなどあったらissueかTwitterにリプライください。僕自身が必要なひと通りの機能は実装し終えたとはいえ、このまま放置するのも勿体無いので、もし一緒に開発してくださる方がいたらとても嬉しいです。

今後は制作時につくった汎用性の高いリソースやツールはバシバシ共有していきたいです。今年の目標です。

MoGraphの複製数を増やした時,新しいクローンをニョキっと生やす

タイトルわかりづらいですが…

MoGraphの複製数を増やした時に,いきなりクローンが現れるのではなく,徐々に大きくなりながら現れて欲しい時のためのスクリプトです.今やってる制作で作りました.

project file

import c4d
from c4d.modules import mograph as mo

prevCnt = 0

def main():
    global prevCnt

    md = mo.GeGetMoData(op)
    if md==None: return False

    cnt = md.GetCount()
    marr = md.GetArray( c4d.MODATA_MATRIX )

    if prevCnt < cnt :
        for i in xrange( prevCnt, cnt ) :
            marr[i].Scale( 0.001 )

    md.SetArray( c4d.MODATA_MATRIX, marr, True )
    prevCnt = cnt
    return True

ディレイエフェクタは,スケールが0からの補間の場合変な挙動をするのですが,現在のフレームで新しく登場したクローンのスケールを1フレームだけごく小さな数に設定する事で,補完が上手く効くようになります.

上の動画みたいな単純な例なら複製数を変えずにボリュームエフェクタでマスクをかけるような感覚でスケール -0.999 を適用したほうが早い気もしますが,頂点数の変わるポリゴンやマトリクスに配置した場合,例えばThinking Particlesと併用した時や,伸長するスプラインに配置した時などに使えそうです.

最近C4DのPythonイジってないからかなり忘れてる…

Rename C4D Image Seq

C4Dのレンダーキューから書きだした時につく「_l1」「_l2」等のサフィックスを取るだけのスクリプト

Download

MoGraphのクローンにオブジェクトを追従させる

![](/wp-content/uploads/2014/05/6.png) {.full}

Making of “Koji Namaura – B.O.Y.”

ナカコーのMV「B.O.Y.」、モーションデザインとコンポジット担当させて頂きました。

監督はKOTOBUKISUN所属の畳谷哲也さん、CDはファンタジスタ歌磨呂さんです。

モチーフに込めた意味、コンセプト云々はエディターとして関わらせて頂いた自分があまり語ることでは無いのですが、編集していく中で今後使えそうだなーって思ったTipsをメモっときます。

(さらに…)

Thinking Particlesでストレンジ・アトラクタ

素材一式

Thinking Particlesを使ってストレンジ・アトラクタをシミュレーションするサンプルです.

Xpressoの中身をみるとわかりますが,Pythonノードで一括で座標の更新をしています.

def lorenz_attractor(p, a, b, c, dt):
    c /= 10
    dx = -a*p.x + a*p.y
    dy = -p.x*p.z + b*p.x - p.y
    dz = p.x*p.y - c*p.z
    p.x += dx * dt
    p.y += dy * dt
    p.z += dz * dt

コードを簡略化するために,オイラー法を使っています.

要するに,現在のパーティクルの座標をもとにパーティクルにかかる力を計算し,その分だけ座標をずらしている話なので,ローレンツアトラクタに限らず,汎用性は高いです.バネのような動きを作ったり,渦巻きを描かせたりなんてことも出来ます.