MathAnimation - シンプルでダーティな数学的に正確なアニメーションを作成するためのシンプルなC ++ / OpenGLアプリケーション

(A simple C++/OpenGL application to create quick and dirty mathematically accurate animations)

Created at: 2021-07-24 09:13:00
Language: C++

数学アニメ

これは、YouTubeチャンネルで動画のアニメーションを作成するために使用するツールです。このツールを使用して作成されたビデオの例を見ることができます 詳細を見る.私の目標は、編集プロセスを強化するためのGUI +オーディオプレビューを使用したリアルタイムを除いて、Manimによって作成されたものとほぼ同じアニメーションを作成することです。

これは、このツールの機能の一部を紹介する小さなGIFです。

.GIF

サポートされているプラットフォーム

  • ウィンドウズ

ウィンドウでのコンパイル

まず、次のコマンドを実行して、リポジトリとサブモジュールのクローンを作成します。

git clone --recursive https://github.com/ambrosiogabe/MathAnimation

初回セットアップ

これらの手順は、このライブラリを初めてコンパイルするときにのみ実行する必要があります。

クリックして初回セットアップ手順を表示

FFmpeg のコンパイル

これを手動でコンパイルするには、FFmpegの静的バイナリをビルドして、最終ビルドにコピーしてアプリケーションに静的にリンクできるようにする必要があります。

ffmpeg の環境のセットアップ

私はWindowsとMSVCの指示を書いているだけです。別の環境でffmpegをコンパイルする方法については、ffmpegのドキュメントで詳細を確認し、適切な変更を加えてください。

残念ながら、ffmpegは特に野生の獣なので、コンパイルは簡単ではありません。

(次の手順は、ffmpegのドキュメントから変更されています)

まず、次のツールがインストールされていることを確認します。

次に、次の手順を実行します。

  1. あなたの.
    nasm.exe
    PATH
  2. MSYS2 で適切な環境をセットアップするには、Visual Studio またはインテル コンパイラのコマンド プロンプトから実行する必要があります。これをする:
    msys_shell.bat
    • まず、ウィンドウの検索バーに入力します。
      x86_x64 Cross Tools Command Prompt for VS 2022
      • 注: 32 ビット アーキテクチャ用にコンパイルする場合は、x86 バージョンを開き、32 ビット アーキテクチャ情報を使用するように以下の手順を変更する必要があります。
    • コマンド プロンプトを実行します。
    • msys2 をインストールした場所にディレクトリーを変更します。
      • 私のデフォルトのディレクトリは
        cd C:\tools\msys64
    • 実行して msys2 を起動します。
      msys2_shell.cmd -use-full-path
  3. 動作することを確認してください。実行は、以下で始まる何かを出力する必要があります。
    cl
    cl
    Microsoft (R) C/C++...
  4. が利用可能であることを確認してください。実行中にバージョンが印刷されます。
    NASM
    nasm -v
  5. このリポジトリがインストールされているディレクトリに移動します。
    • これをコンパイルするには、いくつかの依存関係をインストールする必要があります。
      • pacman -S diffutils
      • pacman -S make
  6. 最後に、ffmpegをコンパイルするには、手順2で起動したターミナルで次のコマンドを実行します。
# NOTE This will take quite some time to compile
# To compile it faster you can use `make -j{core count}` instead of `make` where
# core count is 2 cores less than the number of cores available on your machine
pushd ./Animations/vendor/ffmpeg
./configure \
    --toolchain=msvc \
    --prefix=./build \
    --disable-doc \
    --arch=x86_64 \
    --disable-x86asm 
make 
make install

# Rename the files to .lib extension to make premake happy
mv ./build/lib/libavcodec.a ./build/lib/libavcodec.lib
mv ./build/lib/libavdevice.a ./build/lib/libavdevice.lib
mv ./build/lib/libavfilter.a ./build/lib/libavfilter.lib
mv ./build/lib/libavformat.a ./build/lib/libavformat.lib
mv ./build/lib/libavutil.a ./build/lib/libavutil.lib
mv ./build/lib/libswresample.a ./build/lib/libswresample.lib
mv ./build/lib/libswscale.a ./build/lib/libswscale.lib
popd
  1. すべてが正しくコンパイルされたことを確認します。ディレクトリにという名前のファイルがあるはずです。このディレクトリ内には、拡張子の付いたファイルがいくつか表示されますが、これらはffmpegバイナリです。
    build
    ./Animations/vendor/ffmpeg/build
    .lib
    • これが正しければ、ffmpegのコンパイルは完了です。

コンパイル

手記:このプロジェクトを初めてコンパイルする場合は、初回セットアップ手順が完了していることを確認してください。上のドロップダウンをクリックして、完全な手順を入手してください。


手記:これをビルドするにはCMakeが必要です。CMake 3.15以降がインストールされていることを確認してください。

次のコマンドを実行します。

mkdir build 
pushd build 
cmake ..
popd 

次に、プロジェクトを開くか、MSVC 開発者のプロンプトを使用してコマンド ラインからコンパイルします。

build/MathAnimationsPrj.sln

現在の機能

プロジェクトマネジメント:

  • プロジェクトのスプラッシュ画面を使用したプロジェクトの作成/オープン
  • タブを使用してプロジェクト内のさまざまなシーンを作成/開きます。
    Scene Manager
  • タブを使用してさまざまなスクリプトを作成/開きます。
    Asset Manager

コンソール出力:

  • に追加されたスクリプトは、ここにエラーをダンプします
    Asset Manager
  • スクリプトから書き込まれたログはすべてここに書き込まれます
  • ログをクリックして、ログに記録したファイルを開きます

アニメーションエディタビュー:

  • このビューを使用して、作業中のシーンを編集します
  • このビューでは、ギズモを使用してオブジェクトをドラッグできます。
  • ここでオブジェクトをクリックすると、インスペクターでそのプロパティをプルアップできます
  • マウススクロールホイールでズーム
  • マウスのスクロールホイールをクリックしてパンします

アニメーションビュー:

  • 現在のシーンの最終レンダリング ビュー
  • 再生/停止を押してアニメーションを開始します
    • いつでもスペースを押して、アニメーションを再生/停止することもできます

ビデオのエクスポート:

  • 最終的なアニメーションをmp4ファイルとしてエクスポートする

タイムライン(タブにあります):

Timeline

  • 上部中央のズームバーを使用してタイムラインをズームインします
  • タイムラインクリップのスナップを有効にするには、マグネットアイコン
    • 赤はオンであることを意味し、白はオフであることを意味します
  • ズームバーの右側にあるボタンを押してズームをリセットする
    Undo-All
  • 左側のパネルを右クリックして新しいタイムライントラックを作成します
  • オーディオ波形プレビューの追加/削除:左パネル右クリック
  • アニメーションをタイムラインにドラッグアンドドロップする
  • カーソルをドラッグするには、ルーラーをクリックしてドラッグします。
  • キーボードを選択して押すと、クリップが削除されます
    Delete
  • クリップの端をクリックしてクリップのサイズを変更する
  • クリップをクリックしてドラッグすると、クリップが移動します。

アニメーション(タブにあります):

Animations

  • 移動先アニメーション (指定した位置にオブジェクトを移動します)
  • アニメーションの作成(オブジェクト/子のアウトラインをレンダリングしてから、図形を塗りつぶします)
  • 作成解除 (逆に作成)
  • フェードイン
  • フェードアウト
  • 置換変換(あるオブジェクト/子を別のオブジェクト/子にモーフィング)
  • 回転先 (実装されていません)
  • ストロークカラーのアニメーション化(実装されていません)
  • 塗りつぶし色のアニメーション化 (実装されていません)
  • ストローク幅のアニメーション化(実装されていません)
  • シフト(壊れた)
  • 外接(線がオブジェクト/子を囲んでから消えるアニメーションを再生します)
  • スケールのアニメーション

[シーン]タブ:

  • オブジェクトは、アニメーション化されている場合は緑、非アクティブな場合は灰色、アクティブな場合は白です。
  • 右クリックしてアニメーションオブジェクトを追加
  • オブジェクトを選択し、キーボードを押して削除します
    Delete
  • シーンの階層を再配置するには、オブジェクトをクリックしてドラッグします

アニメーションオブジェクト(タブにあります):

Scene

  • カメラ
  • テキストブロック(マシンにインストールされている任意のフォントを使用してテキストを追加します)
  • LaTeXオブジェクト(LaTeXをシーン内のオブジェクトとして追加)
  • 正方形
  • キューブ (状態不明)
  • アクシス (実装されていません)
  • SVG ファイル オブジェクト(SVG ファイルをシーン内のオブジェクトとして読み込む)
  • スクリプトオブジェクト(アセットパネルで作成したスクリプトをここにドラッグして、カスタムオブジェクトを生成します)
  • コードブロック(テキストブロックに似ていますが、言語/テーマが選択された状態でコードを強調表示します)

アニメーションオブジェクトインスペクタ:

  • シーンタブ内の任意のオブジェクトをクリックして、そのプロパティをここにプルアップします
  • 右側に記号の付いたボタンがある場合は、それをクリックすると、すべての子に変更が適用されます
    Copy
  • SVG スケールは、SVG キャッシュにレンダリングする解像度を決定します。これを増やすと忠実度は上がりますが、スペースが限られているため、あまり大きくしないでください。

アニメーションインスペクター:

  • あなたの中の任意のセグメントをクリックして、ここでそのプロパティを開きます
    Timeline
  • Anim Objects
    ドロップダウンを使用すると、このアニメーションにアニメーションオブジェクトを追加できます。アニメーションオブジェクトをパネルからドロップ領域にドラッグするだけです
    Scene
    Add Anim Object
  • アニメーション曲線を変更するか、アニメーションが or
    Synchronous
    Lagged

アプリの指標:

  • アプリが遅いと感じた場合は、これを開いて、FPSやアプリの負荷などのより詳細な情報を取得します

エディタ設定:

  • シーンビューをワイヤフレーム/塗りつぶしから変更する
  • エディターのカメラ感度を調整する

ライセンス

許可されているものと許可されていないものについては、添付のEULAを参照してください。私は人々がこのライブラリをフォークし、このソースコードに基づいて新しいプロジェクトでソロ開発を続けることに反対していませんが、そうする前にGithubの問題やその他のコミュニケーション方法を介して連絡してください。このライブラリは、個人的な使用のためにコンパイルおよび変更するのは無料ですが、バイナリコピー(有料または無料)を配布することは無料ではありません。ご不明な点がございましたら、Githubの問題、Discord、またはその他の適切な通信方法を通じて私に連絡してください。