2011年4月4日月曜日

Julian 考-03 Transform 2 Triangle

Julian Transform 2 Triangle のパラメータをいじると大きく画像の配置が変わる。Scale TriangleやMove Triangle をクリックして試してみる。Gif Animationを参照(クリック)、Animation Scriptも添付する。


Julian Transform2 Triangle

//------------------------animation animation2.asc ------------------------------------
// Apophysis 7X15
//
//Save the following script by the file name of animation2.asc.
//Make flile folder / folder name = renders / path = c:\renders *

//制限:Flame数は9以下のこと
//200x100pixel
KeyDuration := 10;           // キーフレーム間の分割数
Prv := 1;                    // プレビューなのかレンダリングなのかの判定用
FileLocation := 'C:\renders\';  // レンダリング画像を保存する場所
RenderPrefix := 'ApoAime_';  // レンダリングファイル名の最初の文字列
RenderFiletype := 'jpg';     // レンダリングのファイルタイプ
fc := 0;                     // レンダリング画像ファイルの連番カウンター
Pq := 50;                     // プレビューの画質
RenderWidth := 200;          // レンダリング画像の幅
RenderHeight := 100;         // レンダリング画像の高さ
RenderQuality := 500;        // レンダリング画質
FilterRadius := 0.6;         // フィルターラディウス
RenderOversample := 2;       // オーバーサンプル
// ========== 情報の入力 ==========
if not InputQuery('animation2', 'Preview? or Render? (「1」ならPreview、「0」ならRenderです):', Prv) then exit;
if not InputQuery('animation2', 'キーフレーム分割数:', KeyDuration) then exit;
// ================================
timeDur := KeyDuration*1;    // キーフレーム間の分割数を代入する
numFlames := filecount;      // 総フレーム数を代入する
// ********** 各フレームの情報をメモリーに記録するループ処理 **********
for f := 0 to numFlames do
begin
    LoadFlame(f);
    Flame.Time := f*timeDur;
    StoreFlame(f);
end;
// ********** プレビューの場合の処理 **********
if Prv=1 then
begin
    // ========== 情報の入力 ==========
    if not InputQuery('animation2', 'プレビュー画質(小さめの値にしてね):', Pq) then exit;
    // ================================
    while not Stopped do
    begin
        // 通常のモーフ処理
        for m := 0 to numFlames-2 do                  // キーフレーム数分のループ処理処理
        begin
            For i := m*timeDur to (m+1)*timeDur-1 do    // キーフレーム間の分割数分のループ処理
            begin
                Morph(m, m+1, i);
                Flame.SampleDensity := Pq;
                If Stopped then Exit;
                Preview;
            end;
        end;
        // 最後のキーフレームから最初のキーフレームへモーフさせるためのメモリ内容書き換え
        LoadFlame(m+1);          // 最後のキーフレーム用データ
        Flame.Time := 0;
        StoreFlame(m+1);
        LoadFlame(0);            // 最初のキーフレーム用データ
        Flame.Time := timeDur-1;
        StoreFlame(0)
        // 最後のキーフレームから最初のキーフレームへモーフ処理
        For i := 0 to timeDur do
        begin
            Morph(m+1, 0, i);
            Flame.SampleDensity := Pq;
            If Stopped then exit;
            Preview;
        end;
        // ループ処理に備えてメモリを基に戻す
        LoadFlame(0);                        // 最初のキーフレーム用データ
        Flame.Time := 0;
        StoreFlame(0)
        LoadFlame(m+1);                      // 最後のキーフレーム用データ
        Flame.Time := numFlames*timeDur-1;
        StoreFlame(m+1);
    end;
    updateFlame := false;
end;
// ********** レンダリングの場合の処理 **********
if Prv<>1 then
begin
    // ========== 情報の入力 ==========
    if not InputQuery('animation2', 'レンダリング画像の幅:', RenderWidth) then exit;
    if not InputQuery('animation2', 'レンダリング画像の高さ:', RenderHeight) then exit;
    if not InputQuery('animation2', 'レンダリング画質:', RenderQuality) then exit;
    if not InputQuery('animation2', 'フィルターラディウス(0.2 ~ 0.8 ぐらいで):', FilterRadius) then exit;
    if not InputQuery('animation2', 'オーバーサンプル(おおむね2でOK):', RenderOversample) then exit;
    if not InputQuery('animation2', 'ファイル名の最初の文字列:', RenderPrefix) then exit;
    if not InputQuery('animation2', 'ファイルタイプ(JPG, PNG, BMP):', RenderFiletype) then exit;
    if not InputQuery('animation2', 'ファイルの保存場所:', FileLocation) then exit;
    // ================================
    {Set flame and render settings as defined by user}
//Flame resolution as determined by user input
Renderer.Width := RenderWidth;
Renderer.Height := RenderHeight;
//Flame quality as determined by user input
Flame.SampleDensity := RenderQuality;
Flame.FilterRadius := FilterRadius;
Flame.Oversample := RenderOversample;
while not Stopped do
    begin
        // 通常のモーフ処理
        for m := 0 to numFlames-2 do                  // キーフレーム数分の繰り返し処理
        begin
            For i := m*timeDur to (m+1)*timeDur-1 do    // キーフレーム間の分割数分の繰り返し処理
            begin
                Morph(m, m+1, i);
                Flame.SampleDensity := RenderQuality;
                If Stopped then Exit;
                Renderer.Filename := FileLocation + RenderPrefix + Format('_%.4d', [fc]) + '.' + RenderFiletype;
                Render;
                fc := fc + 1;
            end;
        end;
        // 最後のキーフレームから最初のキーフレームへモーフさせるためのメモリ内容書き換え
        LoadFlame(m+1);          // 最後のキーフレーム用データ
        Flame.Time := 0;
        StoreFlame(m+1);
        LoadFlame(0);            // 最初のキーフレーム用データ
        Flame.Time := timeDur-1;
        StoreFlame(0)
        // 最後のキーフレームから最初のキーフレームへモーフ処理
        For i := 0 to timeDur do
        begin
            Morph(m+1, 0, i);
            Flame.SampleDensity := RenderQuality;
            If Stopped then exit;
            Renderer.Filename := FileLocation + RenderPrefix + Format('_%.4d', [fc]) + '.' + RenderFiletype;
            Render;
            fc := fc + 1;
        end;
        Exit;
    end;
end;

0 件のコメント:

コメントを投稿