Namespace Tizen.NUI.Scene3D
Classes
BlendShapeIndex
Specialized MotionIndex to control blend shape. We can control the blend shape by index (when we set BlendShapeId as IndexKey), or by name (when we set BlendShapeId as StringKey).
Camera
Camera class controls a camera in 3D space.
Camera can be added on the SceneView and displays SceneView's virtual 3D world to the screen. Camera can be translated and rotated in the space.
Model
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.
MotionData
List of model motion definitions. Each motion has pair of MotionIndex and MotionValue. MotionIndex is abstract class that specify the target of motion. MotionValue is destination value of target for the motion. It can be expressed with PropertyValue or KeyFrames.
MotionIndex
Index of motion value. It will be used to specify the target of motion applied. There are three kinds of MotionIndex : MotionPropertyIndex, MotionTransformIndex and BlendShapeIndex. MotionPropertyIndex will be used for control all kind of properties. The MotionData loaded from files / buffer will have this kind of MotionIndex. MotionTransformIndex will be used for control the Tizen.NUI.Scene3D.ModelNode's Position / Orientation / Scale, or each components. BlendShapeIndex will be used for control some blend shape animation.
MotionPropertyIndex
Basic MotionIndex to control Property. It can control more general case.
MotionTransformIndex
Specialized MotionIndex to control transform. It will be used when app developer doesn't care about Property index list, but want to change the transform properties anyway fast enough.
MotionValue
This MotionValue will be used for target value of each MotionIndex. We can get and set MotionValue as 2 types : PropertyValue and KeyFrames.
SceneView
SceneView is a Class to show multiple 3D objects in a single 2D screen. Each SceneView has its own 3D space, and 3D objects added to SceneView are positioned in the space. SceneView uses left-handed coordinate system same as NUI. X as right, Y as down, and Z as forward.
SceneView has internal root container to control inner rendering process like depth test. When a View is added to the SceneView with Add(View) method, it is actually added on the root container. Therefore, the added Views exist in the sub tree of SceneView, but are not direct children. The sub tree of Views will be rendered with the SceneView's own Camera.
SceneView has one built-in camera by default. The default Camera is not removed by using RemoveCamera(Camera) method. GetCamera(uint) method with index "0" returns the default camera, and the minimum value returned by GetCameraCount() method is 1.
SceneView also provides multiple Camera and one of them can be used to render multiple objects. AddCamera(Camera), RemoveCamera(Camera), GetCamera(uint), and SelectCamera(uint) are methods to manage Cameras of the SceneView. User can place multiple cameras in a scene to display the entire scene or to display individual objects. User can use the SelectCamera(uint) method to select the currently required camera.
When the SceneView's size changes, some camera properties that depend on its size may also change. The changing properties are as follows: AspectRatio, LeftPlaneDistance, RightPlaneDistance, TopPlaneDistance, and BottomPlaneDistance. The Camera's FieldOfView is vertical fov. The horizontal fov is updated internally according to the SceneView size.
The SetImageBasedLightSource(string, string, float) method sets the same IBL to all Model objects added to the SceneView. For the IBL, two cube map textures(diffuse and specular) are required. SceneView 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. If a model already has an IBL, it is batch overridden with the IBL of the SceneView. If the SceneView has IBL, the IBL of newly added models is also overridden.
The IBL textures start to be loaded asynchronously when SetImageBasedLightSource(string, string, float) method is called. ResourcesLoaded signal notifies that the loading of the IBL resources have been completed.
If FBO is used, the rendering result of SceneView is drawn on the FBO and it is mapped on the plane of the SceneView. It could decreases performance slightly, but it is useful to show SceneView according to the rendering order with other Views.
And since SceneView is a View, it can be placed together with other 2D UI components in the NUI window.
Enums
Camera.ProjectionModeType
Enumeration for the projectionMode. ProjectionMode defines how the camera shows 3D objects or scene on a 2D plane with projection.
MotionTransformIndex.TransformTypes
The list of transform property types what this MotionTransformIndex can control.
MotionValue.ValueType
Determine whether current stored value is PropertyValue, or KeyFrames.