AnimeEffectsのバージョン1.7がリリースされていたので、Windows版をインストールしてみました。
新機能?
・キャンバスの左右反転。
表示設定の一番右側のボタンをおすと左右反転されました。
・イージングのカスタム(ベジェ曲線)
未確認。
ソースコードのダウンロード
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
変更後は120フレーム60FPS
前回の開いたプロジェクトディレクトリで開く
プロジェクトを開く場合、デフォルトがアプリケーションインストールディレクトリになっているので、前回開いたプロジェクトのディレクトリを保存しそこから開始する用に変更。
※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");
コメント