diff options
author | Eunki Hong <h.pichulia@gmail.com> | 2023-01-25 14:14:16 +0900 |
---|---|---|
committer | Taehyub Kim <taehyub.kim@samsung.com> | 2023-01-25 18:22:01 +0900 |
commit | 9b380f358d32ce84c1ea14fba9674f20706fe78c (patch) | |
tree | 01a185d227da9ecc6539a6cad76d58dd76933e58 | |
parent | 80e70d687ef3144d2f058caab2d68bb4a613fdac (diff) | |
download | tizenfx-9b380f358d32ce84c1ea14fba9674f20706fe78c.tar.gz tizenfx-9b380f358d32ce84c1ea14fba9674f20706fe78c.tar.bz2 tizenfx-9b380f358d32ce84c1ea14fba9674f20706fe78c.zip |
[NUI] Add Tizen.NUI.Scene3D simple demo (#4917)
* [NUI] Add Tizen.NUI.Scene3D simple demo
Hello 3d world!
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
* Update Scene3DSample.cs
2022 -> 2023
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Co-authored-by: Eunki, Hong <eunkiki.hong@samsung.com>
20 files changed, 849 insertions, 0 deletions
diff --git a/test/Tizen.NUI.Scene3D.Sample/Scene3DSample.cs b/test/Tizen.NUI.Scene3D.Sample/Scene3DSample.cs new file mode 100644 index 000000000..f4123eeaf --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/Scene3DSample.cs @@ -0,0 +1,245 @@ +/* + * 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 Tizen.NUI; +using Tizen.NUI.BaseComponents; +using Tizen.NUI.Constants; +using Tizen.NUI.Scene3D; +using System.Collections.Generic; + +class Scene3DSample : NUIApplication +{ + static string IMAGE_DIR = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "image/"; + static string MODEL_DIR = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "model/"; + + Window mWindow; + Vector2 mWindowSize; + + SceneView mSceneView; + Model mModel; + + uint currentCameraIndex = 0u; + const int cameraAnimationDurationMilliSeconds = 2000; // milliSeconds + + Animation mModelRotateAnimation; + const int modelRotateAnimationDurationMilliSeconds = 10000; // milliSeconds + + protected void CreateSceneView() + { + mSceneView = new SceneView() + { + SizeWidth = mWindowSize.Width, + SizeHeight = mWindowSize.Height, + PositionX = 0.0f, + PositionY = 0.0f, + PivotPoint = PivotPoint.TopLeft, + ParentOrigin = ParentOrigin.TopLeft, + PositionUsesPivotPoint = true, + }; + + SetupSceneViewCamera(mSceneView); + + mWindow.Add(mSceneView); + } + private void SetupSceneViewCamera(SceneView sceneView) + { + // Default camera setting + // Note : SceneView always have 1 default camera. + Tizen.NUI.Scene3D.Camera defaultCamera = sceneView.GetCamera(0u); + + defaultCamera.PositionX = 0.0f; + defaultCamera.PositionY = 0.0f; + defaultCamera.PositionZ = 5.55f; + defaultCamera.NearPlaneDistance = 0.5f; + defaultCamera.FarPlaneDistance = 50.0f; + //defaultCamera.Orientation = new Rotation(new Radian(new Degree(180.0f)), Vector3.YAxis); + defaultCamera.FieldOfView = new Radian(new Degree(45.0f)); + defaultCamera.OrthographicSize = 2.7f; + + // Additional camera setting (top view camera). + Tizen.NUI.Scene3D.Camera camera = new Tizen.NUI.Scene3D.Camera() + { + PositionX = 0.0f, + PositionY = -3.95f, + PositionZ = 0.0f, + NearPlaneDistance = 0.5f, + FarPlaneDistance = 50.0f, + // Rotate by XAxis first, and then rotate by YAxis + Orientation = new Rotation(new Radian(new Degree(90.0f)), Vector3.YAxis) * + new Rotation(new Radian(new Degree(-90.0f)), Vector3.XAxis), + FieldOfView = new Radian(new Degree(70.0f)), + OrthographicSize = 2.7f, + }; + sceneView.AddCamera(camera); + } + + protected void CreateModel(string modelUrl) + { + // Release old one. + if(mModel != null) + { + mModel.Unparent(); + mModel.Dispose(); + } + + mModel = new Model(MODEL_DIR + modelUrl) + { + Name = modelUrl, + }; + mModel.ResourcesLoaded += (s, e) => + { + Model model = s as Model; + + // You can play animation if it has. + if(model.GetAnimationCount() > 0u) + { + model.GetAnimation(0u).Looping = true; + model.GetAnimation(0u).Play(); + } + Tizen.Log.Error("NUI", $"{model.Name} size : {model.Size.Width}, {model.Size.Height}, {model.Size.Depth}\n"); + }; + mModelRotateAnimation = new Animation(modelRotateAnimationDurationMilliSeconds); + mModelRotateAnimation.AnimateBy(mModel, "Orientation", new Rotation(new Radian(new Degree(360.0f)), Vector3.YAxis)); + + mModelRotateAnimation.Looping = true; + mModelRotateAnimation.Play(); + + mSceneView.Add(mModel); + } + + void SetupIBLimage(string specularUrl, string diffuseUrl, float iblFactor) + { + mSceneView.SetImageBasedLightSource(IMAGE_DIR + specularUrl, IMAGE_DIR + diffuseUrl,iblFactor); + } + + void OnKeyEvent(object source, Window.KeyEventArgs e) + { + if (e.Key.State == Key.StateType.Down) + { + FullGC(); + //Streamline.AnnotateChannelEnd(0); + + switch( e.Key.KeyPressedName ) + { + case "Escape": + case "Back": + { + Deactivate(); + Exit(); + break; + } + + case "Return": + case "Select": + { + currentCameraIndex++; + if(currentCameraIndex >= mSceneView.GetCameraCount()) + { + currentCameraIndex = 0; + } + + mSceneView.CameraTransition(currentCameraIndex, cameraAnimationDurationMilliSeconds); + break; + } + + case "1": + { + currentModelIndex++; + if(currentModelIndex >= ModelUrlList.Count) + { + currentModelIndex = 0; + } + + CreateModel(ModelUrlList[currentModelIndex]); + break; + } + case "2": + { + currentIBLIndex++; + if(currentIBLIndex >= IBLUrlList.Count) + { + currentIBLIndex = 0; + } + + SetupIBLimage(IBLUrlList[currentIBLIndex].Item1, IBLUrlList[currentIBLIndex].Item2, 0.7f); + break; + } + } + } + } + + private static readonly List<string> ModelUrlList = new List<string>() + { + // Model reference : https://sketchfab.com/models/b81008d513954189a063ff901f7abfe4 + // Get from KhronosGroup https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/DamagedHelmet + "DamagedHelmet/DamagedHelmet.gltf", + "BoxAnimated/BoxAnimated.gltf", + }; + private int currentModelIndex = 0; + + private static readonly List<(string, string)> IBLUrlList = new List<(string, string)> + { + ("forest_diffuse_cubemap.png", "forest_specular_cubemap.png"), + ("papermill_E_diffuse-64.ktx", "papermill_pmrem.ktx"), + ("Irradiance.ktx", "Radiance.ktx"), + }; + private int currentIBLIndex = 0; + + public void Activate() + { + mWindow = Window.Instance; + mWindow.BackgroundColor = Color.DarkOrchid; + mWindowSize = mWindow.WindowSize; + + mWindow.KeyEvent += OnKeyEvent; + + CreateSceneView(); + SetupIBLimage(IBLUrlList[currentIBLIndex].Item1, IBLUrlList[currentIBLIndex].Item2, 0.7f); + CreateModel(ModelUrlList[currentModelIndex]); + } + public void FullGC(){ + global::System.GC.Collect(); + global::System.GC.WaitForPendingFinalizers(); + global::System.GC.Collect(); + } + + public void Deactivate() + { + DestroyScene(); + } + private void DestroyScene() + { + } + + protected override void OnCreate() + { + // Up call to the Base class first + base.OnCreate(); + Activate(); + } + + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] // Forces app to use one thread to access NUI + static void Main(string[] args) + { + Scene3DSample example = new Scene3DSample(); + example.Run(args); + } +} diff --git a/test/Tizen.NUI.Scene3D.Sample/Tizen.NUI.Scene3D.Sample.code-workspace b/test/Tizen.NUI.Scene3D.Sample/Tizen.NUI.Scene3D.Sample.code-workspace new file mode 100644 index 000000000..3efec6587 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/Tizen.NUI.Scene3D.Sample.code-workspace @@ -0,0 +1,17 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../../src/Tizen.NUI" + }, + { + "path": "../../src/Tizen.NUI.Components" + }, + { + "path": "../../src/Tizen.NUI.Scene3D" + } + ], + "settings": {} +} diff --git a/test/Tizen.NUI.Scene3D.Sample/Tizen.NUI.Scene3D.Sample.csproj b/test/Tizen.NUI.Scene3D.Sample/Tizen.NUI.Scene3D.Sample.csproj new file mode 100644 index 000000000..42edfaa76 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/Tizen.NUI.Scene3D.Sample.csproj @@ -0,0 +1,26 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <AssemblyName>Scene3DSample</AssemblyName> + </PropertyGroup> + + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugType>portable</DebugType> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>None</DebugType> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Tizen.NET.Sdk" Version="1.0.9" /> + <ProjectReference Include="../../src/Tizen/Tizen.csproj" /> + <ProjectReference Include="../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" /> + <ProjectReference Include="../../src/Tizen.NUI.Scene3D/Tizen.NUI.Scene3D.csproj" /> + <ProjectReference Include="../../src/Tizen.NUI/Tizen.NUI.csproj" /> + </ItemGroup> + + <PropertyGroup> + <NeedInjection>True</NeedInjection> + </PropertyGroup> +</Project> diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_AO.jpg b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_AO.jpg Binary files differnew file mode 100644 index 000000000..419f62840 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_AO.jpg diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_albedo.jpg b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_albedo.jpg Binary files differnew file mode 100644 index 000000000..15d64855c --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_albedo.jpg diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_emissive.jpg b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_emissive.jpg Binary files differnew file mode 100644 index 000000000..2de59e897 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_emissive.jpg diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_metalRoughness.jpg b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_metalRoughness.jpg Binary files differnew file mode 100644 index 000000000..04874cb6e --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_metalRoughness.jpg diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_normal.jpg b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_normal.jpg Binary files differnew file mode 100644 index 000000000..94ca20a2d --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/DamagedHelmet/Default_normal.jpg diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/Irradiance.ktx b/test/Tizen.NUI.Scene3D.Sample/res/image/Irradiance.ktx Binary files differnew file mode 100644 index 000000000..940366c6e --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/Irradiance.ktx diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/Radiance.ktx b/test/Tizen.NUI.Scene3D.Sample/res/image/Radiance.ktx Binary files differnew file mode 100644 index 000000000..c25024991 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/Radiance.ktx diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/forest_diffuse_cubemap.png b/test/Tizen.NUI.Scene3D.Sample/res/image/forest_diffuse_cubemap.png Binary files differnew file mode 100644 index 000000000..ff3e237e5 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/forest_diffuse_cubemap.png diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/forest_specular_cubemap.png b/test/Tizen.NUI.Scene3D.Sample/res/image/forest_specular_cubemap.png Binary files differnew file mode 100644 index 000000000..d5cb909c2 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/forest_specular_cubemap.png diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/papermill_E_diffuse-64.ktx b/test/Tizen.NUI.Scene3D.Sample/res/image/papermill_E_diffuse-64.ktx Binary files differnew file mode 100644 index 000000000..c000b615e --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/papermill_E_diffuse-64.ktx diff --git a/test/Tizen.NUI.Scene3D.Sample/res/image/papermill_pmrem.ktx b/test/Tizen.NUI.Scene3D.Sample/res/image/papermill_pmrem.ktx Binary files differnew file mode 100644 index 000000000..62df20eaf --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/image/papermill_pmrem.ktx diff --git a/test/Tizen.NUI.Scene3D.Sample/res/model/BoxAnimated/BoxAnimated.gltf b/test/Tizen.NUI.Scene3D.Sample/res/model/BoxAnimated/BoxAnimated.gltf new file mode 100644 index 000000000..d40924e3d --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/model/BoxAnimated/BoxAnimated.gltf @@ -0,0 +1,328 @@ +{ + "asset": { + "generator": "COLLADA2GLTF", + "version": "2.0" + }, + "scene": 0, + "scenes": [ + { + "nodes": [ + 3, + 0 + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "rotation": [ + -0.0, + -0.0, + -0.0, + -1.0 + ] + }, + { + "children": [ + 2 + ] + }, + { + "mesh": 0, + "rotation": [ + -0.0, + -0.0, + -0.0, + -1.0 + ] + }, + { + "mesh": 1 + } + ], + "meshes": [ + { + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 2 + }, + "indices": 0, + "mode": 4, + "material": 0 + } + ], + "name": "inner_box" + }, + { + "primitives": [ + { + "attributes": { + "NORMAL": 4, + "POSITION": 5 + }, + "indices": 3, + "mode": 4, + "material": 1 + } + ], + "name": "outer_box" + } + ], + "animations": [ + { + "channels": [ + { + "sampler": 0, + "target": { + "node": 2, + "path": "rotation" + } + }, + { + "sampler": 1, + "target": { + "node": 0, + "path": "translation" + } + } + ], + "samplers": [ + { + "input": 6, + "interpolation": "LINEAR", + "output": 7 + }, + { + "input": 8, + "interpolation": "LINEAR", + "output": 9 + } + ] + } + ], + "accessors": [ + { + "bufferView": 0, + "byteOffset": 0, + "componentType": 5123, + "count": 186, + "max": [ + 95 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 1, + "byteOffset": 0, + "componentType": 5126, + "count": 96, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 1152, + "componentType": 5126, + "count": 96, + "max": [ + 0.33504000306129458, + 0.5, + 0.33504000306129458 + ], + "min": [ + -0.33504000306129458, + -0.5, + -0.33504000306129458 + ], + "type": "VEC3" + }, + { + "bufferView": 0, + "byteOffset": 372, + "componentType": 5123, + "count": 576, + "max": [ + 223 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 1, + "byteOffset": 2304, + "componentType": 5126, + "count": 224, + "max": [ + 1.0, + 1.0, + 1.0 + ], + "min": [ + -1.0, + -1.0, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 4992, + "componentType": 5126, + "count": 224, + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 0, + "componentType": 5126, + "count": 2, + "max": [ + 2.5 + ], + "min": [ + 1.25 + ], + "type": "SCALAR" + }, + { + "bufferView": 3, + "byteOffset": 0, + "componentType": 5126, + "count": 2, + "max": [ + 1.0, + 0.0, + 0.0, + 4.4896593387466768e-11 + ], + "min": [ + -0.0, + 0.0, + 0.0, + -1.0 + ], + "type": "VEC4" + }, + { + "bufferView": 2, + "byteOffset": 8, + "componentType": 5126, + "count": 4, + "max": [ + 3.708329916000366 + ], + "min": [ + 0.0 + ], + "type": "SCALAR" + }, + { + "bufferView": 4, + "byteOffset": 0, + "componentType": 5126, + "count": 4, + "max": [ + 0.0, + 2.5199999809265138, + 0.0 + ], + "min": [ + 0.0, + 0.0, + 0.0 + ], + "type": "VEC3" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorFactor": [ + 0.800000011920929, + 0.4159420132637024, + 0.7952920198440552, + 1.0 + ], + "metallicFactor": 0.0 + }, + "name": "inner" + }, + { + "pbrMetallicRoughness": { + "baseColorFactor": [ + 0.3016040027141571, + 0.5335419774055481, + 0.800000011920929, + 1.0 + ], + "metallicFactor": 0.0 + }, + "name": "outer" + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteOffset": 7784, + "byteLength": 1524, + "target": 34963 + }, + { + "buffer": 0, + "byteOffset": 80, + "byteLength": 7680, + "byteStride": 12, + "target": 34962 + }, + { + "buffer": 0, + "byteOffset": 7760, + "byteLength": 24 + }, + { + "buffer": 0, + "byteOffset": 0, + "byteLength": 32 + }, + { + "buffer": 0, + "byteOffset": 32, + "byteLength": 48 + } + ], + "buffers": [ + { + "byteLength": 9308, + "uri": "BoxAnimated0.bin" + } + ] +} + diff --git a/test/Tizen.NUI.Scene3D.Sample/res/model/BoxAnimated/BoxAnimated0.bin b/test/Tizen.NUI.Scene3D.Sample/res/model/BoxAnimated/BoxAnimated0.bin Binary files differnew file mode 100644 index 000000000..2e4ef6eff --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/model/BoxAnimated/BoxAnimated0.bin diff --git a/test/Tizen.NUI.Scene3D.Sample/res/model/DamagedHelmet/DamagedHelmet.bin b/test/Tizen.NUI.Scene3D.Sample/res/model/DamagedHelmet/DamagedHelmet.bin Binary files differnew file mode 100644 index 000000000..6fea01e99 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/model/DamagedHelmet/DamagedHelmet.bin diff --git a/test/Tizen.NUI.Scene3D.Sample/res/model/DamagedHelmet/DamagedHelmet.gltf b/test/Tizen.NUI.Scene3D.Sample/res/model/DamagedHelmet/DamagedHelmet.gltf new file mode 100644 index 000000000..9fad06a53 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/res/model/DamagedHelmet/DamagedHelmet.gltf @@ -0,0 +1,217 @@ +{ + "asset": { + "generator": "Unity 2017.1.0f3", + "extras": { + "exporterVersion" : "2.2.0" + }, + "version": "2.0" + }, + "accessors": [ + { + "bufferView": 2, + "byteOffset": 0, + "componentType": 5126, + "count": 13600, + "max": [ 0.944977, 0.900995, 1 ], + "min": [ -0.944977, -0.900974, -1 ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 163200, + "componentType": 5126, + "count": 13600, + "max": [ 1, 1, 1 ], + "min": [ -1, -1, -1 ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 0, + "componentType": 5126, + "count": 13600, + "max": [ 0.999976, 0.998666 ], + "min": [ 0.00244864, 0.00055312 ], + "type": "VEC2" + }, + { + "bufferView": 3, + "byteOffset": 0, + "componentType": 5126, + "count": 13600, + "max": [ 1, 1, 1, 1 ], + "min": [ -1, -1, -1, -1 ], + "type": "VEC4" + }, + { + "bufferView": 0, + "byteOffset": 0, + "componentType": 5123, + "count": 46356, + "max": [ 13599 ], + "min": [ 0 ], + "type": "SCALAR" + } + ], + "buffers": [ + { + "byteLength": 745512, + "uri": "DamagedHelmet.bin" + } + ], + "bufferViews": [ + { + "buffer": 0, + "byteLength": 92712, + "target": 34963, + "byteOffset": 652800 + }, + { + "buffer": 0, + "byteLength": 108800, + "target": 34962, + "byteStride": 8, + "byteOffset": 0 + }, + { + "buffer": 0, + "byteLength": 326400, + "target": 34962, + "byteStride": 12, + "byteOffset": 108800 + }, + { + "buffer": 0, + "byteLength": 217600, + "target": 34962, + "byteStride": 16, + "byteOffset": 435200 + } + ], + "images": [ + { + "uri": "../../image/DamagedHelmet/Default_albedo.jpg" + }, + { + "uri": "../../image/DamagedHelmet/Default_metalRoughness.jpg" + }, + { + "uri": "../../image/DamagedHelmet/Default_normal.jpg" + }, + { + "uri": "../../image/DamagedHelmet/Default_emissive.jpg" + }, + { + "uri": "../../image/DamagedHelmet/Default_AO.jpg" + } + ], + "materials": [ + { + "pbrMetallicRoughness": { + "baseColorTexture" : { + "index" : 0, + "texCoord" : 0 + }, + "baseColorFactor": [1, 1, 1, 1], + "metallicRoughnessTexture" : { + "index" : 1, + "texCoord" : 0 + }, + "metallicFactor": 1, + "roughnessFactor": 1 + }, + "normalTexture" : { + "index" : 2, + "texCoord" : 0, + "scale" : 0.8 + }, + "emissiveTexture" : { + "index" : 3, + "texCoord" : 0 + }, + "emissiveFactor": [1, 1, 1], + "occlusionTexture" : { + "index" : 4, + "texCoord" : 0, + "strength" : 0.632 + }, + "doubleSided": false, + "name": "Helmet_mat" + } + ], + "meshes": [ + { + "name": "mesh_helmet_LP_14908damagedHelmet", + "primitives": [ + { + "attributes": { + "POSITION": 0, + "NORMAL": 1, + "TEXCOORD_0": 2, + "TANGENT": 3 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "name": "UnityGlTF_root", + "children": [ + 1 + ] + }, + { + "name": "node_damagedHelmet_-6498", + "mesh": 0, + "rotation" : [ + 0.0, + 1.0, + 0.0, + 0.0 + ] + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9985, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scenes": [ + { + "name":"defaultScene", + "nodes": [ + 0 + ] + } + ], + "scene": 0, + "textures": [ + { + "sampler": 0, + "source": 0 + }, + { + "sampler": 0, + "source": 1 + }, + { + "sampler": 0, + "source": 2 + }, + { + "sampler": 0, + "source": 3 + }, + { + "sampler": 0, + "source": 4 + } + ] +}
\ No newline at end of file diff --git a/test/Tizen.NUI.Scene3D.Sample/shared/res/Tizen.NUI.Scene3D.Sample.png b/test/Tizen.NUI.Scene3D.Sample/shared/res/Tizen.NUI.Scene3D.Sample.png Binary files differnew file mode 100644 index 000000000..ef30093cd --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/shared/res/Tizen.NUI.Scene3D.Sample.png diff --git a/test/Tizen.NUI.Scene3D.Sample/tizen-manifest.xml b/test/Tizen.NUI.Scene3D.Sample/tizen-manifest.xml new file mode 100755 index 000000000..ffc26f561 --- /dev/null +++ b/test/Tizen.NUI.Scene3D.Sample/tizen-manifest.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns="http://tizen.org/ns/packages" api-version="6" package="org.tizen.example.Tizen.NUI.Scene3D.Sample" version="1.0.0"> + <profile name="common" /> + <ui-application appid="org.tizen.example.Tizen.NUI.Scene3D.Sample" + exec="Scene3DSample.dll" + type="dotnet-nui" + multiple="false" + taskmanage="true" + nodisplay="false" + launch_mode="single" + > + <label>Tizen.NUI.Scene3D.Sample</label> + <icon>Tizen.NUI.Scene3D.Sample.png</icon> + <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" /> + </ui-application> +</manifest> |