Class Model
Definition
- Namespace:
- Tizen.NUI.Scene3D
- Assembly:
- Tizen.NUI.Scene3D.dll
- API Level:
- 10
Model is a Class to show 3D mesh objects. Model supports glTF 2.0 and DLI model formats. Physically Based Rendering with Image Based Lighting is also supported.
C#Copypublic class Model : View, IDynamicResourceHandler, IElement, INameScope, IElementController, System.IDisposable, IResourcesProvider
- Inheritance
- Implements
Remarks
Since NUI uses a left-handed coordinate system, loaded models are transformed into a left-handed coordinate system with Y pointing down. The Animations defined in the glTF or DLI are also loaded and can be retrieved by using GetAnimation(UInt32) and GetAnimation(String) methods. The number of animation is also retrieved by GetAnimationCount() method.
Model also supports Physically Based Rendering(PBR) with Image Based Lighting(IBL). For the IBL, two cube map textures(diffuse and specular) are required. Model supports 4 types layout for Cube Map: Vertical/Horizontal Cross layouts, and Vertical/Horizontal Array layouts. And also, ktx format with cube map is supported.
The model and IBL textures start to be loaded asynchronously when the Model object is on Window. ResourcesLoaded signal notifies that the loading of the model and IBL resources have been completed. If Model or IBL is requested to be loaded before the other loading is completed, the ResourcesLoaded signal is called after all resources are loaded. GetAnimation(UInt32) and GetAnimation(String) methods can be used after the model loading is finished.
By default, the loaded mesh has its own size and PivotPoint inferred from position of vertices. The PivotPoint can be modified after model loading is finished. If user set size property, the mesh will be scaled to the input size. Default value of ParentOrigin of the Model is Center.
Examples
CopyModel model = new Model(modelUrl) { Size = new Size(width, height), }; model.ResourcesLoaded += (s, e) => { model.PivotPoint = new Vector3(0.5f, 0.5f, 0.5f); // Use center as a Pivot. int animationCount = model.GetAnimationCount(); if(animationCount > 0) { // Play an Animation of index 0. model.GetAnimation(0).Play(); } }; model.SetImageBasedLightSource(diffuseUrl, specularUrl, scaleFactor); window.Add(model);
Constructors
Declaration
C#Copypublic Model()
Declaration
C#Copypublic Model(string modelUrl, string resourceDirectoryUrl = "")
Parameters
Type | Name | Description |
---|---|---|
String | modelUrl | model file url.(e.g. glTF, and DLI). |
String | resourceDirectoryUrl | The url to derectory containing resources: binary, image etc. |
Remarks
If resourceDirectoryUrl is empty, the parent directory url of modelUrl is used for resource url.
http://tizen.org/privilege/mediastorage for local files in media storage. http://tizen.org/privilege/externalstorage for local files in external storage.
API Level: 10
Declaration
C#Copypublic Model(Model model)
Parameters
Type | Name | Description |
---|---|---|
Model | model | Source object to copy. |
API Level: 10
Properties
ImageBasedLightScaleFactor
Set/Get the ImageBasedLight ScaleFactor. Scale factor controls light source intensity in [0.0f, 1.0f]
Declaration
C#Copypublic float ImageBasedLightScaleFactor { get; set; }
Property Value
Type | Description |
---|---|
Single |
Declaration
C#Copypublic Position ModelPivotPoint { get; }
Property Value
Type | Description |
---|---|
Position |
Remarks
This returns (0, 0, 0) before resources are loaded.
Declaration
C#Copypublic ModelNode ModelRoot { get; }
Property Value
Type | Description |
---|---|
ModelNode |
Methods
Declaration
C#Copypublic void AddModelNode(ModelNode modelNode)
Parameters
Type | Name | Description |
---|---|---|
ModelNode | modelNode | Root of a ModelNode tree |
ApplyCamera(UInt32, Camera)
Apply camera parameters at the index to inputed Camera. If camera parameter is valid and camera is not empty, apply parameters. It will change camera's transform and near / far / fov or orthographic size / aspect ratio (if defined)
Declaration
C#Copypublic bool ApplyCamera(uint index, Camera camera)
Parameters
Type | Name | Description |
---|---|---|
UInt32 | index | Index of camera to be retrieved. |
Camera | camera | Camera to be applied parameter. |
Returns
Type | Description |
---|---|
Boolean | True if Apply successed. False otherwise. |
Remarks
This method should be called after Model load has been finished.
Declaration
C#Copyprotected override void Dispose(DisposeTypes type)
Parameters
Type | Name | Description |
---|---|---|
DisposeTypes | type |
Overrides
FindChildModelNodeByName(String)
Removes Returns a child ModelNode object with a name that matches nodeName.
Declaration
C#Copypublic ModelNode FindChildModelNodeByName(string nodeName)
Parameters
Type | Name | Description |
---|---|---|
String | nodeName | The name of the child ModelNode object you want to find. |
Returns
Type | Description |
---|---|
ModelNode | Child ModelNode that has nodeName as name. |
GenerateCamera(UInt32)
Generate Camera using camera parameters at the index. If camera parameter is valid, create new Camera. Else, return empty Handle.
Declaration
C#Copypublic Camera GenerateCamera(uint index)
Parameters
Type | Name | Description |
---|---|---|
UInt32 | index | Index of camera to be generated. |
Returns
Type | Description |
---|---|
Camera | Generated Camera by the index, or empty Handle if generation failed. |
Remarks
This method should be called after Model load has been finished.
GenerateMotionDataAnimation(MotionData)
Generate animation by MotionData. If there is no animatable item for MotionData, return null.
Declaration
C#Copypublic Animation GenerateMotionDataAnimation(MotionData motionData)
Parameters
Type | Name | Description |
---|---|---|
MotionData | motionData | Source motion data. |
Returns
Type | Description |
---|---|
Animation | Generated animation from then given motion data, or null if there is no animatable item in |
API Level: 11
GetAnimation(String)
Retrieves animation with the given name. Note: This method should be called after Model load finished.
Declaration
C#Copypublic Animation GetAnimation(string name)
Parameters
Type | Name | Description |
---|---|---|
String | name | String name of animation to be retrieved. |
Returns
Type | Description |
---|---|
Animation | Animation that has the given name. |
API Level: 10
Declaration
C#Copypublic Animation GetAnimation(uint index)
Parameters
Type | Name | Description |
---|---|---|
UInt32 | index | Index of animation to be retrieved. |
Returns
Type | Description |
---|---|
Animation | Animation at the index. |
Remarks
This method should be called after Model load has been finished.
API Level: 10
Declaration
C#Copypublic uint GetAnimationCount()
Returns
Type | Description |
---|---|
UInt32 | The number of loaded animations. |
Remarks
This method should be called after Model load has been finished.
API Level: 10
Declaration
C#Copypublic uint GetCameraCount()
Returns
Type | Description |
---|---|
UInt32 | The number of loaded camera parameters. |
Remarks
This method should be called after Model load has been finished.
LoadBlendShapeAnimation(String)
Load blendshape animation and assign to model from json file.
Declaration
C#Copypublic Animation LoadBlendShapeAnimation(string jsonFilename)
Parameters
Type | Name | Description |
---|---|---|
String | jsonFilename | Name of json format file what we predefined. |
Returns
Type | Description |
---|---|
Animation | Animaion of facial |
LoadBlendShapeAnimationFromBuffer(String)
Load morphing animation and assign to model from json string.
Declaration
C#Copypublic Animation LoadBlendShapeAnimationFromBuffer(string jsonBuffer)
Parameters
Type | Name | Description |
---|---|---|
String | jsonBuffer | Contents of json format file what we predefined. |
Returns
Type | Description |
---|---|
Animation | Animaion of facial |
LoadBvhAnimation(String, Vector3, Boolean)
Load bvh animation and assign to model. Scale is additional scale factor of bvh animation. It is possible that Model's scale may not matched with bvh animation scale. If scale is null, default use as Vector3.ONE
Declaration
C#Copypublic Animation LoadBvhAnimation(string bvhFilename, Vector3 scale = null, bool translateRootFromModelNode = true)
Parameters
Type | Name | Description |
---|---|---|
String | bvhFilename | Name of bvh format file. |
Vector3 | scale | Scale value of bvh animation match with model. |
Boolean | translateRootFromModelNode | Whether we should translate the bvh root from it's ModelNode position or not. |
Returns
Type | Description |
---|---|
Animation | Animaion of bvh |
LoadBvhAnimationFromBuffer(String, Vector3, Boolean)
Load bvh animation and assign to model. Scale is additional scale factor of bvh animation. It is possible that Model's scale may not matched with bvh animation scale. If scale is null, default use as Vector3.ONE
Declaration
C#Copypublic Animation LoadBvhAnimationFromBuffer(string bvhBuffer, Vector3 scale = null, bool translateRootFromModelNode = true)
Parameters
Type | Name | Description |
---|---|---|
String | bvhBuffer | Contents of bvh format file. |
Vector3 | scale | Scale value of bvh animation match with model. |
Boolean | translateRootFromModelNode | Whether we should translate the bvh root from it's ModelNode position or not. |
Returns
Type | Description |
---|---|
Animation | Animaion of bvh |
Declaration
C#Copypublic Animation LoadFacialAnimation(string facialFilename)
Parameters
Type | Name | Description |
---|---|---|
String | facialFilename | Name of json format file what we predefined. |
Returns
Type | Description |
---|---|
Animation | Animaion of facial |
Declaration
C#Copypublic Animation LoadFacialAnimationFromBuffer(string facialBuffer)
Parameters
Type | Name | Description |
---|---|---|
String | facialBuffer | Contents of json format file what we predefined. |
Returns
Type | Description |
---|---|
Animation | Animaion of facial |
Declaration
C#Copyprotected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
Parameters
Type | Name | Description |
---|---|---|
System.Runtime.InteropServices.HandleRef | swigCPtr |
Declaration
C#Copypublic void RemoveModelNode(ModelNode modelNode)
Parameters
Type | Name | Description |
---|---|---|
ModelNode | modelNode | Root of a ModelNode tree to be removed |
SetImageBasedLightSource(String, String, Single)
Changes Image Based Light according to the given input textures.
Declaration
C#Copypublic void SetImageBasedLightSource(string diffuseUrl, string specularUrl, float scaleFactor = 1F)
Parameters
Type | Name | Description |
---|---|---|
String | diffuseUrl | The path of Cube map image that will be used as a diffuse IBL source. |
String | specularUrl | The path of Cube map image that will be used as a specular IBL source. |
Single | scaleFactor | Scale factor that controls light source intensity in [0.0f, 1.0f]. Default value is 1.0f. |
Remarks
http://tizen.org/privilege/mediastorage for local files in media storage. http://tizen.org/privilege/externalstorage for local files in external storage.
API Level: 10
SetMotionData(MotionData)
Set values from MotionData. Note that this method doesn not apply KeyFrames animation. If you want to apply the animation, please use GenerateMotionDataAnimation(MotionData) and play the result.
Declaration
C#Copypublic void SetMotionData(MotionData motionData)
Parameters
Type | Name | Description |
---|---|---|
MotionData | motionData | Source motion data. |