Aup2Drawerは、AviUtlのプロジェクトファイル(.aup)からエクスポートされたオブジェクトファイル(.aup2形式のテキスト)をパースし、Raylib-csを使用してリアルタイムで描画するためのライブラリです。 描画まわりを変更すれば他ライブラリでも使えるはず。
- .aup2形式のテキストファイルのパースとオブジェクト構造の構築
- アニメーションのリアルタイム描画
- 中間点を含むオブジェクトの再生
- グループ制御
- 一部フィルター効果の適用
using Aup2Drawer;
using Aup2Drawer.Renderer;
using Raylib_cs;
// --- 1. パース ---
var parser = new AupParser();
var project = parser.Parse("path/to/your/animation.aup2"); // path/to/your/animation.aup2の部分は描画したいaup2ファイルのパスに置換
// --- 2. 初期化 ---
Raylib.InitWindow(project.Width, project.Height, "Aup2Drawer Example");
Raylib.SetTargetFPS(120); // アプリケーション自体のFPSを設定 (アニメーションのFPSとは独立)
// --- レンダラーの初期化オプション ---
// 例1: ループ再生する
var renderer = new AupRenderer(project, isLooping: true);
// 例2: ループせず、再生が終了したら停止
// var renderer = new AupRenderer(project, isLooping: false);
renderer.Play(); // 再生開始
// --- 3. メインループ ---
while (!Raylib.WindowShouldClose())
{
renderer.Update(); //1フレームに1度更新
// --- 描画 ---
Raylib.BeginDrawing();
Raylib.BeginBlendMode(BlendMode.Alpha); // 内部でrlgl.SrtBlendMode()を用いて合成モードを切り替えているので、これがないと合成モードが正しく切り替わらない
Raylib.ClearBackground(Color.Black);
// --- 描画位置の指定 ---
// 例: ウィンドウの中央に描画する
float drawPosX = (Raylib.GetScreenWidth() - project.Width) / 2.0f;
float drawPosY = (Raylib.GetScreenHeight() - project.Height) / 2.0f;
renderer.Draw(drawPosX, drawPosY); //ここで描画、3つ目の引数として時間を入れるとその時間だけフェードインしながら描画
Raylib.EndBlendMode();
Raylib.EndDrawing();
}
// --- 4. クリーンアップ ---
renderer.Dispose();
Raylib.CloseWindow();
| 機能 | 対応状況 | 備考 |
|---|---|---|
| 基本オブジェクト | ✅ | 画像ファイル、グループ制御 |
| 中間点 | ✅ | 1つのオブジェクトに複数のキーフレームを持つ構造に対応 |
| 座標 (X, Y, Z) | ✅ | Z座標はパースされますが、2D描画では使用されません |
| 拡大率 | ✅ | |
| 透明度 | ✅ | |
| 回転 | Z軸回転のみ対応 | |
| 縦横比 | ✅ |
| 移動方法 | 対応状況 | 備考 |
|---|---|---|
| 直線移動 | ✅ | デフォルトでは線形補間、加速の場合EaseInQuad、減速の場合EaseOutQuad、加減速の場合EaseInOutQuadでそれぞれ近似 |
| 瞬間移動 | ✅ | 区間に入ったら終点の値になる |
| 補間移動 | ✅ | デフォルト(加減速ON)ではEaseInOutSine、加速の場合EaseInSine、減速の場合EaseOutSine、加減速なしの場合線形補間でそれぞれ近似 |
| 時間制御 | ✅ | 3次ベジェ曲線(スプライン)として実装 |
| その他 | ❌ | 未対応の移動方法はすべて「直線移動」として処理されます |
| 合成モード | 対応状況 | 対応したRaylib-csのBlendMode |
|---|---|---|
| 通常 | ✅ | BlendMode.Alpha |
| 加算 | ✅ | BlendMode.Additive |
| 減算 | ✅ | BlendMode.SubtractColors |
| 乗算 | ✅ | BlendMode.Multiplied |
| その他 | ❌ | 未対応の合成モードは通常モードとして扱われます |
| フィルター | 対応状況 | 備考 |
|---|---|---|
| 拡大率 | ✅ | 基準拡大率、X、Yに対応 |
| 反転 | 上下反転、左右反転にのみ対応 | |
| その他 | ❌ | 未対応のフィルターは無視されます(が、透明度とかは使えるはず) |
- 音声/図形オブジェクト
- 未対応のデータはすべて無視されます。
- カメラ制御
- カメラ制御オブジェクトには対応していません。
- テキストオブジェクト
- テキストオブジェクトの描画には対応していません。
- スクリプト制御
- スクリプトによる制御には対応していません。
- 3D関連のプロパティ
- X軸回転, Y軸回転 など、3Dに関連するプロパティは無視されます。
Texture.csはazarea09様のPotesaraからお借りしています。