diff --git a/surround_view/service-impl/Android.bp b/surround_view/service-impl/Android.bp
index 02da338..582650b 100644
--- a/surround_view/service-impl/Android.bp
+++ b/surround_view/service-impl/Android.bp
@@ -116,6 +116,7 @@
     name : "android.automotive.sv.service@1.0-impl",
     vendor : true,
     srcs : [
+        "AnimationModule.cpp",
         "CoreLibSetupHelper.cpp",
         "SurroundViewService.cpp",
         "SurroundView2dSession.cpp",
diff --git a/surround_view/service-impl/SurroundView3dSession.cpp b/surround_view/service-impl/SurroundView3dSession.cpp
index a06a260..8700b13 100644
--- a/surround_view/service-impl/SurroundView3dSession.cpp
+++ b/surround_view/service-impl/SurroundView3dSession.cpp
@@ -165,10 +165,13 @@
     }
 }
 
-SurroundView3dSession::SurroundView3dSession(sp<IEvsEnumerator> pEvs, VhalHandler* vhalHandler) :
+SurroundView3dSession::SurroundView3dSession(sp<IEvsEnumerator> pEvs,
+                                             VhalHandler* vhalHandler,
+                                             AnimationModule* animationModule) :
       mEvs(pEvs),
       mStreamState(STOPPED),
-      mVhalHandler(vhalHandler) {
+      mVhalHandler(vhalHandler),
+      mAnimationModule(animationModule) {
     mEvsCameraIds = {"0" , "1", "2", "3"};
 }
 
@@ -505,6 +508,19 @@
         LOG(WARNING) << "VhalHandler is null. Ignored";
     }
 
+    vector<AnimationParam> params;
+    if (mAnimationModule != nullptr) {
+        params = mAnimationModule->getUpdatedAnimationParams(mPropertyValues);
+    } else {
+        LOG(WARNING) << "AnimationModule is null. Ignored";
+    }
+
+    if (!params.empty()) {
+        mSurroundView->SetAnimations(params);
+    } else {
+        LOG(INFO) << "AnimationParams is empty. Ignored";
+    }
+
     if (mSurroundView->Get3dSurroundView(
         mInputPointers, matrix, &mOutputPointer)) {
         LOG(INFO) << "Get3dSurroundView succeeded";
diff --git a/surround_view/service-impl/SurroundView3dSession.h b/surround_view/service-impl/SurroundView3dSession.h
index fbb974f..efa257f 100644
--- a/surround_view/service-impl/SurroundView3dSession.h
+++ b/surround_view/service-impl/SurroundView3dSession.h
@@ -26,6 +26,7 @@
 #include <hidl/MQDescriptor.h>
 #include <hidl/Status.h>
 
+#include "AnimationModule.h"
 #include "CoreLibSetupHelper.h"
 #include "VhalHandler.h"
 
@@ -82,7 +83,9 @@
 
 public:
     // TODO(b/158479099): use strong pointer for VhalHandler
-    SurroundView3dSession(sp<IEvsEnumerator> pEvs, VhalHandler* vhalHandler);
+    SurroundView3dSession(sp<IEvsEnumerator> pEvs,
+                          VhalHandler* vhalHandler,
+                          AnimationModule* animationModule);
     ~SurroundView3dSession();
     bool initialize();
 
@@ -170,6 +173,7 @@
     bool mIsInitialized GUARDED_BY(mAccessLock) = false;
 
     VhalHandler* mVhalHandler;
+    AnimationModule* mAnimationModule;
 
     std::vector<VehiclePropValue> mPropertyValues;
 };
diff --git a/surround_view/service-impl/SurroundViewService.cpp b/surround_view/service-impl/SurroundViewService.cpp
index a1c97bd..38d0524 100644
--- a/surround_view/service-impl/SurroundViewService.cpp
+++ b/surround_view/service-impl/SurroundViewService.cpp
@@ -39,10 +39,14 @@
 
 SurroundViewService::SurroundViewService() {
     mVhalHandler = new VhalHandler();
+    mAnimationModule = new AnimationModule(map<string, CarPart>(),
+                                           map<string, CarTexture>(),
+                                           vector<AnimationInfo>());
 }
 
 SurroundViewService::~SurroundViewService() {
     delete mVhalHandler;
+    delete mAnimationModule;
 }
 
 sp<SurroundViewService> SurroundViewService::getInstance() {
@@ -126,7 +130,9 @@
         LOG(WARNING) << "Only one 3d session is supported at the same time";
         _hidl_cb(nullptr, SvResult::INTERNAL_ERROR);
     } else {
-        sSurroundView3dSession = new SurroundView3dSession(mEvs, mVhalHandler);
+        sSurroundView3dSession = new SurroundView3dSession(mEvs,
+                                                           mVhalHandler,
+                                                           mAnimationModule);
         if (sSurroundView3dSession->initialize()) {
             _hidl_cb(sSurroundView3dSession, SvResult::OK);
         } else {
diff --git a/surround_view/service-impl/SurroundViewService.h b/surround_view/service-impl/SurroundViewService.h
index edff4df..e5fb69c 100644
--- a/surround_view/service-impl/SurroundViewService.h
+++ b/surround_view/service-impl/SurroundViewService.h
@@ -19,6 +19,7 @@
 #include "SurroundView2dSession.h"
 #include "SurroundView3dSession.h"
 #include "VhalHandler.h"
+#include "AnimationModule.h"
 
 #include <android/hardware/automotive/evs/1.1/IEvsEnumerator.h>
 #include <android/hardware/automotive/sv/1.0/types.h>
@@ -61,6 +62,7 @@
     ~SurroundViewService();
 
     VhalHandler* mVhalHandler;
+    AnimationModule* mAnimationModule;
 
     bool initialize();
     sp<IEvsEnumerator> mEvs;
