Anime Effects-1.7をインストールした記録

コンピュータ

AnimeEffectsのバージョン1.7がリリースされていたので、Windows版をインストールしてみました。

新機能?

・キャンバスの左右反転。
image
表示設定の一番右側のボタンをおすと左右反転されました。

・イージングのカスタム(ベジェ曲線)
image
未確認。

ソースコードのダウンロード

GitHubのリポジトリからソースコードをダウンロード

「Source code(zip)」をダウンロードしました。

ソースコードのビルド

IDEのQtCreaterでは私にはビルドすることが出来ませんでした。PowerShellからコマンドを入力してビルド。

scoopでビルドの為のツール類一式(msys2,gcc,qt6など)はインストール済み。

私家版ビルドの為のPowerShellスクリプト。

ソースコードのディレクトリや外部コマンドのパスは実行環境に合わせて修正が必要。
ファイル名:build.ps1

Set-Location -Path "J:\qt\AnimeEffects-1.7"
#Remove-Item -Recurse -Force .\build
cmake -S . -B build -G "Ninja Multi-Config" -DCMAKE_RC_COMPILER="C:/Users/karet/scoop/apps/msys2/current/mingw64/bin/windres.exe"
cmake --build build --config Release
Set-Location -Path build/src/gui/Release
mkdir .\AnimeEffects-Windows-x64 -Force
windeployqt6 --dir .\AnimeEffects-Windows-x64 .\AnimeEffects.exe
Copy-Item -Path "..\data" -Destination ".\AnimeEffects-Windows-x64\" -recurse -Force
Copy-Item ".\AnimeEffects.exe" ".\AnimeEffects-Windows-x64\"
Set-Location -Path "J:\qt\AnimeEffects-1.7"

ビルドを通す為の微修正

ファイル名:src\gui\MainMenuBar.cpp

#include <windows.h> // <-追加
#include <QFile>
#include <QMessageBox>
#include <QDomDocument>

~以下略~

個人的カスタマイズ

ここからは、よく使う設定などがデフォルトになるように変更。
本来の機能を損なう可能性があります。

PNG連番書き出しの高速化

作成した動画は、基本的にPNG連番で書き出しする使い方をしています。
書き出しに時間がかかるので高速化するようにコードを書き換えます。

src\ctrl\Exporter.cpp

//-------------------------------------------------------------------------------------------------
// Exporter::ImageParam::ImageParam(): name(), suffix("png"), quality(-1) {}
Exporter::ImageParam::ImageParam(): name(), suffix("png"), quality(80) {}

変更前のPNGファイルサイズ
2.02 MB
変更後のPNGファイルサイズ
2.50 MB
変更前の書き出し時間
29秒
変更後の書き出し時間
13秒

新規プロジェクトの最大フレームとFPS調整

新規プロジェクトのたびに修正するのが面倒なのでデフォルト値を変更します。

src\core\Project.cpp

#include <QFileInfo>
#include <QUndoCommand>
#include "XC.h"
#include "core/Project.h"

namespace {
const int kParaThreadCount = 4;
//const int kStandardFps = 24; <= オリジナル
const int kStandardFps = 60;
//const int kDefaultMaxFrame = 60 * 10; <=オリジナル
const int kDefaultMaxFrame = 60 * 2;
} // namespace

src\core\Project.cpp

NewProjectDialog::NewProjectDialog(QWidget* aParent):
    EasyDialog(tr("New Project Dialog"), aParent), mFileName(), mAttribute(), mSpecifiesCanvasSize() {
    // initialize attribute
    {
        // mAttribute.setMaxFrame(60 * 10); // <=オリジナル
        mAttribute.setMaxFrame(60 * 2);
        mAttribute.setImageSize(QSize(512, 512));
    }

    this->setMainWidget(createOption(), false);
    this->setOkCancel([=](int) -> bool { return true; });
    // this->fixSize();
}

オリジナルは600フレーム24FPS
image

変更後は120フレーム60FPS
image

前回の開いたプロジェクトディレクトリで開く

プロジェクトを開く場合、デフォルトがアプリケーションインストールディレクトリになっているので、前回開いたプロジェクトのディレクトリを保存しそこから開始する用に変更。
※Windowsではレジストリに保存されるはず。

src\gui\MainWindow.cpp

void MainWindow::onOpenProjectTriggered() {
    // stop animation and main display rendering
    EventSuspender suspender(*mMainDisplay, *mTarget);

    // --- ① 前回のディレクトリを取得 --- <= 追加
    QSettings settings;
    QString lastDir = settings.value("projectloader/last_dir", QDir::homePath()).toString();
    
    // QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", "ProjectFile (*.anie)"); // <= オリジナル
     QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), lastDir, "ProjectFile (*.anie)"); // <= オリジナル
    if (fileName.isEmpty())
        return;

    // --- ③ 開いたディレクトリを保存 --- <= 追加
    settings.setValue("projectloader/last_dir", QFileInfo(fileName).absolutePath());



    // clear old project
    resetProjectRefs(nullptr);

初期リソースのディレクトリ変更

不具合があるかも?

src\gui\NewProjectDialog.cpp

QWidget* NewProjectDialog::createOption() {
    auto form = new QFormLayout();
    form->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop);
    form->setLabelAlignment(Qt::AlignRight);

    // resource
    {
        auto layout = new QHBoxLayout();

        auto line = new QLineEdit(this);
        // line->setEnabled(false);
        line->setReadOnly(true);
        line->setContextMenuPolicy(Qt::NoContextMenu);
        line->setFocusPolicy(Qt::NoFocus);
        layout->addWidget(line);

        // --- ① 前回のディレクトリを取得 --- <= 追加
        QSettings settings;
        QString lastDir = settings.value("projectloader/last_dir", QDir::homePath()).toString();
        
        const auto button = new QPushButton(this);
        this->connect(button, &QPushButton::clicked, [=] {
            //this->mFileName = QFileDialog::getOpenFileName(
            //    this, tr("Open File"), QDir::homePath(), "ImageFile (*.psd *.ora *.jpg *.jpeg *.png *.gif *.tiff *.tif *.webp)"
            //);
            this->mFileName = QFileDialog::getOpenFileName(
                this, tr("Open File"), lastDir, "ImageFile (*.psd *.ora *.jpg *.jpeg *.png *.gif *.tiff *.tif *.webp)"
            );

            line->setText(mFileName);
        });
        button->setObjectName("browser");

コメント