新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴
== o ==
ねこまたや web出張所
INDEX

トップページ
お知らせ
twitter
お道具箱
技術資料と雑談
ライブラリ
雑貨や(ダウンロード)
最近の更新
ねこまたやについて

twitter

ねこまたやのついった

企画モノ

psAxe情報ページ
自主制作アニメ
ぽこあぽこ られんたんど


あやかしあやし
エフェクトネタ帳



りまぴん
AE エクスプレッション
レンダー乙女とか
簡易版XPSリンカ
おまけギャラリ

BBS

ねこまたやBBS
開発室BBS

Language



開発室みたいなものでしたが
spamアクセスがはげしいのでページは凍結中です。
書き換えは管理人のみが可能です。
Nekomataya/2024

nas.common - *nas アニメーション一般ライブラリ


差分表示


*nas アニメーション一般ライブラリ
AE等のAdobe Script 環境で使用可能な関数およびプロパティをサポートします

*nasオブジェクトのプロパティ
現行のプロパティは未整理の為使用しないプロパティが多数残っています。
全てのプロパティが今後も存在する保証はありません。バージョンに御注意

**時間関連設定
***ccrate
	nas.ccrate = 1000 ;	//最少計測単位(javascriptではミリ秒固定)
***MODE
	nas.MODE = "clock" ;	//表示の初期モード(時計)
***ClockOption
	nas.ClockOption = 12 ;	//時計の初期モード (12時制)
***STATUS
	nas.STATUS = "stop" ;
**フレームレート	ここの並びでループする 100fps 24FPS 30NDF 30DF 25FPS
***RATEs
	nas.RATEs = ["100fps","24FPS","30NDF","30DF","25FPS"];
***RATE
	nas.RATE = "24FPS" ;
**FCTインターフェース関連
***SheetLength
	nas.SheetLength = 144;//タイムシート継続時間 フレーム/枚

**サンプル基準値
***FRATE
	nas.FRATE = 24;//サンプルフレームレート(フレーム継続時間に置き換えるか一考)
***RESOLUTION
	nas.RESOLUTION = 144. / 2.540 ;//サンプル解像度ppc(dpc)
***LENGTH
	nas.LENGTH = 225. ;//サンプル基準寸法(mm)
***FRAME_L
	nas.FRAME_L=100 ;//サンプル基準フレーム(fl)
***SCALE
	nas.SCALE = 1;//サンプル拡大比率(実数)

**コンポジション3Dカメラ情報
***FOCUS_D
	nas.FOCUS_D = 50; //レンズ焦点距離 (mm)
***FILM_W
	nas.FILM_W = 36;//FILM Width (mm)
***FILM_H
	nas.FILM_H = 24;//FILM Height(mm)
***IMAGE_CR
	nas.IMAGE_CR = function(){return Math.sqrt(Math.pow(this.FILM_W,2)+Math.pow(this.FILM_H,2))};//イメージサークル直径(mm)
**コンポジション設定
***COMP_W
	nas.COMP_W = 720;//comp Width (px);
***COMP_H
	nas.COMP_H = 486;//comp Height(px);
***COMP_A
	nas.COMP_A = 0.9;//comp Aspect(W/H);

***COMP_D
	nas.COMP_D = function(){return Math.sqrt(Math.pow(this.COMP_W * this.COMP_A,2)+ Math.pow(this.COMP_H,2));};
***CAMERA_D
	nas.CAMERA_D = function(){return (this.COMP_D() * this.FOCUS_D)/ this.IMAGE_CR();};


**レイヤ・フッテージ設定
//今のところキーに添付するだけの値(変換には無関係)
***SRC_W
	nas.SRC_W = 720;//source Width (px);
***SRC_H
	nas.SRC_H = 486;//source Height(px);
***SRC_A
	nas.SRC_A = 0.9;//source Aspect(W/H);

**AE-Key data 出力関連の変数(初期値)
***AE_Ver
	nas.AE_Ver = "5.0";// 4.0/5.0/6.0
***KEY_STYLE
	nas.KEY_STYLE = "withTime";//or "valueOnly"
***KEY_TYPE
	nas.KEY_TYPE = "Scale";// or "Position"
**その他 未整理イロイロ
//子変数 親変数から導かれる表示データ(または派生データ)
//変数名は、大文字ではじまり 後ろは小文字のみ
//フォーム上の同名のinputは極力大文字のみで表記
//RESOLUTION 派生変数 ラムダ関数試験
***Dpi()
	nas.Dpi = function(dpi){if(dpi){if(! isNaN(dpi)){this.RESOLUTION=dpi/2.540}};return this.RESOLUTION * 2.540;} ;
***Dpc()
	nas.Dpc = function(dpc){if(dpc){if(! isNaN(dpc)){this.RESOLUTION=dpc}};return this.RESOLUTION;} ;
//FRAME_L 派生変数
***FRAMEl()
	nas.FRAMEl = function(){this.FRAME_L;};
***FRAMEr()
	nas.FRAMEr = function(){this.fl2fr(this.FRAME_L);};

**提供されるメソッド

***nas.dt2sc(z距離)
:概要:z軸距離(ピクセル)からスケールを求める。nasオブジェクトのプロパティを参照するので、必要なプロパティをあらかじめ設定しておくこと。
:戻り値:スケール float
:参照プロパティ:nas.CAMERA_D

***nas.sc2dt(スケール)
:概要:スケールからz軸距離を求める。nasオブジェクトのプロパティを参照するので、必要なプロパティをあらかじめ設定しておくこと。
:戻り値:z距離(pixels) float
:参照プロパティ:nas.CAMERA_D

***nas.fl2fr(撮影フレーム)
:概要:撮影フレームからレタス撮影フレームを求める。
:戻り値:
:参照プロパティ:

***nas.fr2fl(レタス撮影フレーム)
:概要:レタスフレームから対応する旧形式の撮影フレームを求める。
:戻り値:撮影フレーム float
:参照プロパティ:(特になし)

***nas.fl2sc(撮影フレーム)
:概要:撮影フレームから100フレームを1とした場合の被写体のスケールを求める。
:戻り値:スケール float
:参照プロパティ:(特になし)

***nas.fr2sc(レタス撮影フレーム)
:概要:	レタス撮影フレームから100フレームを1とした場合の被写体のスケールを求める。
:戻り値:スケール float
:参照プロパティ:

***nas.sc2fl(スケール)
:概要:スケールから撮影フレームを求める。
:戻り値:撮影フレーム float
:参照プロパティ:

***nas.sc2fr(スケール)
:概要:スケールからレタス撮影フレームを求める。
:戻り値:スケール float
:参照プロパティ:

***nas.kac(開始寸法,終了寸法,助変数)
:概要:開始寸法・終了寸法と助変数を与えて、対応する寸法を求める。
助変数は開始寸法に対して0 / 終了寸法に対して1となり、中間の値を小数値で与える。
この助変数は、各寸法を同一の被写体がカメラからの距離の違いによって作画面での寸法差になっているものとして。
その2点間の距離を1と置いて、少数であらわしたものとします。
あっさり言えば、比の逆数です。
単位に無関係な計算なので、寸法のかわりに比率をおくと中間の比率になります。
助変数は、基本的に0から1の間ですが、条件によっては外側に結果を延長することもできます。
計算の性質上特定の数値で値が発散する場合があります。
:戻り値:助変数に対応する寸法 float
:参照プロパティ:

***nas.cak(開始寸法,終了寸法,拡大率)
:概要:開始寸法・終了寸法と任意寸法を与えて、寸法に対応する助変数を求める。
kacの逆関数です。
:戻り値:助変数(0-1) float
:参照プロパティ:

***nas.Zf(数値,桁数)
:概要:	数値を指定桁数のゼロで埋める。
:戻り値:String
:参照プロパティ:

***nas.ms2fr(ミリ秒数)
:概要:ミリ秒数から、フレーム数を求める。
もともとがストップウオッチの表示用なので、フレーム数に満たない端数は切り捨てです。
:戻り値:フレーム数 integer
:参照プロパティ:nas.FRATE

***nas.fr2ms(フレーム数)
:概要:フレーム数から、ミリ秒数を求める。
:戻り値:ミリ秒数 float
:参照プロパティ:nas.FRATE

***nas.ms2FCT(ミリ秒数,カウンタタイプ,オリジネーション[,フレームレート])
:概要:ミリ秒数から、カウンタ文字列への変換。
カウンタータイプ・オリジネーション・フレームレートを指定
アニメーション業務用のTC文字列として使用可能
:戻り値:カウンタ文字列 string
:参照プロパティ:

***nas.FCT2ms(カウンタ文字列)
:概要:カウンタ文字列から、ミリ秒数への変換。
:戻り値:ミリ秒数 float
:参照プロパティ:

***nas.Frm2FCT(フレーム数,カウンタタイプ,オリジネーション[,フレームレート])
	フレーム数(0オリジン)から、カウンタ文字列への変換
	カウンタータイプ・オリジネーション・フレームレートを指定
:概要:
:戻り値:
:参照プロパティ:
***nas.FCT2Frm(カウンタ文字列)
	カウンタ文字列から、フレーム数(0オリジン)への変換
:概要:
:戻り値:
:参照プロパティ:

**====ベジェ関連

***	nas.bezier(SP, CP1, CP2, EP, T)
:引数:
, SP	,開始値
, CP1	,制御値 1(開始点のOutTangentから取得)
, CP2	,制御値 2(終了点のInTangentから取得)
, EP	,終了値
, T	,助変数 (0〜1 値の欲しいタイミングを開始と終了の間の比率で与える)

:戻値:
, V	,助変数に対応する補間値

基本的なベジェ関数
 この関数で得られる値は1次元なので座標計算に使用する場合は
 必要な次元数だけ繰り返して呼び出す必要があるので注意

***	nas.bezierA(CP1, CP2, Vl)
:引数:
, CP1	,制御値1(0〜1)
, CP2	,制御値2(0〜1)
, Vl	,助変数を求める値(0〜1)

:戻値:
, Tx	,開始値を"0" 終了値を"1" と仮定して 入力値 Vlに対応する助変数 Tx

補間値から助変数を導くベジェの逆関数。
 ただしベジェの助変数と補間値は一般的には1対1の対応をしないので、
 これは一般式ではない。
 制御値を0-1の区間に限定することで逆変換を可能にした限定式である点に注意のこと。
 ベジェカーブを限定的に使用してタイミング指定を行う際に使用するための関数


***	nas.bezierL(SP,CP1,CP2,EP,sT,eT,Slice)
:引数:
, SP	,開始値
, CP1	,制御値 1(開始点のOutTangentから取得)
, CP2	,制御値 2(終了点のInTangentから取得)
, EP	,終了値
, sT	,開始助変数 弧長を求める開始点の助変数 省略時は 0
, eT	,終了助変数 弧長を求める終了点の助変数 省略時は 1
, Slice	,精度を上げるための分割数指定 省略時は 10

:戻値:
, Lx	,ベジェの弧長

ベジェの弧長を近似的に求める関数。
 分割して直線補間を行うので真の値よりも下方で近似値が出る。
 分割数をあげると精度は上がるが計算時間は増加する。
 制御値が極端に大きかったり小さかったりする場合をのぞいては
 デフォルトの10で実用上十分な近似が得られると思います。


**==== 色彩関連(web用)
***nas.colorStr2Ary(カラー文字列)
	WEB色指定用の文字列を3次元の配列にして返す
:概要:
:戻り値:
:参照プロパティ:
***nas.colorAry2Str([配列])
	配列で与えられたRGB値を16進文字列で返す。
:概要:
:戻り値:
:参照プロパティ:

**==== 行列計算
行列演算関数の行列は配列の組み合わせでなく、要素のストリーム文字列である。
たとえば、3×3の単位行列は、
unitMatrix=[
	[1,0,0],
	[0,1,0],
	[0,0,1]
];
ではなく、以下のように表現されます、

unitMatrix="1,0,0,0,1,0,0,0,1";

これは、主にpsファイルとの親和性の為の仕様です。
申し訳ありませんが配列が必要な場合は適切に変換して使用してください。

***nas.showMatrix(ラベル,行列文字列,行数,列数)
	与えられた行列文字列に改行を加えて文字列で返す。
:概要:
:戻り値:
:参照プロパティ:

***nas.mDeterminant(行列文字列)
	行列式(和)を返す。
:概要:
:戻り値:
:参照プロパティ:

***nas.multiMatrix(行列文字列1,行列文字列2)
	行列積を求める。
:概要:
:戻り値:
:参照プロパティ:

***nas.mInverse(行列文字列)
	逆行列を求める。
:概要:
:戻り値:
:参照プロパティ:

***nas.transMatrix(行列文字列)
	行列を転置する。
:概要:
:戻り値:
:参照プロパティ:

**システムのオブジェクトにオーバライドするメソッド
nas拡張をインストールすると既存のオブジェクトにいくつかのプロパティやメソッドを追加します。
***Date.toNASSString()
:概要:	読出専用 "yy/mm/dd hh:mm:ss" 形式を拡張
:戻り値:string
:参照プロパティ:
***Date.setNASSString("yy/mm/dd hh:mm:ss")
	; returns object
:概要:	"yy/mm/dd hh:mm:ss" 形式で日時をセットする
:戻り値:
:参照プロパティ:
----
あー 書きかけですが、こんなカンジ