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からお借りしています。