Upgrade to Cubism 4 Release R6. No incompatible API changes.
[facial-landmarks-for-cubism.git] / example / demo.patch
index 8f07256..8846f99 100644 (file)
@@ -1,12 +1,12 @@
 diff -pruN --exclude build ./demo_clean/CMakeLists.txt ./demo_dev/CMakeLists.txt
---- ./demo_clean/CMakeLists.txt        2020-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/CMakeLists.txt  2020-10-02 02:10:49.198928000 +0100
+--- ./demo_clean/CMakeLists.txt        2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/CMakeLists.txt  2022-10-11 20:18:15.217358999 +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.6)
  set(CORE_PATH ${SDK_ROOT_PATH}/Core)
  set(FRAMEWORK_PATH ${SDK_ROOT_PATH}/Framework)
  set(THIRD_PARTY_PATH ${SDK_ROOT_PATH}/Samples/OpenGL/thirdParty)
@@ -42,49 +42,122 @@ diff -pruN --exclude build ./demo_clean/CMakeLists.txt ./demo_dev/CMakeLists.txt
  
  # Copy resource directory to build directory.
  add_custom_command(
-@@ -86,6 +91,17 @@ add_custom_command(
-       copy_directory ${RES_PATH} $<TARGET_FILE_DIR:${APP_NAME}>/Resources
- )
-+# Copy shape predictor trained dataset to build directory
-+set(DLIB_SHAPE_PREDICTOR_DATA ${CMAKE_CURRENT_SOURCE_DIR}/../shape_predictor_68_face_landmarks.dat
-+    CACHE FILEPATH "Path to dlib shape predictor trained dataset")
-+add_custom_command(
-+  TARGET ${APP_NAME}
-+  POST_BUILD
-+  COMMAND
-+    ${CMAKE_COMMAND} -E
-+      copy ${DLIB_SHAPE_PREDICTOR_DATA} $<TARGET_FILE_DIR:${APP_NAME}>/
-+)
-+
- # You can change target that renderer draws by enabling following definition.
- #
- # * USE_RENDER_TARGET
 diff -pruN --exclude build ./demo_clean/scripts/make_gcc ./demo_dev/scripts/make_gcc
---- ./demo_clean/scripts/make_gcc      2020-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/scripts/make_gcc        2020-10-02 02:10:49.198928000 +0100
-@@ -9,5 +9,6 @@ BUILD_PATH=$SCRIPT_PATH/../build/make_gc
+--- ./demo_clean/scripts/make_gcc      2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/scripts/make_gcc        2021-05-29 02:04:17.338257917 +0100
+@@ -5,41 +5,9 @@ set -ue
+ SCRIPT_PATH=$(cd $(dirname $0) && pwd)
+ CMAKE_PATH=$SCRIPT_PATH/..
+ BUILD_PATH=$SCRIPT_PATH/../build/make_gcc
+-MINIMUM_DEMO="OFF"
+-DATA=""
+-
+-if [ "$#" -ne 0 ]; then
+- DATA="$1"
+-fi
+-
+-while :
+-do
+-
+- if [ -z "$DATA" ]; then
+-   echo "Choose which format you would like to create the demo."
+-   echo "Full version : 1"
+-   echo "Minimum version : 2"
+-   read -p "Your Choice : " DATA
+- fi
+-
+- case "$DATA" in
+-   "1" )
+-     echo "Making Full Demo"
+-     MINIMUM_DEMO="OFF"
+-     break ;;
+-   "2" )
+-     echo "Making Minimum Demo"
+-     MINIMUM_DEMO="ON"
+-     break ;;
+-   * )
+-     echo "You need to enter a valid number."
+-     DATA="" ;;
+- esac
+-done
  # Run CMake.
  cmake -S "$CMAKE_PATH" \
    -B "$BUILD_PATH" \
--  -D CMAKE_BUILD_TYPE=Release
+-  -D CMAKE_BUILD_TYPE=Release \
+-  -D CSM_MINIMUM_DEMO=$MINIMUM_DEMO
 -cd "$BUILD_PATH" && make
-+  -D CMAKE_BUILD_TYPE=Release \
-+  -D USE_AVX_INSTRUCTIONS=1
++  -D CMAKE_BUILD_TYPE=Release
 +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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/CMakeLists.txt      2020-10-02 02:10:49.198928000 +0100
-@@ -19,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
+--- ./demo_clean/src/CMakeLists.txt    2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/CMakeLists.txt      2021-04-28 11:49:43.166296000 +0100
+@@ -1,49 +1,22 @@
+-if (CSM_MINIMUM_DEMO)
+-  target_sources(${APP_NAME}
++target_sources(${APP_NAME}
+   PRIVATE
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppAllocator.cpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppAllocator.hpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppDefine.cpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppDefine.hpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppDelegate.cpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppDelegate.hpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppLive2DManager.cpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppLive2DManager.hpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppModel.cpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppModel.hpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppPal.cpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppPal.hpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppSprite.cpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppSprite.hpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppTextureManager.cpp
+     ${CMAKE_CURRENT_SOURCE_DIR}/LAppTextureManager.hpp
+-    ${CMAKE_CURRENT_SOURCE_DIR}/mainMinimum.cpp
 -    ${CMAKE_CURRENT_SOURCE_DIR}/TouchManager.cpp
 -    ${CMAKE_CURRENT_SOURCE_DIR}/TouchManager.hpp
- )
+-    ${CMAKE_CURRENT_SOURCE_DIR}/CubismUserModelExtend.cpp
+-    ${CMAKE_CURRENT_SOURCE_DIR}/CubismUserModelExtend.hpp
+-    ${CMAKE_CURRENT_SOURCE_DIR}/CubismSampleViewMatrix.cpp
+-    ${CMAKE_CURRENT_SOURCE_DIR}/CubismSampleViewMatrix.hpp
+-    ${CMAKE_CURRENT_SOURCE_DIR}/MouseActionManager.cpp
+-    ${CMAKE_CURRENT_SOURCE_DIR}/MouseActionManager.hpp
+-  )
+-else ()
+-  target_sources(${APP_NAME}
+-    PRIVATE
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppAllocator.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppAllocator.hpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppDefine.cpp
+-      ${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
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppModel.hpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppPal.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppPal.hpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppSprite.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppSprite.hpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppTextureManager.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppTextureManager.hpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppView.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/LAppView.hpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/TouchManager.cpp
+-      ${CMAKE_CURRENT_SOURCE_DIR}/TouchManager.hpp
+-  )
+-endif ()
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppView.cpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/LAppView.hpp
++    ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
++)
 diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LAppDelegate.cpp
---- ./demo_clean/src/LAppDelegate.cpp  2020-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppDelegate.cpp    2020-10-02 02:10:49.198928000 +0100
+--- ./demo_clean/src/LAppDelegate.cpp  2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppDelegate.cpp    2021-04-28 11:49:43.166296000 +0100
 @@ -45,7 +45,8 @@ void LAppDelegate::ReleaseInstance()
      s_instance = NULL;
  }
@@ -110,7 +183,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LApp
      if (_window == NULL)
      {
          if (DebugLogEnable)
-@@ -95,10 +102,6 @@ bool LAppDelegate::Initialize()
+@@ -95,16 +102,11 @@ bool LAppDelegate::Initialize()
      glEnable(GL_BLEND);
      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  
@@ -121,7 +194,13 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LApp
      // ウィンドウサイズ記憶
      int width, height;
      glfwGetWindowSize(LAppDelegate::GetInstance()->GetWindow(), &width, &height);
-@@ -111,8 +114,6 @@ bool LAppDelegate::Initialize()
+     _windowWidth = width;
+     _windowHeight = height;
+-    glViewport(0, 0, _windowWidth, _windowHeight);
+     //AppViewの初期化
+     _view->Initialize();
+@@ -112,8 +114,6 @@ bool LAppDelegate::Initialize()
      // Cubism3の初期化
      InitializeCubism();
  
@@ -130,7 +209,15 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LApp
      //load model
      LAppLive2DManager::GetInstance();
  
-@@ -214,49 +215,6 @@ void LAppDelegate::InitializeCubism()
+@@ -155,7 +155,6 @@ void LAppDelegate::Run()
+             _windowWidth = width;
+             _windowHeight = height;
+         }
+-        glViewport(0, 0, _windowWidth, _windowHeight);
+         // 時間更新
+         LAppPal::UpdateTime();
+@@ -216,49 +215,6 @@ void LAppDelegate::InitializeCubism()
      LAppPal::UpdateTime();
  }
  
@@ -180,7 +267,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LApp
  GLuint LAppDelegate::CreateShader()
  {
      //バーテックスシェーダのコンパイル
-@@ -299,29 +257,9 @@ GLuint LAppDelegate::CreateShader()
+@@ -301,29 +257,9 @@ GLuint LAppDelegate::CreateShader()
      return programId;
  }
  
@@ -213,8 +300,8 @@ diff -pruN --exclude build ./demo_clean/src/LAppDelegate.cpp ./demo_dev/src/LApp
  
  Csm::csmVector<string> 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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppDelegate.hpp    2020-10-02 02:10:49.198928000 +0100
+--- ./demo_clean/src/LAppDelegate.hpp  2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppDelegate.hpp    2021-04-28 11:49:43.166296000 +0100
 @@ -40,7 +40,8 @@ public:
      /**
      * @brief   APPに必要なものを初期化する。
@@ -289,9 +376,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppLive2DManager.cpp       2021-01-02 12:03:47.315569210 +0000
-@@ -52,9 +52,10 @@ void LAppLive2DManager::ReleaseInstance(
+--- ./demo_clean/src/LAppLive2DManager.cpp     2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppLive2DManager.cpp       2022-10-11 20:23:29.310727507 +0100
+@@ -52,11 +52,11 @@ void LAppLive2DManager::ReleaseInstance(
  
  LAppLive2DManager::LAppLive2DManager()
      : _viewMatrix(NULL)
@@ -300,11 +387,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);
      }
@@ -331,18 +420,37 @@ 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;
+@@ -127,10 +107,10 @@ void LAppLive2DManager::OnUpdate() const
      int width, height;
      glfwGetWindowSize(LAppDelegate::GetInstance()->GetWindow(), &width, &height);
--    projection.Scale(1.0f, static_cast<float>(width) / static_cast<float>(height));
-+    projection.Scale(_projScaleFactor,
-+                     _projScaleFactor * static_cast<float>(width) / static_cast<float>(height));
-+    projection.Translate(_translateX, _translateY);
  
-     if (_viewMatrix != NULL)
++    CubismMatrix44 projection;
+     csmUint32 modelCount = _models.GetSize();
+     for (csmUint32 i = 0; i < modelCount; ++i)
      {
-@@ -148,30 +131,14 @@ void LAppLive2DManager::OnUpdate() const
+-        CubismMatrix44 projection;
+         LAppModel* model = GetModel(i);
+         if (model->GetModel() == NULL)
+@@ -143,12 +123,15 @@ void LAppLive2DManager::OnUpdate() const
+         {
+             // 横に長いモデルを縦長ウィンドウに表示する際モデルの横サイズでscaleを算出する
+             model->GetModelMatrix()->SetWidth(2.0f);
+-            projection.Scale(1.0f, static_cast<float>(width) / static_cast<float>(height));
++            projection.Scale(_projScaleFactor,
++                             _projScaleFactor * static_cast<float>(width) / static_cast<float>(height));
+         }
+         else
+         {
+-            projection.Scale(static_cast<float>(height) / static_cast<float>(width), 1.0f);
++            projection.Scale(_projScaleFactor * static_cast<float>(height) / static_cast<float>(width),
++                             _projScaleFactor);
+         }
++        projection.Translate(_translateX, _translateY);
+         // 必要があればここで乗算
+         if (_viewMatrix != NULL)
+@@ -165,30 +148,14 @@ void LAppLive2DManager::OnUpdate() const
      }
  }
  
@@ -377,7 +485,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src
      _models[0]->LoadAssets(modelPath.c_str(), modelJsonName.c_str());
  
      /*
-@@ -193,7 +160,7 @@ void LAppLive2DManager::ChangeScene(Csm:
+@@ -210,7 +177,7 @@ void LAppLive2DManager::ChangeScene(Csm:
  
  #if defined(USE_RENDER_TARGET) || defined(USE_MODEL_RENDER_TARGET)
          // モデル個別にαを付けるサンプルとして、もう1体モデルを作成し、少し位置をずらす
@@ -386,9 +494,9 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.cpp ./demo_dev/src
          _models[1]->LoadAssets(modelPath.c_str(), modelJsonName.c_str());
          _models[1]->GetModelMatrix()->TranslateX(0.2f);
  #endif
-@@ -215,3 +182,20 @@ csmUint32 LAppLive2DManager::GetModelNum
- {
-     return _models.GetSize();
+@@ -239,3 +206,20 @@ void LAppLive2DManager::SetViewMatrix(Cu
+         _viewMatrix->GetArray()[i] = m->GetArray()[i];
+     }
  }
 +
 +void LAppLive2DManager::SetFacialLandmarkDetector(FacialLandmarkDetector *detector)
@@ -408,8 +516,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppLive2DManager.hpp       2021-01-02 12:04:05.551573634 +0000
+--- ./demo_clean/src/LAppLive2DManager.hpp     2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppLive2DManager.hpp       2021-04-28 11:49:43.166296000 +0100
 @@ -6,12 +6,15 @@
   */
  #pragma once
@@ -451,9 +559,9 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src
  
      /**
       * @brief   モデル個数を得る
-@@ -89,6 +90,24 @@ public:
+@@ -94,6 +95,24 @@ public:
       */
-     Csm::csmUint32 GetModelNum() const;
+     void SetViewMatrix(Live2D::Cubism::Framework::CubismMatrix44* m);
  
 +    /**
 +     * @brief Set the pointer to the FacialLandmarkDetector instance
@@ -476,7 +584,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppLive2DManager.hpp ./demo_dev/src
  private:
      /**
      * @brief  コンストラクタ
-@@ -102,5 +121,8 @@ private:
+@@ -107,5 +126,8 @@ private:
  
      Csm::CubismMatrix44*        _viewMatrix; ///< モデル描画に用いるView行列
      Csm::csmVector<LAppModel*>  _models; ///< モデルインスタンスのコンテナ
@@ -487,8 +595,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppModel.cpp       2021-01-02 12:07:31.408109737 +0000
+--- ./demo_clean/src/LAppModel.cpp     2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppModel.cpp       2021-04-28 11:49:43.166296000 +0100
 @@ -21,6 +21,8 @@
  #include "LAppTextureManager.hpp"
  #include "LAppDelegate.hpp"
@@ -530,7 +638,20 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
  }
  
  LAppModel::~LAppModel()
-@@ -128,30 +132,6 @@ void LAppModel::SetupModel(ICubismModelS
+@@ -96,12 +100,6 @@ void LAppModel::LoadAssets(const csmChar
+     SetupModel(setting);
+-    if (_model == NULL)
+-    {
+-        LAppPal::PrintLog("Failed to LoadAssets().");
+-        return;
+-    }
+-
+     CreateRenderer();
+     SetupTextures();
+@@ -134,30 +132,6 @@ void LAppModel::SetupModel(ICubismModelS
          DeleteBuffer(buffer, path.GetRawString());
      }
  
@@ -561,7 +682,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
      //Physics
      if (strcmp(_modelSetting->GetPhysicsFileName(), "") != 0)
      {
-@@ -190,7 +170,7 @@ void LAppModel::SetupModel(ICubismModelS
+@@ -196,7 +170,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));
@@ -570,7 +691,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
  
          _breath->SetParameters(breathParameters);
      }
-@@ -214,15 +194,6 @@ void LAppModel::SetupModel(ICubismModelS
+@@ -220,21 +194,6 @@ void LAppModel::SetupModel(ICubismModelS
          }
      }
  
@@ -583,10 +704,16 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
 -        }
 -    }
 -
+-    if (_modelSetting == NULL || _modelMatrix == NULL)
+-    {
+-        LAppPal::PrintLog("Failed to SetupModel().");
+-        return;
+-    }
+-
      //Layout
      csmMap<csmString, csmFloat32> layout;
      _modelSetting->GetLayoutMap(layout);
-@@ -335,59 +306,57 @@ void LAppModel::Update()
+@@ -347,59 +306,57 @@ void LAppModel::Update()
      const csmFloat32 deltaTimeSeconds = LAppPal::GetDeltaTime();
      _userTimeSeconds += deltaTimeSeconds;
  
@@ -691,14 +818,19 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
      }
  
      // 物理演算の設定
-@@ -396,17 +365,6 @@ void LAppModel::Update()
+@@ -408,22 +365,6 @@ void LAppModel::Update()
          _physics->Evaluate(_model, deltaTimeSeconds);
      }
  
 -    // リップシンクの設定
 -    if (_lipSync)
 -    {
--        csmFloat32 value = 0; // リアルタイムでリップシンクを行う場合、システムから音量を取得して0〜1の範囲で値を入力します。
+-        // リアルタイムでリップシンクを行う場合、システムから音量を取得して0〜1の範囲で値を入力します。
+-        csmFloat32 value = 0.0f;
+-
+-        // 状態更新/RMS値取得
+-        _wavFileHandler.Update(deltaTimeSeconds);
+-        value = _wavFileHandler.GetRms();
 -
 -        for (csmUint32 i = 0; i < _lipSyncIds.GetSize(); ++i)
 -        {
@@ -709,7 +841,15 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
      // ポーズの設定
      if (_pose != NULL)
      {
-@@ -626,3 +584,37 @@ Csm::Rendering::CubismOffscreenFrame_Ope
+@@ -492,7 +433,6 @@ CubismMotionQueueEntryHandle LAppModel::
+     {
+         csmString path = voice;
+         path = _modelHomeDir + path;
+-        _wavFileHandler.Start(path);
+     }
+     if (_debugMode)
+@@ -644,3 +584,37 @@ Csm::Rendering::CubismOffscreenFrame_Ope
  {
      return _renderBuffer;
  }
@@ -748,17 +888,18 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.cpp ./demo_dev/src/LAppMod
 +}
 +
 diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppModel.hpp
---- ./demo_clean/src/LAppModel.hpp     2020-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppModel.hpp       2021-01-02 12:04:43.079607236 +0000
-@@ -13,6 +13,7 @@
+--- ./demo_clean/src/LAppModel.hpp     2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppModel.hpp       2021-04-28 11:49:43.166296000 +0100
+@@ -13,7 +13,7 @@
  #include <Type/csmRectF.hpp>
  #include <Rendering/OpenGL/CubismOffscreenSurface_OpenGLES2.hpp>
  
+-#include "LAppWavFileHandler.hpp"
 +#include "facial_landmark_detector.h"
  
  /**
   * @brief ユーザーが実際に使用するモデルの実装クラス<br>
-@@ -24,8 +25,11 @@ class LAppModel : public Csm::CubismUser
+@@ -25,8 +25,11 @@ class LAppModel : public Csm::CubismUser
  public:
      /**
       * @brief コンストラクタ
@@ -771,7 +912,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppMod
  
      /**
       * @brief デストラクタ
-@@ -113,6 +117,13 @@ public:
+@@ -114,6 +117,13 @@ public:
       */
      Csm::Rendering::CubismOffscreenFrame_OpenGLES2& GetRenderBuffer();
  
@@ -785,7 +926,7 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppMod
  protected:
      /**
       *  @brief  モデルを描画する処理。モデルを描画する空間のView-Projection行列を渡す。
-@@ -166,6 +177,17 @@ private:
+@@ -167,6 +177,17 @@ private:
      */
      void ReleaseExpressions();
  
@@ -803,9 +944,12 @@ diff -pruN --exclude build ./demo_clean/src/LAppModel.hpp ./demo_dev/src/LAppMod
      Csm::ICubismModelSetting* _modelSetting; ///< モデルセッティング情報
      Csm::csmString _modelHomeDir; ///< モデルセッティングが置かれたディレクトリ
      Csm::csmFloat32 _userTimeSeconds; ///< デルタ時間の積算値[秒]
-@@ -183,6 +205,8 @@ private:
+@@ -183,9 +204,9 @@ private:
+     const Csm::CubismId* _idParamEyeBallX; ///< パラメータID: ParamEyeBallX
      const Csm::CubismId* _idParamEyeBallY; ///< パラメータID: ParamEyeBallXY
  
+-    LAppWavFileHandler _wavFileHandler; ///< wavファイルハンドラ
+-
      Csm::Rendering::CubismOffscreenFrame_OpenGLES2 _renderBuffer;   ///< フレームバッファ以外の描画先
 +
 +    FacialLandmarkDetector *_detector;
@@ -813,8 +957,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppPal.cpp 2020-10-02 02:10:49.202928000 +0100
+--- ./demo_clean/src/LAppPal.cpp       2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppPal.cpp 2021-04-28 11:49:43.170296000 +0100
 @@ -6,6 +6,7 @@
   */
  
@@ -836,8 +980,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppTextureManager.cpp      2020-10-02 02:10:49.202928000 +0100
+--- ./demo_clean/src/LAppTextureManager.cpp    2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppTextureManager.cpp      2021-04-28 11:49:43.178296000 +0100
 @@ -96,6 +96,46 @@ LAppTextureManager::TextureInfo* LAppTex
  
  }
@@ -886,8 +1030,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppTextureManager.hpp      2020-10-02 02:10:49.202928000 +0100
+--- ./demo_clean/src/LAppTextureManager.hpp    2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppTextureManager.hpp      2021-04-28 11:49:43.178296000 +0100
 @@ -72,6 +72,8 @@ public:
      */
      TextureInfo* CreateTextureFromPngFile(std::string fileName);
@@ -898,8 +1042,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppView.cpp        2020-10-02 02:10:49.202928000 +0100
+--- ./demo_clean/src/LAppView.cpp      2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppView.cpp        2021-04-28 11:49:43.178296000 +0100
 @@ -13,7 +13,6 @@
  #include "LAppLive2DManager.hpp"
  #include "LAppTextureManager.hpp"
@@ -937,7 +1081,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();
@@ -947,7 +1091,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();
@@ -988,7 +1132,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()
  
  }
  
@@ -1041,7 +1185,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);
          }
      }
@@ -1075,8 +1219,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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/LAppView.hpp        2020-10-02 02:10:49.202928000 +0100
+--- ./demo_clean/src/LAppView.hpp      2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/LAppView.hpp        2021-04-28 11:49:43.178296000 +0100
 @@ -14,7 +14,6 @@
  #include "CubismFramework.hpp"
  #include <Rendering/OpenGL/CubismOffscreenSurface_OpenGLES2.hpp>
@@ -1131,8 +1275,8 @@ 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-01-30 05:45:00.000000000 +0000
-+++ ./demo_dev/src/main.cpp    2021-01-02 12:08:38.440444044 +0000
+--- ./demo_clean/src/main.cpp  2022-09-14 12:08:43.000000000 +0100
++++ ./demo_dev/src/main.cpp    2021-04-28 11:49:43.178296000 +0100
 @@ -5,18 +5,162 @@
   * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
   */
@@ -1177,9 +1321,9 @@ diff -pruN --exclude build ./demo_clean/src/main.cpp ./demo_dev/src/main.cpp
 +    cmdArgs.windowHeight = 600;
 +    cmdArgs.windowTitle = "FacialLandmarksForCubism 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 = "";