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#
Copy
public 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
Copy
Model 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

View Source

Model()

Create an initialized Model.

Declaration
C#
Copy
public Model()
View Source

Model(String, String)

Create an initialized Model.

Declaration
C#
Copy
public 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
View Source

Model(Model)

Copy constructor.

Declaration
C#
Copy
public Model(Model model)
Parameters
Type Name Description
Model model

Source object to copy.

API Level: 10

Properties

View Source

ImageBasedLightScaleFactor

Set/Get the ImageBasedLight ScaleFactor. Scale factor controls light source intensity in [0.0f, 1.0f]

Declaration
C#
Copy
public float ImageBasedLightScaleFactor { get; set; }
Property Value
Type Description
Single
View Source

ModelPivotPoint

Get The original pivot point of the model

Declaration
C#
Copy
public Position ModelPivotPoint { get; }
Property Value
Type Description
Position
Remarks

This returns (0, 0, 0) before resources are loaded.

View Source

ModelRoot

Retrieves root ModelNode of this Model.

Declaration
C#
Copy
public ModelNode ModelRoot { get; }
Property Value
Type Description
ModelNode

Methods

View Source

AddModelNode(ModelNode)

Adds modelNode to this Model.

Declaration
C#
Copy
public void AddModelNode(ModelNode modelNode)
Parameters
Type Name Description
ModelNode modelNode

Root of a ModelNode tree

View Source

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#
Copy
public 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.

View Source

Dispose(DisposeTypes)

To make transitionSet instance be disposed.

Declaration
C#
Copy
protected override void Dispose(DisposeTypes type)
Parameters
Type Name Description
DisposeTypes type
Overrides
View Source

FindChildModelNodeByName(String)

Removes Returns a child ModelNode object with a name that matches nodeName.

Declaration
C#
Copy
public 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.

View Source

GenerateCamera(UInt32)

Generate Camera using camera parameters at the index. If camera parameter is valid, create new Camera. Else, return empty Handle.

Declaration
C#
Copy
public 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.

View Source

GenerateMotionDataAnimation(MotionData)

Generate animation by MotionData. If there is no animatable item for MotionData, return null.

Declaration
C#
Copy
public 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 motionData

API Level: 11
View Source

GetAnimation(String)

Retrieves animation with the given name. Note: This method should be called after Model load finished.

Declaration
C#
Copy
public 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
View Source

GetAnimation(UInt32)

Gets animation at the index.

Declaration
C#
Copy
public 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
View Source

GetAnimationCount()

Gets number of animations that has been loaded from model file.

Declaration
C#
Copy
public 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
View Source

GetCameraCount()

Gets number of camera parameters that has been loaded from model file.

Declaration
C#
Copy
public uint GetCameraCount()
Returns
Type Description
UInt32

The number of loaded camera parameters.

Remarks

This method should be called after Model load has been finished.

View Source

LoadBlendShapeAnimation(String)

Load blendshape animation and assign to model from json file.

Declaration
C#
Copy
public 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

View Source

LoadBlendShapeAnimationFromBuffer(String)

Load morphing animation and assign to model from json string.

Declaration
C#
Copy
public 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

View Source

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#
Copy
public 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

View Source

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#
Copy
public 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

View Source

LoadFacialAnimation(String)

Load facial animation and assign to model.

Declaration
C#
Copy
public 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

View Source

LoadFacialAnimationFromBuffer(String)

Load facial animation and assign to model.

Declaration
C#
Copy
public 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

View Source

ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)

Release swigCPtr.

Declaration
C#
Copy
protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
Parameters
Type Name Description
System.Runtime.InteropServices.HandleRef swigCPtr
View Source

RemoveModelNode(ModelNode)

Removes modelNode from this Model.

Declaration
C#
Copy
public void RemoveModelNode(ModelNode modelNode)
Parameters
Type Name Description
ModelNode modelNode

Root of a ModelNode tree to be removed

View Source

SetImageBasedLightSource(String, String, Single)

Changes Image Based Light according to the given input textures.

Declaration
C#
Copy
public 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
View Source

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#
Copy
public void SetMotionData(MotionData motionData)
Parameters
Type Name Description
MotionData motionData

Source motion data.

API Level: 11

Implements

Extension Methods