X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=example%2Fdemo.patch;h=9c5f42c2244e9eee107296f5de9513b2c9146950;hb=6de300a6af39c7781918f90574995a9a10f2ca7d;hp=304b68767397d00bf0dde917a05468aea19a8b66;hpb=eba2eb3a02959e9c1262b1b238b95f25e64f7a00;p=mouse-tracker-for-cubism.git diff --git a/example/demo.patch b/example/demo.patch index 304b687..9c5f42c 100644 --- a/example/demo.patch +++ b/example/demo.patch @@ -1,12 +1,12 @@ diff -pruN --exclude build ./demo_clean/CMakeLists.txt ./demo_dev/CMakeLists.txt ---- ./demo_clean/CMakeLists.txt 2020-10-01 22:47:25.846828066 +0100 -+++ ./demo_dev/CMakeLists.txt 2020-10-01 23:29:15.530233484 +0100 +--- ./demo_clean/CMakeLists.txt 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/CMakeLists.txt 2021-06-12 17:14:36.877121318 +0100 @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.16) # Set app name. set(APP_NAME Demo) # Set directory paths. -set(SDK_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../..) -+set(SDK_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../CubismSdkForNative-4-r.1) ++set(SDK_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../CubismSdkForNative-4-r.3) set(CORE_PATH ${SDK_ROOT_PATH}/Core) set(FRAMEWORK_PATH ${SDK_ROOT_PATH}/Framework) set(THIRD_PARTY_PATH ${SDK_ROOT_PATH}/Samples/OpenGL/thirdParty) @@ -19,17 +19,19 @@ diff -pruN --exclude build ./demo_clean/CMakeLists.txt ./demo_dev/CMakeLists.txt set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -@@ -64,6 +64,9 @@ target_link_libraries(Framework Live2DCu +@@ -64,6 +64,11 @@ target_link_libraries(Framework Live2DCu # Find opengl libraries. find_package(OpenGL REQUIRED) +# Add MouseTrackerForCubism ++find_package(PkgConfig) ++pkg_check_modules(GTKMM gtkmm-3.0) +add_subdirectory(../.. MouseTrackerForCubism_build) + # Make executable app. add_executable(${APP_NAME}) # Add source files. -@@ -73,9 +76,11 @@ target_link_libraries(${APP_NAME} +@@ -73,9 +78,20 @@ target_link_libraries(${APP_NAME} Framework glfw ${OPENGL_LIBRARIES} @@ -38,13 +40,22 @@ diff -pruN --exclude build ./demo_clean/CMakeLists.txt ./demo_dev/CMakeLists.txt ) # Specify include directories. -target_include_directories(${APP_NAME} PRIVATE ${STB_PATH}) -+target_include_directories(${APP_NAME} PRIVATE ${STB_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/../../include) ++target_include_directories(${APP_NAME} PRIVATE ${STB_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/../../include ${GTKMM_INCLUDE_DIRS}) ++ ++# Copy GUI to build directory ++add_custom_command( ++ TARGET ${APP_NAME} ++ POST_BUILD ++ COMMAND ++ ${CMAKE_COMMAND} -E ++ copy ${CMAKE_CURRENT_SOURCE_DIR}/../../src/gui.glade $/gui.glade ++) # Copy resource directory to build directory. add_custom_command( diff -pruN --exclude build ./demo_clean/scripts/make_gcc ./demo_dev/scripts/make_gcc ---- ./demo_clean/scripts/make_gcc 2020-10-01 22:47:25.854827921 +0100 -+++ ./demo_dev/scripts/make_gcc 2020-10-12 03:42:07.847955578 +0100 +--- ./demo_clean/scripts/make_gcc 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/scripts/make_gcc 2021-04-28 12:18:50.948333190 +0100 @@ -10,4 +10,4 @@ BUILD_PATH=$SCRIPT_PATH/../build/make_gc cmake -S "$CMAKE_PATH" \ -B "$BUILD_PATH" \ @@ -52,9 +63,18 @@ diff -pruN --exclude build ./demo_clean/scripts/make_gcc ./demo_dev/scripts/make -cd "$BUILD_PATH" && make +cd "$BUILD_PATH" && make -j4 diff -pruN --exclude build ./demo_clean/src/CMakeLists.txt ./demo_dev/src/CMakeLists.txt ---- ./demo_clean/src/CMakeLists.txt 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/CMakeLists.txt 2020-10-01 22:47:24.842846271 +0100 -@@ -19,6 +19,4 @@ target_sources(${APP_NAME} +--- ./demo_clean/src/CMakeLists.txt 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/CMakeLists.txt 2021-04-28 12:21:56.795134807 +0100 +@@ -6,8 +6,6 @@ target_sources(${APP_NAME} + ${CMAKE_CURRENT_SOURCE_DIR}/LAppDefine.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/LAppDelegate.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/LAppDelegate.hpp +- ${CMAKE_CURRENT_SOURCE_DIR}/LAppWavFileHandler.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/LAppWavFileHandler.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/LAppLive2DManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/LAppLive2DManager.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/LAppModel.cpp +@@ -21,6 +19,4 @@ target_sources(${APP_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/LAppView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/LAppView.hpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp @@ -62,9 +82,9 @@ diff -pruN --exclude build ./demo_clean/src/CMakeLists.txt ./demo_dev/src/CMakeL - ${CMAKE_CURRENT_SOURCE_DIR}/TouchManager.hpp ) diff -pruN --exclude build ./demo_clean/src/LAppDefine.cpp ./demo_dev/src/LAppDefine.cpp ---- ./demo_clean/src/LAppDefine.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppDefine.cpp 2020-10-18 04:59:13.238452938 +0100 -@@ -61,11 +61,11 @@ namespace LAppDefine { +--- ./demo_clean/src/LAppDefine.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppDefine.cpp 2021-04-28 12:18:50.948333190 +0100 +@@ -64,11 +64,11 @@ namespace LAppDefine { const csmInt32 PriorityForce = 3; // デバッグ用ログの表示オプション @@ -79,8 +99,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppDefine.cpp ./demo_dev/src/LAppDe // デフォルトのレンダーターゲットサイズ const csmInt32 RenderTargetWidth = 1900; diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LAppDelegate.cpp ---- ./demo_clean/src/LAppDelegate.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppDelegate.cpp 2020-10-01 22:47:24.698848890 +0100 +--- ./demo_clean/src/LAppDelegate.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppDelegate.cpp 2021-04-28 12:18:50.948333190 +0100 @@ -45,7 +45,8 @@ void LAppDelegate::ReleaseInstance() s_instance = NULL; } @@ -209,8 +229,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LApp Csm::csmVector LAppDelegate::Split(const std::string& baseString, char delimiter) diff -pruN --exclude build ./demo_clean/src/LAppDelegate.hpp ./demo_dev/src/LAppDelegate.hpp ---- ./demo_clean/src/LAppDelegate.hpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppDelegate.hpp 2020-10-01 22:47:24.842846271 +0100 +--- ./demo_clean/src/LAppDelegate.hpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppDelegate.hpp 2021-04-28 12:18:50.948333190 +0100 @@ -40,7 +40,8 @@ public: /** * @brief APPに必要なものを初期化する。 @@ -285,9 +305,9 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.hpp ./demo_dev/src/LApp - -}; diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src/LAppLive2DManager.cpp ---- ./demo_clean/src/LAppLive2DManager.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppLive2DManager.cpp 2020-10-02 02:00:49.961556700 +0100 -@@ -52,9 +52,10 @@ void LAppLive2DManager::ReleaseInstance( +--- ./demo_clean/src/LAppLive2DManager.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppLive2DManager.cpp 2021-04-28 12:24:45.405646016 +0100 +@@ -52,11 +52,11 @@ void LAppLive2DManager::ReleaseInstance( LAppLive2DManager::LAppLive2DManager() : _viewMatrix(NULL) @@ -296,11 +316,13 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src + , _translateX(0.0f) + , _translateY(0.0f) { + _viewMatrix = new CubismMatrix44(); +- - ChangeScene(_sceneIndex); } LAppLive2DManager::~LAppLive2DManager() -@@ -98,26 +99,6 @@ void LAppLive2DManager::OnTap(csmFloat32 +@@ -100,26 +100,6 @@ void LAppLive2DManager::OnTap(csmFloat32 { LAppPal::PrintLog("[APP]tap point: {x:%.2f y:%.2f}", x, y); } @@ -327,18 +349,25 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src } void LAppLive2DManager::OnUpdate() const -@@ -125,7 +106,9 @@ void LAppLive2DManager::OnUpdate() const - CubismMatrix44 projection; - int width, height; - glfwGetWindowSize(LAppDelegate::GetInstance()->GetWindow(), &width, &height); -- projection.Scale(1.0f, static_cast(width) / static_cast(height)); -+ projection.Scale(_projScaleFactor, -+ _projScaleFactor * static_cast(width) / static_cast(height)); -+ projection.Translate(_translateX, _translateY); +@@ -136,12 +116,15 @@ void LAppLive2DManager::OnUpdate() const + { + // 横に長いモデルを縦長ウィンドウに表示する際モデルの横サイズでscaleを算出する + model->GetModelMatrix()->SetWidth(2.0f); +- projection.Scale(1.0f, static_cast(width) / static_cast(height)); ++ projection.Scale(_projScaleFactor, ++ _projScaleFactor * static_cast(width) / static_cast(height)); + } + else + { +- projection.Scale(static_cast(height) / static_cast(width), 1.0f); ++ projection.Scale(_projScaleFactor * static_cast(height) / static_cast(width), ++ _projScaleFactor); + } ++ projection.Translate(_translateX, _translateY); - if (_viewMatrix != NULL) - { -@@ -148,26 +131,10 @@ void LAppLive2DManager::OnUpdate() const + // 必要があればここで乗算 + if (_viewMatrix != NULL) +@@ -158,30 +141,14 @@ void LAppLive2DManager::OnUpdate() const } } @@ -349,7 +378,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src -} - -void LAppLive2DManager::ChangeScene(Csm::csmInt32 index) -+void LAppLive2DManager::SetModel(std::string modelName) ++void LAppLive2DManager::SetModel(std::string modelName, bool useOldParamId) { - _sceneIndex = index; - if (DebugLogEnable) @@ -368,9 +397,23 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src modelJsonName += ".model3.json"; ReleaseAllModel(); -@@ -215,3 +182,20 @@ csmUint32 LAppLive2DManager::GetModelNum - { - return _models.GetSize(); +- _models.PushBack(new LAppModel()); ++ _models.PushBack(new LAppModel(useOldParamId)); + _models[0]->LoadAssets(modelPath.c_str(), modelJsonName.c_str()); + + /* +@@ -203,7 +170,7 @@ void LAppLive2DManager::ChangeScene(Csm: + + #if defined(USE_RENDER_TARGET) || defined(USE_MODEL_RENDER_TARGET) + // モデル個別にαを付けるサンプルとして、もう1体モデルを作成し、少し位置をずらす +- _models.PushBack(new LAppModel()); ++ _models.PushBack(new LAppModel(useOldParamId)); + _models[1]->LoadAssets(modelPath.c_str(), modelJsonName.c_str()); + _models[1]->GetModelMatrix()->TranslateX(0.2f); + #endif +@@ -232,3 +199,20 @@ void LAppLive2DManager::SetViewMatrix(Cu + _viewMatrix->GetArray()[i] = m->GetArray()[i]; + } } + +void LAppLive2DManager::SetTracker(MouseCursorTracker *tracker) @@ -390,8 +433,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src + _translateY = translateY; +} diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src/LAppLive2DManager.hpp ---- ./demo_clean/src/LAppLive2DManager.hpp 2020-10-01 22:47:25.846828066 +0100 -+++ ./demo_dev/src/LAppLive2DManager.hpp 2020-10-01 23:36:24.583055381 +0100 +--- ./demo_clean/src/LAppLive2DManager.hpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppLive2DManager.hpp 2021-04-28 12:18:50.948333190 +0100 @@ -6,12 +6,15 @@ */ #pragma once @@ -408,7 +451,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src /** * @brief サンプルアプリケーションにおいてCubismModelを管理するクラス
* モデル生成と破棄、タップイベントの処理、モデル切り替えを行う。 -@@ -72,16 +75,12 @@ public: +@@ -72,16 +75,14 @@ public: void OnUpdate() const; /** @@ -426,14 +469,16 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src + * + * @param[in] modelName : Name of model, should be the same for both + * the directory and the model3.json file ++ * @param[in] useOldParamId : If true, translate new (Cubism 3+) ++ * parameter IDs to old (Cubism 2.1) ones + */ -+ void SetModel(std::string modelName); ++ void SetModel(std::string modelName, bool useOldParamId); /** * @brief モデル個数を得る -@@ -89,6 +88,24 @@ public: +@@ -94,6 +95,24 @@ public: */ - Csm::csmUint32 GetModelNum() const; + void SetViewMatrix(Live2D::Cubism::Framework::CubismMatrix44* m); + /** + * @brief Set the pointer to the MouseCursorTracker instance @@ -456,7 +501,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src private: /** * @brief コンストラクタ -@@ -102,5 +119,8 @@ private: +@@ -107,5 +126,8 @@ private: Csm::CubismMatrix44* _viewMatrix; ///< モデル描画に用いるView行列 Csm::csmVector _models; ///< モデルインスタンスのコンテナ @@ -467,8 +512,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src + float _translateY; }; diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppModel.cpp ---- ./demo_clean/src/LAppModel.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppModel.cpp 2020-10-18 09:26:08.998822685 +0100 +--- ./demo_clean/src/LAppModel.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppModel.cpp 2021-04-28 12:26:56.699586813 +0100 @@ -21,6 +21,10 @@ #include "LAppTextureManager.hpp" #include "LAppDelegate.hpp" @@ -480,15 +525,48 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod using namespace Live2D::Cubism::Framework; using namespace Live2D::Cubism::Framework::DefaultParameterId; using namespace LAppDefine; -@@ -49,6 +53,7 @@ LAppModel::LAppModel() +@@ -45,22 +49,24 @@ namespace { + } + } + +-LAppModel::LAppModel() ++LAppModel::LAppModel(bool useOldParamId) : CubismUserModel() , _modelSetting(NULL) , _userTimeSeconds(0.0f) + , _tracker(nullptr) ++ , _useOldParamId(useOldParamId) { if (DebugLogEnable) { -@@ -335,59 +340,110 @@ void LAppModel::Update() + _debugMode = true; + } + +- _idParamAngleX = CubismFramework::GetIdManager()->GetId(ParamAngleX); +- _idParamAngleY = CubismFramework::GetIdManager()->GetId(ParamAngleY); +- _idParamAngleZ = CubismFramework::GetIdManager()->GetId(ParamAngleZ); +- _idParamBodyAngleX = CubismFramework::GetIdManager()->GetId(ParamBodyAngleX); +- _idParamEyeBallX = CubismFramework::GetIdManager()->GetId(ParamEyeBallX); +- _idParamEyeBallY = CubismFramework::GetIdManager()->GetId(ParamEyeBallY); ++ _idParamAngleX = CubismFramework::GetIdManager()->GetId(_(ParamAngleX)); ++ _idParamAngleY = CubismFramework::GetIdManager()->GetId(_(ParamAngleY)); ++ _idParamAngleZ = CubismFramework::GetIdManager()->GetId(_(ParamAngleZ)); ++ _idParamBodyAngleX = CubismFramework::GetIdManager()->GetId(_(ParamBodyAngleX)); ++ _idParamEyeBallX = CubismFramework::GetIdManager()->GetId(_(ParamEyeBallX)); ++ _idParamEyeBallY = CubismFramework::GetIdManager()->GetId(_(ParamEyeBallY)); + } + + LAppModel::~LAppModel() +@@ -190,7 +196,7 @@ void LAppModel::SetupModel(ICubismModelS + breathParameters.PushBack(CubismBreath::BreathParameterData(_idParamAngleY, 0.0f, 8.0f, 3.5345f, 0.5f)); + breathParameters.PushBack(CubismBreath::BreathParameterData(_idParamAngleZ, 0.0f, 10.0f, 5.5345f, 0.5f)); + breathParameters.PushBack(CubismBreath::BreathParameterData(_idParamBodyAngleX, 0.0f, 4.0f, 15.5345f, 0.5f)); +- breathParameters.PushBack(CubismBreath::BreathParameterData(CubismFramework::GetIdManager()->GetId(ParamBreath), 0.5f, 0.5f, 3.2345f, 0.5f)); ++ breathParameters.PushBack(CubismBreath::BreathParameterData(CubismFramework::GetIdManager()->GetId(_(ParamBreath)), 0.5f, 0.5f, 3.2345f, 0.5f)); + + _breath->SetParameters(breathParameters); + } +@@ -335,83 +341,118 @@ void LAppModel::Update() const csmFloat32 deltaTimeSeconds = LAppPal::GetDeltaTime(); _userTimeSeconds += deltaTimeSeconds; @@ -583,32 +661,48 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod - if (_breath != NULL) - { - _breath->UpdateParameters(_model, deltaTimeSeconds); +- } + if (eyeLOpenIt != params.live2d.end()) + { + // If value specified, override blinking -+ _model->SetParameterValue(idMan->GetId("ParamEyeLOpen"), ++ _model->SetParameterValue(idMan->GetId(_("ParamEyeLOpen")), + eyeLOpenIt->second); + } + else if (!autoBlink) + { + // If no value specified and no auto blink, set to 1 -+ _model->SetParameterValue(idMan->GetId("ParamEyeLOpen"), 1); -+ ++ _model->SetParameterValue(idMan->GetId(_("ParamEyeLOpen")), 1); + +- // 物理演算の設定 +- if (_physics != NULL) +- { +- _physics->Evaluate(_model, deltaTimeSeconds); +- } + } -+ + +- // リップシンクの設定 +- if (_lipSync) +- { +- // リアルタイムでリップシンクを行う場合、システムから音量を取得して0〜1の範囲で値を入力します。 +- csmFloat32 value = 0.0f; + if (eyeROpenIt != params.live2d.end()) + { -+ _model->SetParameterValue(idMan->GetId("ParamEyeROpen"), ++ _model->SetParameterValue(idMan->GetId(_("ParamEyeROpen")), + eyeROpenIt->second); + } + else if (!autoBlink) + { -+ _model->SetParameterValue(idMan->GetId("ParamEyeROpen"), 1); ++ _model->SetParameterValue(idMan->GetId(_("ParamEyeROpen")), 1); + } -+ -+ + +- // 状態更新/RMS値取得 +- _wavFileHandler.Update(deltaTimeSeconds); +- value = _wavFileHandler.GetRms(); + +- for (csmUint32 i = 0; i < _lipSyncIds.GetSize(); ++i) + if (params.useLipSync && _lipSync) -+ { + { +- _model->AddParameterValue(_lipSyncIds[i], value, 0.8f); + csmFloat32 value = params.lipSyncParam; // 0 to 1 + + for (csmUint32 i = 0; i < _lipSyncIds.GetSize(); ++i) @@ -618,7 +712,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod + } + else + { -+ _model->SetParameterValue(idMan->GetId("ParamMouthOpenY"), ++ _model->SetParameterValue(idMan->GetId(_("ParamMouthOpenY")), + params.live2d["ParamMouthOpenY"]); + } + @@ -630,7 +724,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod + if (key != "ParamEyeLOpen" && key != "ParamEyeROpen" && + key != "ParamMouthOpenY") + { -+ _model->SetParameterValue(idMan->GetId(key.c_str()), val); ++ _model->SetParameterValue(idMan->GetId(_(key)), val); + } + } + @@ -639,29 +733,27 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod + // Note: _model->LoadParameters and SaveParameters is needed + // before - see above. + _breath->UpdateParameters(_model, deltaTimeSeconds); -+ } - } - - // 物理演算の設定 -@@ -396,17 +452,6 @@ void LAppModel::Update() - _physics->Evaluate(_model, deltaTimeSeconds); + } } -- // リップシンクの設定 -- if (_lipSync) -- { -- csmFloat32 value = 0; // リアルタイムでリップシンクを行う場合、システムから音量を取得して0〜1の範囲で値を入力します。 -- -- for (csmUint32 i = 0; i < _lipSyncIds.GetSize(); ++i) -- { -- _model->AddParameterValue(_lipSyncIds[i], value, 0.8f); -- } -- } -- ++ // 物理演算の設定 ++ if (_physics != NULL) ++ { ++ _physics->Evaluate(_model, deltaTimeSeconds); ++ } ++ // ポーズの設定 if (_pose != NULL) { -@@ -626,3 +671,14 @@ Csm::Rendering::CubismOffscreenFrame_Ope +@@ -480,7 +521,6 @@ CubismMotionQueueEntryHandle LAppModel:: + { + csmString path = voice; + path = _modelHomeDir + path; +- _wavFileHandler.Start(path); + } + + if (_debugMode) +@@ -632,3 +672,42 @@ Csm::Rendering::CubismOffscreenFrame_Ope { return _renderBuffer; } @@ -676,18 +768,60 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod + return _modelSetting; +} + ++Csm::csmString LAppModel::_(std::string s) ++{ ++ std::string ans; ++ if (_useOldParamId) ++ { ++ if (s == "ParamTere") ++ { ++ ans = "PARAM_CHEEK"; ++ } ++ else ++ { ++ for (size_t i = 0; i < s.size(); i++) ++ { ++ if (std::isupper(s[i]) && i != 0) ++ { ++ ans += '_'; ++ } ++ ans += std::toupper(s[i]); ++ } ++ } ++ } ++ else ++ { ++ ans = s; ++ } ++ return csmString(ans.c_str()); ++} ++ diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppModel.hpp ---- ./demo_clean/src/LAppModel.hpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppModel.hpp 2020-10-18 03:04:52.142045751 +0100 -@@ -13,6 +13,7 @@ +--- ./demo_clean/src/LAppModel.hpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppModel.hpp 2021-04-28 12:27:55.836457680 +0100 +@@ -13,7 +13,7 @@ #include #include +-#include "LAppWavFileHandler.hpp" +#include "mouse_cursor_tracker.h" /** * @brief ユーザーが実際に使用するモデルの実装クラス
-@@ -113,6 +114,15 @@ public: +@@ -25,8 +25,11 @@ class LAppModel : public Csm::CubismUser + public: + /** + * @brief コンストラクタ ++ * ++ * @param[in] useOldParamId : If true, translate new (Cubism 3+) ++ * parameter IDs to old (Cubism 2.1) ones + */ +- LAppModel(); ++ LAppModel(bool useOldParamId); + + /** + * @brief デストラクタ +@@ -114,6 +117,15 @@ public: */ Csm::Rendering::CubismOffscreenFrame_OpenGLES2& GetRenderBuffer(); @@ -703,9 +837,30 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppMod protected: /** * @brief モデルを描画する処理。モデルを描画する空間のView-Projection行列を渡す。 -@@ -183,6 +193,8 @@ private: +@@ -167,6 +179,17 @@ private: + */ + void ReleaseExpressions(); + ++ /** ++ * @brief Translate new (Cubism 3+) parameter IDs to old (Cubism 2.1) ones ++ * ++ * @param[in] s : New parameter ID ++ * ++ * @return Old parameter ID ++ */ ++ Csm::csmString _(std::string s); ++ ++ bool _useOldParamId; ++ + Csm::ICubismModelSetting* _modelSetting; ///< モデルセッティング情報 + Csm::csmString _modelHomeDir; ///< モデルセッティングが置かれたディレクトリ + Csm::csmFloat32 _userTimeSeconds; ///< デルタ時間の積算値[秒] +@@ -183,9 +206,9 @@ private: + const Csm::CubismId* _idParamEyeBallX; ///< パラメータID: ParamEyeBallX const Csm::CubismId* _idParamEyeBallY; ///< パラメータID: ParamEyeBallXY +- LAppWavFileHandler _wavFileHandler; ///< wavファイルハンドラ +- Csm::Rendering::CubismOffscreenFrame_OpenGLES2 _renderBuffer; ///< フレームバッファ以外の描画先 + + MouseCursorTracker *_tracker; @@ -713,8 +868,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppMod diff -pruN --exclude build ./demo_clean/src/LAppPal.cpp ./demo_dev/src/LAppPal.cpp ---- ./demo_clean/src/LAppPal.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppPal.cpp 2020-10-18 04:57:43.289600308 +0100 +--- ./demo_clean/src/LAppPal.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppPal.cpp 2021-04-28 12:18:50.952333251 +0100 @@ -6,6 +6,7 @@ */ @@ -744,8 +899,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppPal.cpp ./demo_dev/src/LAppPal.c } file.read(buf, size); diff -pruN --exclude build ./demo_clean/src/LAppTextureManager.cpp ./demo_dev/src/LAppTextureManager.cpp ---- ./demo_clean/src/LAppTextureManager.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppTextureManager.cpp 2020-10-01 22:47:24.654849690 +0100 +--- ./demo_clean/src/LAppTextureManager.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppTextureManager.cpp 2021-04-28 12:18:50.952333251 +0100 @@ -96,6 +96,46 @@ LAppTextureManager::TextureInfo* LAppTex } @@ -794,8 +949,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppTextureManager.cpp ./demo_dev/sr { for (Csm::csmUint32 i = 0; i < _textures.GetSize(); i++) diff -pruN --exclude build ./demo_clean/src/LAppTextureManager.hpp ./demo_dev/src/LAppTextureManager.hpp ---- ./demo_clean/src/LAppTextureManager.hpp 2020-10-01 22:47:25.846828066 +0100 -+++ ./demo_dev/src/LAppTextureManager.hpp 2020-10-01 22:47:24.786847290 +0100 +--- ./demo_clean/src/LAppTextureManager.hpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppTextureManager.hpp 2021-04-28 12:18:50.952333251 +0100 @@ -72,6 +72,8 @@ public: */ TextureInfo* CreateTextureFromPngFile(std::string fileName); @@ -806,8 +961,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppTextureManager.hpp ./demo_dev/sr * @brief 画像の解放 * diff -pruN --exclude build ./demo_clean/src/LAppView.cpp ./demo_dev/src/LAppView.cpp ---- ./demo_clean/src/LAppView.cpp 2020-10-01 22:47:25.850827994 +0100 -+++ ./demo_dev/src/LAppView.cpp 2020-10-01 22:47:24.602850636 +0100 +--- ./demo_clean/src/LAppView.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppView.cpp 2021-04-28 12:18:50.952333251 +0100 @@ -13,7 +13,6 @@ #include "LAppLive2DManager.hpp" #include "LAppTextureManager.hpp" @@ -845,7 +1000,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppView.cpp ./demo_dev/src/LAppView } void LAppView::Initialize() -@@ -97,9 +89,6 @@ void LAppView::Initialize() +@@ -107,9 +99,6 @@ void LAppView::Initialize() void LAppView::Render() { _back->Render(); @@ -855,7 +1010,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppView.cpp ./demo_dev/src/LAppView LAppLive2DManager* Live2DManager = LAppLive2DManager::GetInstance(); -@@ -139,35 +128,17 @@ void LAppView::InitializeSprite() +@@ -151,35 +140,17 @@ void LAppView::InitializeSprite() glfwGetWindowSize(LAppDelegate::GetInstance()->GetWindow(), &width, &height); LAppTextureManager* textureManager = LAppDelegate::GetInstance()->GetTextureManager(); @@ -896,7 +1051,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppView.cpp ./demo_dev/src/LAppView // 画面全体を覆うサイズ x = width * 0.5f; y = height * 0.5f; -@@ -175,52 +146,6 @@ void LAppView::InitializeSprite() +@@ -187,52 +158,6 @@ void LAppView::InitializeSprite() } @@ -949,7 +1104,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppView.cpp ./demo_dev/src/LAppView float LAppView::TransformViewX(float deviceX) const { float screenX = _deviceToScreen->TransformX(deviceX); // 論理座標変換した座標を取得。 -@@ -362,32 +287,4 @@ void LAppView::ResizeSprite() +@@ -374,32 +299,4 @@ void LAppView::ResizeSprite() _back->ResetRect(x, y, fWidth, fHeight); } } @@ -983,8 +1138,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppView.cpp ./demo_dev/src/LAppView - } } diff -pruN --exclude build ./demo_clean/src/LAppView.hpp ./demo_dev/src/LAppView.hpp ---- ./demo_clean/src/LAppView.hpp 2020-10-01 22:47:25.846828066 +0100 -+++ ./demo_dev/src/LAppView.hpp 2020-10-01 22:47:24.802846999 +0100 +--- ./demo_clean/src/LAppView.hpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/LAppView.hpp 2021-04-28 12:18:50.952333251 +0100 @@ -14,7 +14,6 @@ #include "CubismFramework.hpp" #include @@ -1039,9 +1194,9 @@ diff -pruN --exclude build ./demo_clean/src/LAppView.hpp ./demo_dev/src/LAppView // レンダリング先を別ターゲットにする方式の場合に使用 LAppSprite* _renderSprite; ///< モードによっては_renderBufferのテクスチャを描画 diff -pruN --exclude build ./demo_clean/src/main.cpp ./demo_dev/src/main.cpp ---- ./demo_clean/src/main.cpp 2020-10-01 22:47:25.846828066 +0100 -+++ ./demo_dev/src/main.cpp 2020-10-18 07:03:46.194220443 +0100 -@@ -5,18 +5,182 @@ +--- ./demo_clean/src/main.cpp 2021-02-17 01:23:17.000000000 +0000 ++++ ./demo_dev/src/main.cpp 2021-04-28 12:28:55.845339613 +0100 +@@ -5,18 +5,188 @@ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. */ @@ -1076,6 +1231,7 @@ diff -pruN --exclude build ./demo_clean/src/main.cpp ./demo_dev/src/main.cpp + float translateX; + float translateY; + std::string modelName; ++ bool oldId; // If true, translate new (Cubism 3+) parameter IDs to old (Cubism 2.1) IDs + std::string cfgPath; // Path to config file for MouseCursorTracker +}; + @@ -1088,10 +1244,11 @@ diff -pruN --exclude build ./demo_clean/src/main.cpp ./demo_dev/src/main.cpp + cmdArgs.windowHeight = 600; + cmdArgs.windowTitle = "MouseTrackerForCubism example"; + cmdArgs.rootDir = fs::current_path(); -+ cmdArgs.scaleFactor = 8.0f; ++ cmdArgs.scaleFactor = 4.5f; + cmdArgs.translateX = 0.0f; -+ cmdArgs.translateY = -2.8f; ++ cmdArgs.translateY = -3.1f; + cmdArgs.modelName = "Haru"; ++ cmdArgs.oldId = false; + cmdArgs.cfgPath = ""; + + int i = 1; @@ -1156,6 +1313,10 @@ diff -pruN --exclude build ./demo_clean/src/main.cpp ./demo_dev/src/main.cpp + { + cmdArgs.cfgPath = argv[i + 1]; + } ++ else if (arg == "--old-param-id" || arg == "-o") ++ { ++ cmdArgs.oldId = (argv[i + 1][0] == '1'); ++ } + else + { + throw std::runtime_error("Unrecognized argument: " + arg); @@ -1187,7 +1348,7 @@ diff -pruN --exclude build ./demo_clean/src/main.cpp ./demo_dev/src/main.cpp + delegate->SetRootDirectory(cmdArgs.rootDir); + + LAppLive2DManager *manager = LAppLive2DManager::GetInstance(); -+ manager->SetModel(cmdArgs.modelName); ++ manager->SetModel(cmdArgs.modelName, cmdArgs.oldId); + + manager->SetProjectionScaleTranslate(cmdArgs.scaleFactor, + cmdArgs.translateX,