CamStandDX - [[AEexpression]] [[レンダー乙女とか]]
目次
- CamStandDX ってナニよ?
- 素材解像度対応
- 各種フレーム指定可能
- 計測原点設定
- カメラコンポがフリーサイズ
- 同一プロジェクトに複数のステージを設定可能
- カメラフレームに「おまけ表示」が盛り沢山
- 付録エクスプレッション同梱
- 注意点
こちらは、CamStandDX (デラックス版) 「試作品」です。
http://www.nekomataya.info/cgi-bin/control.cgi?PAGE=85&ITEM=051101
CamStandDX ってナニよ?
まず前提、CamStandは、AdobeAfterEffects で線画台(アニメーション撮影台)風インターフェースを実現するノウハウです。
元ネタは http://www.beanjam.co.jp/ の「AfterEffects?ネタ」コーナーにある。 「撮影台的カメラワーク設定インターフェース」になります。
有用なノウハウを公開してくださったbeanjamさんに多大な感謝!
詳しい原理や自作の際のTipsなどは、以下のオリジナルのサイトを参照してください。
http://www.beanjam.co.jp/CG_data/AE/AE_top.html
で、CamStandDX ですが、この CamStand の機能拡張版です。
ねこまたやでは DX版と銘打って、あやしげな機能拡張を施してみました。 さてはて どうでしょう?
以下オリジナルとの相違点です。
- 素材解像度対応(解像度指定が必要)
- 各種フレーム指定可能(デフォルトは225mm幅 TV=3:4 サイズ)
- ステージコンポジションに StageBase?(撮影基準点)がある
- 出力がフリーサイズ(自動伸縮)
- 同一プロジェクトに複数のステージを設定可能
- カメラフレームに以下の表示がついている
- フレームに「上マーク」付き
- カメラ位置の座標(mm単位)
- カメラの回転角(度数)
- カメラのフレームサイズ(従来タイプ)
- カメラのフレームサイズ(Retas!タイプ)
- スケール(被写体の拡大率)
- タイムコード
以下説明です。
素材解像度対応
comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ")に、解像度の指定ができます。 セルや背景の解像度を設定してください。デフォルトは144dpiです。が、自由な値を設定できます。
この値をエクスプレッションで解釈して各種の拡張機能を提供します。
各種フレーム指定可能
ステージコンポに、カメラレイヤとは別に「ステージベースレイヤ」を設定してあります。 ステージベースレイヤにはフレームのサイズと比率が設定ができます。- 横幅は mm単位で、
- 縦横比は、単独の数値(横÷縦)で設定してください。 例:
TV(3:4) | =1.3333 |
ビスタ(1:1.85) | =1.85 |
シネスコ(1:2.4) | =2.4 |
HD(9:16) | =1.7777 |
計測原点設定
ステージベースレイヤの BasePoint?エフェクトに計測原点を設定できます。 カメラレイヤには、それを元にした各種情報が表示されますので「実寸指定」のカメラワークを確認しやすくなっています。
カメラコンポがフリーサイズ
原型の"CamStand?"では、カメラコンポ と ステージコンポ 間をシンプルなエクスプレッションで接続するため、受け取り側のコンポのサイズが限定されていました。 (特にそれが悪いわけではないです。)
DX版では、中間計算を折り込んで、受け取り側のコンポのサイズをフリーサイズにできるようにしました。
サンプルプロジェクトのカメラコンポを複製して、サイズを変えてみてください。そのようなカンジになります。
プレビュー用に小さなコンポでレンダリングしたり、ステージのカメラよりも大きなコンポで受けることもできます。素材構成が複雑な場合等に 何となく役にたつかもしれません。
同一プロジェクトに複数のステージを設定可能
カメラ側のエクスプレッションをレイヤソース参照にしてありますので、ひとつのプロジェクトに複数のステージを設定できます。兼用カットなどの場合に便利?
カメラフレームに「おまけ表示」が盛り沢山
**「上マーク」ありそでなかった「上マーク」どちらがカメラの上か見失うことが減ります。
**カメラ位置の座標(mm単位)カメラ(フレーム)の現在位置をミリメートル単位で表示します。 基準位置は、初期状態でステージコンポジションの中心です。任意点を指定可能。
**カメラの回転角(度数)カメラ(フレーム)の回転角度を度数で表示できます。タイムラインが隠れていても安心。
**カメラのフレームサイズ(従来タイプ)タイムシートに指定のある「フレーム」を表示します。
スタンダードは、100f 200%の寄りサイズが 20f になる従来型です。
**カメラのフレームサイズ(Retas!タイプ)同上、ただし 某Retas!で採用されている 200%寄りサイズが 50f になるタイプです。
**スケール(被写体の拡大率)カメラフレームのスケールではなく、「フレーム内での被写体のスケール」です。 作画寸法を100%として 25%〜120% 等の指定がある場合の目安になります。
**タイムコードもつけたりして。タイムコードもあった方が良いような気がした。
「おまけ機能」結構ガッポリつけました。
付録エクスプレッション同梱
ついでに、CamStand?と一緒に使うと便利なおまけエクスプレッションをどうぞ。
- **kacAE_III 拡大縮小を補助するエフェクトテンプレート(アニメーションプリセット)です。 拡大率キーにパーセントまたはフレーム指定で中間データを擬似的に3次元風に割り出します。
詳しい使い方は、kacAE で
- **tSlave 任意のレイヤのキーと値を参照してタイミングとして適用します。 スライダをひとつ作って、制御したいプロパティに適用するとみんな同じタイミングにすることができます。任意のコマうち対応。 適用レイヤの キーやタイミングを維持して読み取ったタイミングを上乗せするので使い道は結構あります。
詳しい使い方は、tSlave で
- **fSkip 汎用のコマうちエクスプレッション 2コマ3コマ等のタイムポスタリングをします。レイヤ名を "レイヤ名/2k" などにして使います。わりとカンタン
説明はfSkip
カットの途中でコマうちが切り替わる場合は、tSlave をご使用ください。
- **follow_mmk レイヤに自律followを適用します。このエクスプレッションを、トランスフォームの位置プロパティまたは、トランスフォームエフェクトの位置プロパティに適用して、レイヤの名前に引き速度と方向解像度を書き込みます。それを読み込んで移動をつけるのでちびっとだけ楽ができるかも。
詳しい使い方は、follow で
ほかにもリクエストありましたらドゾお知らせください。 それぞれの表示は、消してしまっても動作には支障ありません。ご自分の必要なモノを残してあとは非表示なり削除なりしちゃってください。
注意点
- まだ試作版なので、なんかエライバグが潜んでいるかも。 ご使用の際は注意してください。
- AE5.5のプロジェクトと、6.5のプロジェクトの差は、 [ガイドレイヤ]を使用しているか否かだけです。 5.5でご使用の方は、「レンダリング前にカメラレイヤを非表示」にするのをどうぞお忘れなく。
使用条件はいつもの通りでゴザイマス。
http://www.nekomataya.info/contract.html
12/04 Nekomataya/kiyo 2005
あー、ひょっとして好評ならば、da-toolsさんの様なセッティングスクリプトを作成しようかと策謀中。
実はDX版は、先日(2005/11/26)思いついて…
現在やっている諸々の作業の派生物を使用したら、結構短時間でできるのではなかろうかと考えて、日曜日(/27)を使って作ってしまいました。お、もう夜半を回った。月曜だ。
即席といえば即席なので…なんだかミスなどもありそうな気がします。 興味のある方、使ってみて感想など聞かせていただくとうれしいです。 「こんな機能あっても使わないヨ」とか「あれ、できる?」とか、ドゾご気軽に BBS または メールなどでお知らせください。
==== エクスプレッションリスト ====
/* カメラ情報表示エクスプレッション */ //X座標表示エクスプレッション var Resolution=(this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ"); var BasePoint=add(sub(this_comp.layer("StageBase").position,this_comp.layer("StageBase").anchor_point),this_comp.layer("StageBase").effect("BasePoint").param("ポイント")); var cAspect=this_comp.pixel_aspect; var fAspect=1;//平面に交換したためpxAspectなし (fAspect*(anchor_point[0]-this_layer.width/2)+cAspect*(position[0]-BasePoint[0]))*25.40/Resolution; //Y座標表示エクスプレッション var Resolution=(this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ"); var BasePoint=add(sub(this_comp.layer("StageBase").position,this_comp.layer("StageBase").anchor_point),this_comp.layer("StageBase").effect("BasePoint").param("ポイント")); ((anchor_point[1]-this_layer.height/2)+(position[1]-BasePoint[1]))*25.40/Resolution; //回転角表示エクスプレッション rotation-this_comp.layer("StageBase").rotation; //フレームサイズ表示エクスプレッション(Trad) var Resolution=(this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ"); scale[0]*(144/Resolution*1.60)-60; //フレームサイズ表示エクスプレッション(Retas!) var Resolution=(this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ"); scale[0]*(144/Resolution); //スケール表示エクスプレッション var Resolution=(this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ"); (10000/scale[1])*(Resolution/144); //スケール調整エクスプレッション var Resolution=(this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:this_comp.layer("StageBase").effect("解像度(dpi)").param("スライダ"); var FrameAspect=(this_comp.layer("StageBase").effect("画面アスペクト").param("スライダ")==0)? 4/3:this_comp.layer("StageBase").effect("画面アスペクト").param("スライダ"); var BaseWidth=(this_comp.layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 225:this_comp.layer("StageBase").effect("基準幅(mm)").param("スライダ"); var BaseHeight=(this_comp.layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 168.75:this_comp.layer("StageBase").effect("基準幅(mm)").param("スライダ")/FrameAspect; [100*(Resolution/144)*(BaseWidth/225),100*(Resolution/144)*(BaseHeight/168.75)]; /* ステージベース用エクスプレッション */ //スケール調整エクスプレッション var Resolution=(effect("解像度(dpi)").param("スライダ")==0)? 144:effect("解像度(dpi)").param("スライダ"); var FrameAspect=(effect("画面アスペクト").param("スライダ")==0)? 4/3:effect("画面アスペクト").param("スライダ"); var BaseWidth=(effect("基準幅(mm)").param("スライダ")==0)? 225:effect("基準幅(mm)").param("スライダ"); var BaseHeight=(effect("基準幅(mm)").param("スライダ")==0)? 168.75:effect("基準幅(mm)").param("スライダ")/FrameAspect; [100*(Resolution/144)*(BaseWidth/225),100*(Resolution/144)*(BaseHeight/168.75)]; /* カメラコンポジション用エクスプレッション */ //アンカーポイントエクスプレッション var StageID=this_layer.source.name; comp(StageID).layer("CameraFrame").position; //位置エクスプレッション(プロパティ用) var StageID=this_layer.source.name; var Resolution=(comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ"); var FrameAspect=(comp(StageID).layer("StageBase").effect("画面アスペクト").param("スライダ")==0)? 4/3:comp(StageID).layer("StageBase").effect("画面アスペクト").param("スライダ"); var BaseWidth=(comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 225:comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ"); var BaseHeight=(comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 168.75:comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")/FrameAspect; var CameraWidth=(BaseWidth/25.40)*Resolution*comp(StageID).pixel_aspect; var CameraHeight=(BaseHeight/25.40)*Resolution; CameraAPOffset=sub( comp(StageID).layer("CameraFrame").anchor_point, [ comp(StageID).layer("CameraFrame").width/2, comp(StageID).layer("CameraFrame").height/2 ] ); add( [ CameraAPOffset[0]*this_comp.width*this_comp.pixel_aspect/CameraWidth, CameraAPOffset[1]*this_comp.height/CameraHeight ],[ this_comp.width/2,this_comp.height/2 ] ); //位置エクスプレッション(エクスプレッション用) var StageID=this_layer.source.name; var Resolution=(comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ"); var FrameAspect=(comp(StageID).layer("StageBase").effect("画面アスペクト").param("スライダ")==0)? 4/3:comp(StageID).layer("StageBase").effect("画面アスペクト").param("スライダ"); var BaseWidth=(comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 225:comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ"); var BaseHeight=(comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 168.75:comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")/FrameAspect; var CameraWidth=(BaseWidth/25.40)*Resolution*comp(StageID).pixel_aspect; var CameraHeight=(BaseHeight/25.40)*Resolution; CameraAPOffset=sub( comp(StageID).layer("CameraFrame").anchor_point, [ comp(StageID).layer("CameraFrame").width/2, comp(StageID).layer("CameraFrame").height/2 ] ); add( [ CameraAPOffset[0]*this_comp.width*this_comp.pixel_aspect/CameraWidth, CameraAPOffset[1]*this_comp.height/CameraHeight ],[ this_layer.width/2,this_layer.height/2 ] ); //スケールエクスプレッション var StageID=this_layer.source.name; var Resolution=(comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ")==0)? 144:comp(StageID).layer("StageBase").effect("解像度(dpi)").param("スライダ"); var FrameAspect=(comp(StageID).layer("StageBase").effect("画面アスペクト").param("スライダ")==0)? 4/3:comp(StageID).layer("StageBase").effect("画面アスペクト").param("スライダ"); var BaseWidth=(comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 225:comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ"); var BaseHeight=(comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")==0)? 168.75:comp(StageID).layer("StageBase").effect("基準幅(mm)").param("スライダ")/FrameAspect; var CameraWidth=( (BaseWidth/25.40)*Resolution*comp(StageID).pixel_aspect )*comp(StageID).layer("CameraFrame").scale[0]/100; var CameraHeight=( (BaseHeight/25.40)*Resolution )*comp(StageID).layer("CameraFrame").scale[1]/100; // 100*this_comp.width*this_comp.pixel_aspect/CameraWidth;//X(width) // 100*this_comp.height/CameraHeight;//Y(height) //回転エクスプレッション var StageID=this_layer.source.name; -comp(StageID).layer("CameraFrame").rotation;
突っ込みはBBSへどうぞ。 こちらの記事を直接書き換えていただいても「おっけー!」です。
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.