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 件のコメント:
コメントを投稿