[NUI] Use ModelNode for the child of Model
authorseungho baek <sbsh.baek@samsung.com>
Fri, 31 Mar 2023 10:03:55 +0000 (19:03 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Thu, 13 Apr 2023 04:51:31 +0000 (13:51 +0900)
Signed-off-by: seungho baek <sbsh.baek@samsung.com>
src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.Material.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.Model.cs
src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.ModelNode.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.ModelPrimitive.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/public/Controls/Model.cs
src/Tizen.NUI.Scene3D/src/public/ModelComponents/Material.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/public/ModelComponents/MaterialAlphaModeType.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/public/ModelComponents/MaterialTextureType.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/public/ModelComponents/ModelNode.cs [new file with mode: 0755]
src/Tizen.NUI.Scene3D/src/public/ModelComponents/ModelPrimitive.cs [new file with mode: 0755]

diff --git a/src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.Material.cs b/src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.Material.cs
new file mode 100755 (executable)
index 0000000..2baae5d
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+namespace Tizen.NUI.Scene3D
+{
+    internal static partial class Interop
+    {
+        internal static partial class Material
+        {
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_New_SWIG_0")]
+            public static extern global::System.IntPtr MaterialNew();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Material_SWIG_0")]
+            public static extern global::System.IntPtr NewMaterial();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Material_SWIG_1")]
+            public static extern global::System.IntPtr NewMaterial(global::System.Runtime.InteropServices.HandleRef material);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_delete_Material")]
+            public static extern void DeleteMaterial(global::System.Runtime.InteropServices.HandleRef material);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_Assign")]
+            public static extern global::System.IntPtr MaterialAssign(global::System.Runtime.InteropServices.HandleRef material, global::System.Runtime.InteropServices.HandleRef sourceMaterial);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_DownCast")]
+            public static extern global::System.IntPtr MaterialDownCast(global::System.Runtime.InteropServices.HandleRef material);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_NAME_get")]
+            public static extern int PropertyNameIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_BASE_COLOR_URL_get")]
+            public static extern int PropertyBaseColorUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_BASE_COLOR_FACTOR_get")]
+            public static extern int PropertyBaseColorFactorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_METALLIC_ROUGHNESS_URL_get")]
+            public static extern int PropertyMetallicRoughnessUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_METALLIC_FACTOR_get")]
+            public static extern int PropertyMetallicFactorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_ROUGHNESS_FACTOR_get")]
+            public static extern int PropertyRoughnessFactorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_NORMAL_URL_get")]
+            public static extern int PropertyNormalUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_NORMAL_SCALE_get")]
+            public static extern int PropertyNormalScaleIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_OCCLUSION_URL_get")]
+            public static extern int PropertyOcclusionUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_OCCLUSION_STRENGTH_get")]
+            public static extern int PropertyOcclusionStrengthIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_EMISSIVE_URL_get")]
+            public static extern int PropertyEmissiveUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_EMISSIVE_FACTOR_get")]
+            public static extern int PropertyEmissiveFactorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_ALPHA_MODE_get")]
+            public static extern int PropertyAlphaModeIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_ALPHA_CUTOFF_get")]
+            public static extern int PropertyAlphaCutOffIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_DOUBLE_SIDED_get")]
+            public static extern int PropertyDoubleSidedIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_IOR_get")]
+            public static extern int PropertyIorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_SPECULAR_URL_get")]
+            public static extern int PropertySpecularUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_SPECULAR_FACTOR_get")]
+            public static extern int PropertySpecularFactorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_SPECULAR_COLOR_URL_get")]
+            public static extern int PropertySpecularColorUrlIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_property_SPECULAR_COLOR_FACTOR_get")]
+            public static extern int PropertySpecularColorFactorIndexGet();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_SetProperty")]
+            public static extern void SetProperty(global::System.Runtime.InteropServices.HandleRef model, int index, global::System.Runtime.InteropServices.HandleRef propertyValue);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_GetProperty")]
+            public static extern global::System.IntPtr GetProperty(global::System.Runtime.InteropServices.HandleRef model, int index);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_SetTexture")]
+            public static extern void SetTexture(global::System.Runtime.InteropServices.HandleRef model, int textureType, global::System.Runtime.InteropServices.HandleRef texture);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_GetTexture")]
+            public static extern global::System.IntPtr GetTexture(global::System.Runtime.InteropServices.HandleRef model, int textureType);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_SetSampler")]
+            public static extern void SetSampler(global::System.Runtime.InteropServices.HandleRef model, int textureType, global::System.Runtime.InteropServices.HandleRef sampler);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Material_GetSampler")]
+            public static extern global::System.IntPtr GetSampler(global::System.Runtime.InteropServices.HandleRef model, int textureType);
+        }
+    }
+}
index d9b5d4b..364a9cb 100755 (executable)
@@ -24,6 +24,9 @@ namespace Tizen.NUI.Scene3D
             [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_New_SWIG_0")]
             public static extern global::System.IntPtr ModelNew(string modelUrl, string resourcePasth);
 
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_New_SWIG_1")]
+            public static extern global::System.IntPtr ModelNew();
+
             [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Model_SWIG_0")]
             public static extern global::System.IntPtr NewModel();
 
@@ -42,6 +45,12 @@ namespace Tizen.NUI.Scene3D
             [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_GetModelRoot")]
             public static extern global::System.IntPtr GetModelRoot(global::System.Runtime.InteropServices.HandleRef model);
 
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_AddModelNode")]
+            public static extern void AddModelNode(global::System.Runtime.InteropServices.HandleRef model, global::System.Runtime.InteropServices.HandleRef modelNode);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_RemoveModelNode")]
+            public static extern void RemoveModelNode(global::System.Runtime.InteropServices.HandleRef model, global::System.Runtime.InteropServices.HandleRef modelNode);
+
             [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_SetChildrenSensitive")]
             public static extern void SetChildrenSensitive(global::System.Runtime.InteropServices.HandleRef model, bool enable);
 
@@ -77,6 +86,9 @@ namespace Tizen.NUI.Scene3D
             [return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.U1)]
             public static extern bool ApplyCamera(global::System.Runtime.InteropServices.HandleRef model, uint index, global::System.Runtime.InteropServices.HandleRef camera);
 
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_FindChildModelNodeByName")]
+            public static extern global::System.IntPtr FindChildModelNodeByName(global::System.Runtime.InteropServices.HandleRef model, string nodeName);
+
             [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_LoadBvhAnimation_1")]
             public static extern global::System.IntPtr LoadBvhAnimation(global::System.Runtime.InteropServices.HandleRef model, string bvhFilename, global::System.Runtime.InteropServices.HandleRef scale);
 
diff --git a/src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.ModelNode.cs b/src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.ModelNode.cs
new file mode 100755 (executable)
index 0000000..fdb5d93
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+namespace Tizen.NUI.Scene3D
+{
+    internal static partial class Interop
+    {
+        internal static partial class ModelNode
+        {
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_New_SWIG_0")]
+            public static extern global::System.IntPtr ModelNodeNew();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Model_Node_SWIG_0")]
+            public static extern global::System.IntPtr NewModelNode();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Model_Node_SWIG_1")]
+            public static extern global::System.IntPtr NewModelNode(global::System.Runtime.InteropServices.HandleRef modelNode);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_delete_Model_Node")]
+            public static extern void DeleteModelNode(global::System.Runtime.InteropServices.HandleRef modelNode);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_Assign")]
+            public static extern global::System.IntPtr ModelNodeAssign(global::System.Runtime.InteropServices.HandleRef modelNode, global::System.Runtime.InteropServices.HandleRef sourceModelNode);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_DownCast")]
+            public static extern global::System.IntPtr ModelNodeDownCast(global::System.Runtime.InteropServices.HandleRef modelNode);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_GetModelPrimitiveCount")]
+            public static extern uint GetModelPrimitiveCount(global::System.Runtime.InteropServices.HandleRef model);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_AddModelPrimitive")]
+            public static extern void AddModelPrimitive(global::System.Runtime.InteropServices.HandleRef model, global::System.Runtime.InteropServices.HandleRef modelPrimitive);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_RemoveModelPrimitive")]
+            public static extern void RemoveModelPrimitive(global::System.Runtime.InteropServices.HandleRef model, global::System.Runtime.InteropServices.HandleRef modelPrimitive);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_RemoveModelPrimitive")]
+            public static extern void RemoveModelPrimitive(global::System.Runtime.InteropServices.HandleRef model, uint index);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_GetModelPrimitive")]
+            public static extern global::System.IntPtr GetModelPrimitive(global::System.Runtime.InteropServices.HandleRef model, uint index);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Node_FindChildModelNodeByName")]
+            public static extern global::System.IntPtr FindChildModelNodeByName(global::System.Runtime.InteropServices.HandleRef model, string nodeName);
+        }
+    }
+}
diff --git a/src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.ModelPrimitive.cs b/src/Tizen.NUI.Scene3D/src/internal/Interop/Interop.ModelPrimitive.cs
new file mode 100755 (executable)
index 0000000..54ae87c
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+namespace Tizen.NUI.Scene3D
+{
+    internal static partial class Interop
+    {
+        internal static partial class ModelPrimitive
+        {
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_New_SWIG_0")]
+            public static extern global::System.IntPtr ModelPrimitiveNew();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Model_Primitive_SWIG_0")]
+            public static extern global::System.IntPtr NewModelPrimitive();
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_new_Model_Primitive_SWIG_1")]
+            public static extern global::System.IntPtr NewModelPrimitive(global::System.Runtime.InteropServices.HandleRef modelPrimitive);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_delete_Model_Primitive")]
+            public static extern void DeleteModelPrimitive(global::System.Runtime.InteropServices.HandleRef modelPrimitive);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_Assign")]
+            public static extern global::System.IntPtr ModelPrimitiveAssign(global::System.Runtime.InteropServices.HandleRef modelPrimitive, global::System.Runtime.InteropServices.HandleRef sourceModelPrimitive);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_DownCast")]
+            public static extern global::System.IntPtr ModelPrimitiveDownCast(global::System.Runtime.InteropServices.HandleRef modelPrimitive);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_SetGeometry")]
+            public static extern void SetGeometry(global::System.Runtime.InteropServices.HandleRef model, global::System.Runtime.InteropServices.HandleRef geometry);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_GetGeometry")]
+            public static extern global::System.IntPtr GetGeometry(global::System.Runtime.InteropServices.HandleRef model);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_SetMaterial")]
+            public static extern void SetMaterial(global::System.Runtime.InteropServices.HandleRef model, global::System.Runtime.InteropServices.HandleRef material);
+
+            [global::System.Runtime.InteropServices.DllImport(Libraries.Scene3D, EntryPoint = "CSharp_Dali_Model_Primitive_GetMaterial")]
+            public static extern global::System.IntPtr GetMaterial(global::System.Runtime.InteropServices.HandleRef model);
+        }
+    }
+}
index ad360a0..5a83ca6 100755 (executable)
@@ -99,6 +99,17 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
+        /// Create an initialized Model.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Model() : this(Interop.Model.ModelNew(), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            this.PositionUsesAnchorPoint = true;
+        }
+
+        /// <summary>
         /// Copy constructor.
         /// </summary>
         /// <param name="model">Source object to copy.</param>
@@ -139,6 +150,57 @@ namespace Tizen.NUI.Scene3D
         }
 
         /// <summary>
+        /// Adds modelNode to this Model.
+        /// </summary>
+        /// <param name="modelRoot">Root of a ModelNode tree</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void AddModelNode(ModelNode modelRoot)
+        {
+            Interop.Model.AddModelNode(SwigCPtr, ModelNode.getCPtr(modelRoot));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Removes modelNode from this Model.
+        /// </summary>
+        /// <param name="modelRoot">Root of a ModelNode tree to be removed</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void RemoveModelNode(ModelNode modelRoot)
+        {
+            Interop.Model.RemoveModelNode(SwigCPtr, ModelNode.getCPtr(modelRoot));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Removes Returns a child ModelNode object with a name that matches nodeName.
+        /// </summary>
+        /// <param name="nodeName">The name of the child ModelNode object you want to find.</param>
+        /// <returns>Child ModelNode that has nodeName as name.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelNode FindChildModelNodeByName(string nodeName)
+        {
+            global::System.IntPtr cPtr = Interop.Model.FindChildModelNodeByName(SwigCPtr, nodeName);
+            ModelNode ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as ModelNode;
+            if (ret == null)
+            {
+                // Register new animatable into Registry.
+                ret = new ModelNode(cPtr, true);
+            }
+            else
+            {
+                // We found matched NUI animatable. Reduce cPtr reference count.
+                HandleRef handle = new HandleRef(this, cPtr);
+                Tizen.NUI.Interop.BaseHandle.DeleteBaseHandle(handle);
+                handle = new HandleRef(null, IntPtr.Zero);
+            }
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
         /// Changes Image Based Light according to the given input textures.
         /// </summary>
         /// <param name="diffuseUrl">The path of Cube map image that will be used as a diffuse IBL source.</param>
@@ -350,14 +412,14 @@ namespace Tizen.NUI.Scene3D
         /// <returns>Root View of the model.</returns>
         // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private Animatable GetModelRoot()
+        private ModelNode GetModelRoot()
         {
             global::System.IntPtr cPtr = Interop.Model.GetModelRoot(SwigCPtr);
-            Animatable ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Animatable;
+            ModelNode ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as ModelNode;
             if (ret == null)
             {
                 // Register new animatable into Registry.
-                ret = new Animatable(cPtr, true);
+                ret = new ModelNode(cPtr, true);
             }
             else
             {
diff --git a/src/Tizen.NUI.Scene3D/src/public/ModelComponents/Material.cs b/src/Tizen.NUI.Scene3D/src/public/ModelComponents/Material.cs
new file mode 100755 (executable)
index 0000000..d97be5a
--- /dev/null
@@ -0,0 +1,671 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+using Tizen.NUI;
+using Tizen.NUI.Binding;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Scene3D
+{
+    /// <summary>
+    /// Class for setting Material properties of 3D models.
+    /// </summary>
+    /// <remarks>
+    /// This Material class is for setting Material properties of 3D models.
+    /// This Material supports properties and textures for PBR. Also, Material
+    /// can be shared with multiple ModelPrimitives and if the value is modified,
+    /// the rendering results of all ModelPrimitives using this Material will be changed.
+    /// </remarks>
+    /// <example>
+    /// <code>
+    /// Material material = new Material();
+    /// ModelPrimitive modelPrimitive = new ModelPrimitive();
+    /// modelPrimitive.Material = material;
+    /// </code>
+    /// </example>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public class Material : BaseHandle
+    {
+        internal Material(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
+        {
+        }
+
+        /// <summary>
+        /// Create an initialized Material.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Material() : this(Interop.Material.MaterialNew(), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Copy constructor.
+        /// </summary>
+        /// <param name="material">Source object to copy.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Material(Material material) : this(Interop.Material.NewMaterial(Material.getCPtr(material)), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Assignment operator.
+        /// </summary>
+        /// <param name="material">Source object to be assigned.</param>
+        /// <returns>Reference to this.</returns>
+        internal Material Assign(Material material)
+        {
+            Material ret = new Material(Interop.Material.MaterialAssign(SwigCPtr, Material.getCPtr(material)), false);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// The name of the Material.
+        /// </summary>
+        /// <remarks>
+        /// This Name property is for setting the name of Material. The name can be used to identify the Material.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string Name
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyNameIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyNameIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the base color texture.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the base color of the material.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string BaseColorUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyBaseColorUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyBaseColorUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the base color factor of the material.
+        /// </summary>
+        /// <remarks>
+        /// This factor is multiplied with the base color of the material.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Vector4 BaseColorFactor
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyBaseColorFactorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyBaseColorFactorIndexGet());
+                pValue.Get(temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the metallic roughness texture.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the metallicness and roughness of the material.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string MetallicRoughnessUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyMetallicRoughnessUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyMetallicRoughnessUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the metallic factor of the material.
+        /// </summary>
+        /// <remarks>
+        /// This factor is multiplied with the metallicness of the material.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float MetallicFactor
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyMetallicFactorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyMetallicFactorIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the roughness factor of the material.
+        /// </summary>
+        /// <remarks>
+        /// This factor is multiplied with the roughness of the material.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float RoughnessFactor
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyRoughnessFactorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyRoughnessFactorIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the normal texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string NormalUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyNormalUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyNormalUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the scale of the normal texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float NormalScale
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyNormalScaleIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyNormalScaleIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the occlusion texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string OcclusionUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyOcclusionUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyOcclusionUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the strength of the occlusion texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float OcclusionStrength
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyOcclusionStrengthIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyOcclusionStrengthIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the emissive texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string EmissiveUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyEmissiveUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyEmissiveUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the emissive factor of the material.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Vector3 EmissiveFactor
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyEmissiveFactorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyEmissiveFactorIndexGet());
+                pValue.Get(temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the alpha blending mode of the material.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public MaterialAlphaModeType AlphaMode
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue((int)value);
+                SetProperty(Interop.Material.PropertyAlphaModeIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                int temp = 0;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyAlphaModeIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return (MaterialAlphaModeType)temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the alpha cutoff value of the material.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float AlphaCutoff
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyAlphaCutOffIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyAlphaCutOffIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the double sided material flag.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public bool DoubleSided
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyDoubleSidedIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                bool temp = false;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyDoubleSidedIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the index of refraction of the material.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float Ior
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertyIorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertyIorIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the specular texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string SpecularUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertySpecularUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertySpecularUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+
+
+
+        /// <summary>
+        /// Property for the specular factor of the material.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public float SpecularFactor
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertySpecularFactorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                float temp = 0.0f;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertySpecularFactorIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the URL of the specular color texture.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public string SpecularColorUrl
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertySpecularColorUrlIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                string temp;
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertySpecularColorUrlIndexGet());
+                pValue.Get(out temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+        /// <summary>
+        /// Property for the specular color factor of the material.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Vector3 SpecularColorFactor
+        {
+            set
+            {
+                var temp = new Tizen.NUI.PropertyValue(value);
+                SetProperty(Interop.Material.PropertySpecularColorFactorIndexGet(), temp);
+                temp.Dispose();
+            }
+            get
+            {
+                Vector3 temp = new Vector3(0.0f, 0.0f, 0.0f);
+                Tizen.NUI.PropertyValue pValue = GetProperty(Interop.Material.PropertySpecularColorFactorIndexGet());
+                pValue.Get(temp);
+                pValue.Dispose();
+                return temp;
+            }
+        }
+
+
+
+
+
+        /// <summary>
+        /// Sets the texture of the ModelNode object for the specified texture type.
+        /// </summary>
+        /// <param name="textureType">The TextureType of the texture to set.</param>
+        /// <param name="texture">The Texture object to set.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetTexture(MaterialTextureType textureType, Texture texture)
+        {
+            Interop.Material.SetTexture(SwigCPtr, (int)textureType, Texture.getCPtr(texture));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Gets the texture of the ModelNode object for the specified texture type.
+        /// </summary>
+        /// <param name="textureType">The TextureType of the texture to get.</param>
+        /// <returns>The Texture object of the ModelNode object for the specified texture type.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Texture GetTexture(MaterialTextureType textureType)
+        {
+            IntPtr cPtr = Interop.Material.GetTexture(SwigCPtr, (int)textureType);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            Texture ret = (cPtr == IntPtr.Zero) ? null : Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Texture;
+            return ret;
+        }
+
+        /// <summary>
+        /// Sets the sampler of the ModelNode object for the specified texture type.
+        /// </summary>
+        /// <param name="textureType">The TextureType of the sampler to set.</param>
+        /// <param name="sampler">The Sampler object to set.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetSampler(MaterialTextureType textureType, Sampler sampler)
+        {
+            Interop.Material.SetSampler(SwigCPtr, (int)textureType, Sampler.getCPtr(sampler));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Gets the sampler of the ModelNode object for the specified texture type.
+        /// </summary>
+        /// <param name="textureType">The TextureType of the sampler to get.</param>
+        /// <returns>The Sampler object of the ModelNode object for the specified texture type.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Sampler GetSampler(MaterialTextureType textureType)
+        {
+            IntPtr cPtr = Interop.Material.GetSampler(SwigCPtr, (int)textureType);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            Sampler ret = (cPtr == IntPtr.Zero) ? null : Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Sampler;
+            return ret;
+        }
+
+        /// <summary>
+        /// Sets the value of an existing property.
+        /// </summary>
+        /// <param name="index">The index of the property.</param>
+        /// <param name="propertyValue">The new value of the property.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private void SetProperty(int index, PropertyValue propertyValue)
+        {
+            global::System.Runtime.InteropServices.HandleRef handle = SwigCPtr;
+            if (handle.Handle == global::System.IntPtr.Zero)
+            {
+                throw new global::System.InvalidOperationException("Error! NUI's native dali object is already disposed. OR the native dali object handle of NUI becomes null!");
+            }
+
+            Interop.Material.SetProperty(handle, index, PropertyValue.getCPtr(propertyValue));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Retrieves a property value.
+        /// </summary>
+        /// <param name="index">The index of the property.</param>
+        /// <returns>The property value.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private PropertyValue GetProperty(int index)
+        {
+            global::System.Runtime.InteropServices.HandleRef handle = SwigCPtr;
+            if (handle.Handle == global::System.IntPtr.Zero)
+            {
+                throw new global::System.InvalidOperationException("Error! NUI's native dali object is already disposed. OR the native dali object handle of NUI becomes null!");
+            }
+
+            PropertyValue ret = new PropertyValue(Interop.Material.GetProperty(handle, index), true);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// Release swigCPtr.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected override void ReleaseSwigCPtr(global::System.Runtime.InteropServices.HandleRef swigCPtr)
+        {
+            Interop.Material.DeleteMaterial(swigCPtr);
+        }
+    }
+}
diff --git a/src/Tizen.NUI.Scene3D/src/public/ModelComponents/MaterialAlphaModeType.cs b/src/Tizen.NUI.Scene3D/src/public/ModelComponents/MaterialAlphaModeType.cs
new file mode 100755 (executable)
index 0000000..27f005f
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System.ComponentModel;
+
+namespace Tizen.NUI.Scene3D
+{
+    /// <summary>
+    /// MaterialAlphaModeType is enum for Material's AlphaMode type
+    /// </summary>
+    // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public enum MaterialAlphaModeType
+    {
+        /// <summary>
+        /// This indicates that the material is fully opaque and that the alpha value should be ignored.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Opaque,
+
+        /// <summary>
+        /// This indicates that the material is either fully opaque or fully transparent depending on the alpha value. The alpha value is used to mask out areas of the material that should be transparent.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Mask,
+
+        /// <summary>
+        /// This indicates that the material is transparent and that the alpha value should be used to blend the material with the background.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Blend,
+    }
+}
diff --git a/src/Tizen.NUI.Scene3D/src/public/ModelComponents/MaterialTextureType.cs b/src/Tizen.NUI.Scene3D/src/public/ModelComponents/MaterialTextureType.cs
new file mode 100755 (executable)
index 0000000..f7812a2
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System.ComponentModel;
+
+namespace Tizen.NUI.Scene3D
+{
+    /// <summary>
+    /// MaterialTextureType is enum for Material's Texture type
+    /// </summary>
+    // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public enum MaterialTextureType
+    {
+        /// <summary>
+        /// Base Color Texture Property.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the base color of the material. In most cases, this will be the diffuse color of the material.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        BaseColor,
+
+        /// <summary>
+        /// Metallic Roughness Texture Property.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the metallicness and roughness of the material. This texture can be used to make the material look more metallic or rough.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        MetallicRoughness,
+
+        /// <summary>
+        /// Normal Texture Property.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the surface of the material. This texture can be used to make the surface of the material look smooth or rough.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Normal,
+
+        /// <summary>
+        /// Occlusion Texture Property.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the depth of the material. This texture can be used to make the material look more three-dimensional.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Occlusion,
+
+        /// <summary>
+        /// Emissive Texture Property.
+        /// </summary> 
+        /// <remarks> 
+        /// This texture makes the material look like it's emitting light. This texture can be used to make the material look like it's glowing.
+        /// </remarks> 
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Emissive,
+
+        /// <summary>
+        /// Specular Texture Property.
+        /// </summary>
+        /// <remarks>
+        /// This texture represents the specular reflection of the material. This texture can be used to make the material look more reflective.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Specular,
+
+        /// <summary>
+        /// Specular Color Texture Property.
+        ///</summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        SpecularColor,
+    }
+}
diff --git a/src/Tizen.NUI.Scene3D/src/public/ModelComponents/ModelNode.cs b/src/Tizen.NUI.Scene3D/src/public/ModelComponents/ModelNode.cs
new file mode 100755 (executable)
index 0000000..8974205
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+using Tizen.NUI;
+using Tizen.NUI.Binding;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Scene3D
+{
+    /// <summary>
+    /// ModelNode is a class for representing the Node of Model in Scene3D.
+    /// </summary>
+    ///
+    /// <remarks>
+    /// ModelNode contains multiple ModelPrimitives and allows easy access and
+    /// modification of Material information that ModelPrimitive has. If a 3D
+    /// format file is loaded by Model, ModelNode is created internally to
+    /// construct the model. In addition, you can create a Custom ModelNode
+    /// using ModelPrimitive and Material directly and add it to Model.
+    ///
+    /// <code>
+    /// ModelNode modelNode = new ModelNode();
+    /// ModelPrimitive modelPrimitive = new ModelPrimitive();
+    /// modelNode.AddModelPrimitive(modelPrimitive);
+    ///
+    /// Material material = new Material;
+    /// modelPrimitive.Material = material;
+    /// </code>
+    /// </remarks>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public class ModelNode : View
+    {
+        internal ModelNode(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
+        {
+        }
+
+        /// <summary>
+        /// Create an initialized ModelNode.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelNode() : this(Interop.ModelNode.ModelNodeNew(), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            this.PositionUsesAnchorPoint = true;
+        }
+
+        /// <summary>
+        /// Copy constructor.
+        /// </summary>
+        /// <param name="modelNode">Source object to copy.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelNode(ModelNode modelNode) : this(Interop.ModelNode.NewModelNode(ModelNode.getCPtr(modelNode)), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Assignment operator.
+        /// </summary>
+        /// <param name="modelNode">Source object to be assigned.</param>
+        /// <returns>Reference to this.</returns>
+        internal ModelNode Assign(ModelNode modelNode)
+        {
+            ModelNode ret = new ModelNode(Interop.ModelNode.ModelNodeAssign(SwigCPtr, ModelNode.getCPtr(modelNode)), false);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// Get the number of ModelPrimitive of this ModelNode.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint ModelPrimitiveCount
+        {
+            get
+            {
+                return GetModelPrimitiveCount();
+            }
+        }
+
+        /// <summary>
+        /// Adds a ModelPrimitive object to the ModelNode object.
+        /// </summary>
+        /// <param name="modelPrimitive">The ModelPrimitive object to add.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void AddModelPrimitive(ModelPrimitive modelPrimitive)
+        {
+            Interop.ModelNode.AddModelPrimitive(SwigCPtr, ModelPrimitive.getCPtr(modelPrimitive));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Removes a ModelPrimitive object from the ModelNode object.
+        /// </summary>
+        /// <param name="modelPrimitive">The ModelPrimitive object to remove.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void RemoveModelPrimitive(ModelPrimitive modelPrimitive)
+        {
+            Interop.ModelNode.RemoveModelPrimitive(SwigCPtr, ModelPrimitive.getCPtr(modelPrimitive));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Removes a ModelPrimitive object from the ModelNode object at the specified index.
+        /// </summary>
+        /// <param name="index">The index of the ModelPrimitive object to remove.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void RemoveModelPrimitive(uint index)
+        {
+            Interop.ModelNode.RemoveModelPrimitive(SwigCPtr, index);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Gets the ModelPrimitive object at the specified index.
+        /// </summary>
+        /// <param name="index">The index of the ModelPrimitive object to get.</param>
+        /// <returns>The ModelPrimitive object at the specified index.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelPrimitive GetModelPrimitive(uint index)
+        {
+            global::System.IntPtr cPtr = Interop.ModelNode.GetModelPrimitive(SwigCPtr, index);
+            ModelPrimitive ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as ModelPrimitive;
+            if (ret == null)
+            {
+                // Register new animatable into Registry.
+                ret = new ModelPrimitive(cPtr, true);
+            }
+            else
+            {
+                // We found matched NUI animatable. Reduce cPtr reference count.
+                HandleRef handle = new HandleRef(this, cPtr);
+                Tizen.NUI.Interop.BaseHandle.DeleteBaseHandle(handle);
+                handle = new HandleRef(null, IntPtr.Zero);
+            }
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// Removes Returns a child ModelNode object with a name that matches nodeName.
+        /// </summary>
+        /// <param name="nodeName">The name of the child ModelNode object you want to find.</param>
+        /// <returns>Child ModelNode that has nodeName as name.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelNode FindChildModelNodeByName(string nodeName)
+        {
+            global::System.IntPtr cPtr = Interop.Model.FindChildModelNodeByName(SwigCPtr, nodeName);
+            ModelNode ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as ModelNode;
+            if (ret == null)
+            {
+                // Register new animatable into Registry.
+                ret = new ModelNode(cPtr, true);
+            }
+            else
+            {
+                // We found matched NUI animatable. Reduce cPtr reference count.
+                HandleRef handle = new HandleRef(this, cPtr);
+                Tizen.NUI.Interop.BaseHandle.DeleteBaseHandle(handle);
+                handle = new HandleRef(null, IntPtr.Zero);
+            }
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// Gets the number of ModelPrimitive objects in the ModelNode object.
+        /// </summary>
+        /// <returns>The number of ModelPrimitive objects in the ModelNode object.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private uint GetModelPrimitiveCount()
+        {
+            uint ret = Interop.ModelNode.GetModelPrimitiveCount(SwigCPtr);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// Release swigCPtr.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected override void ReleaseSwigCPtr(global::System.Runtime.InteropServices.HandleRef swigCPtr)
+        {
+            Interop.ModelNode.DeleteModelNode(swigCPtr);
+        }
+    }
+}
diff --git a/src/Tizen.NUI.Scene3D/src/public/ModelComponents/ModelPrimitive.cs b/src/Tizen.NUI.Scene3D/src/public/ModelComponents/ModelPrimitive.cs
new file mode 100755 (executable)
index 0000000..0af4a90
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Copyright(c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+using Tizen.NUI;
+using Tizen.NUI.Binding;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Scene3D
+{
+    /// <summary>
+    /// Class for Model Primitives for 3D Geometry and Material.
+    /// </summary>
+    ///
+    /// <remarks>
+    /// This ModelPrimitive class is required to draw the mesh geometry defined by the user.
+    /// Users can set Geometry and Material to ModelPrimitive.
+    /// When ModelPrimitive added to ModelNode using ModelNode.AddModelPrimitive() method,
+    /// the Geometry is rendered on the screen according to the Material settings.
+    ///
+    /// If you load resources from 3D format files such as glTF using Model class,
+    /// ModelPrimitive is also created internally. In this case, blendShape morphing
+    /// or skeletal animation defined in the format can be used.
+    /// However, for the custom ModelPrimitive that is created by user, blendShape morphing or skeletal animation is not supported.
+    /// </remarks>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public class ModelPrimitive : BaseHandle
+    {
+        internal ModelPrimitive(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
+        {
+        }
+
+        /// <summary>
+        /// Create an initialized ModelPrimitive.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelPrimitive() : this(Interop.ModelPrimitive.ModelPrimitiveNew(), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Copy constructor.
+        /// </summary>
+        /// <param name="modelPrimitive">Source object to copy.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public ModelPrimitive(ModelPrimitive modelPrimitive) : this(Interop.ModelPrimitive.NewModelPrimitive(ModelPrimitive.getCPtr(modelPrimitive)), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Assignment operator.
+        /// </summary>
+        /// <param name="modelPrimitive">Source object to be assigned.</param>
+        /// <returns>Reference to this.</returns>
+        internal ModelPrimitive Assign(ModelPrimitive modelPrimitive)
+        {
+            ModelPrimitive ret = new ModelPrimitive(Interop.ModelPrimitive.ModelPrimitiveAssign(SwigCPtr, ModelPrimitive.getCPtr(modelPrimitive)), false);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        /// <summary>
+        /// The Geometry object of the ModelNode object.
+        /// </summary>
+        /// <remarks>
+        /// This Geometry object is for setting Geometry properties of 3D models. Also, Geometry can be shared with multiple ModelPrimitives and if the value is modified, the rendering results of all ModelPrimitives using this Geometry will be changed.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Geometry Geometry
+        {
+            set
+            {
+                SetGeometry(value);
+            }
+            get
+            {
+                return GetGeometry();
+            }
+        }
+
+        /// <summary>
+        /// The Material object of the ModelNode object.
+        /// </summary>
+        /// <remarks>
+        /// This Material object is for setting Material properties of 3D models. Also, Material can be shared with multiple ModelPrimitives and if the value is modified, the rendering results of all ModelPrimitives using this Material will be changed.
+        /// </remarks>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Material Material
+        {
+            set
+            {
+                SetMaterial(value);
+            }
+            get
+            {
+                return GetMaterial();
+            }
+        }
+
+        /// <summary>
+        /// Sets the geometry of the ModelPrimitive object.
+        /// </summary>
+        /// <param name="geometry">The Geometry object to set.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private void SetGeometry(Geometry geometry)
+        {
+            Interop.ModelPrimitive.SetGeometry(SwigCPtr, Geometry.getCPtr(geometry));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Gets the geometry of the ModelPrimitive object.
+        /// </summary>
+        /// <returns>The Geometry object of the ModelPrimitive object.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private Geometry GetGeometry()
+        {
+            IntPtr cPtr = Interop.ModelPrimitive.GetGeometry(SwigCPtr);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            Geometry ret = (cPtr == IntPtr.Zero) ? null : Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Geometry;
+            return ret;
+        }
+
+        /// <summary>
+        /// Sets the material of the ModelPrimitive object.
+        /// </summary>
+        /// <param name="material">The Material object to set.</param>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private void SetMaterial(Material material)
+        {
+            Interop.ModelPrimitive.SetMaterial(SwigCPtr, Material.getCPtr(material));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Gets the material of the ModelPrimitive object.
+        /// </summary>
+        /// <returns>The Material object of the ModelPrimitive object.</returns>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private Material GetMaterial()
+        {
+            IntPtr cPtr = Interop.ModelPrimitive.GetMaterial(SwigCPtr);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            Material ret = (cPtr == IntPtr.Zero) ? null : Registry.GetManagedBaseHandleFromNativePtr(cPtr) as Material;
+            return ret;
+        }
+
+        /// <summary>
+        /// Release swigCPtr.
+        /// </summary>
+        // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API)
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected override void ReleaseSwigCPtr(global::System.Runtime.InteropServices.HandleRef swigCPtr)
+        {
+            Interop.ModelPrimitive.DeleteModelPrimitive(swigCPtr);
+        }
+    }
+}