Namespace ufbxWrapper
Classes
ufbx
Structs
ufbx.ufbx_allocator
Allocator callbacks and user context
NOTE: The allocator will be stored to the loaded scene and will be called
again from ufbx_free_scene()
so make sure user
outlives that!
You can use free_allocator_fn()
to free the allocator yourself.
ufbx.ufbx_allocator_opts
ufbx.ufbx_anim
Animation descriptor used for evaluating animation.
Usually obtained from ufbx_scene
via either global animation ufbx_scene.anim
,
per-stack animation ufbx_anim_stack.anim
or per-layer animation ufbx_anim_layer.anim
.
For advanced usage you can use ufbx_create_anim()
to create animation descriptors
with custom layers, property overrides, special flags, etc.
ufbx.ufbx_anim_curve
ufbx.ufbx_anim_curve._anonymous_1_struct
ufbx.ufbx_anim_curve._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_anim_curve_list
ufbx.ufbx_anim_layer
ufbx.ufbx_anim_layer._anonymous_1_struct
ufbx.ufbx_anim_layer._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_anim_layer._element_id_bitmask_struct
ufbx.ufbx_anim_layer_list
ufbx.ufbx_anim_opts
ufbx.ufbx_anim_prop
ufbx.ufbx_anim_prop_list
ufbx.ufbx_anim_stack
ufbx.ufbx_anim_stack._anonymous_1_struct
ufbx.ufbx_anim_stack._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_anim_stack_list
ufbx.ufbx_anim_value
ufbx.ufbx_anim_value._anonymous_1_struct
ufbx.ufbx_anim_value._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_anim_value.curves_struct
ufbx.ufbx_anim_value_list
ufbx.ufbx_application
ufbx.ufbx_audio_clip
ufbx.ufbx_audio_clip._anonymous_1_struct
ufbx.ufbx_audio_clip._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_audio_clip_list
ufbx.ufbx_audio_layer
-- Audio
ufbx.ufbx_audio_layer._anonymous_1_struct
ufbx.ufbx_audio_layer._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_audio_layer_list
ufbx.ufbx_bake_opts
ufbx.ufbx_baked_anim
Animation baked into linearly interpolated keyframes.
See ufbx_bake_anim()
.
ufbx.ufbx_baked_anim_metadata
ufbx.ufbx_baked_element
Baked property animation for a single element.
ufbx.ufbx_baked_element_list
ufbx.ufbx_baked_node
Baked transform animation for a single node.
ufbx.ufbx_baked_node_list
ufbx.ufbx_baked_prop
Baked property animation.
ufbx.ufbx_baked_prop_list
ufbx.ufbx_baked_quat
ufbx.ufbx_baked_quat_list
ufbx.ufbx_baked_vec3
ufbx.ufbx_baked_vec3_list
ufbx.ufbx_blend_channel
Blend channel consists of multiple morph-key targets that are interpolated. In simple cases there will be only one keyframe that is the target shape.
ufbx.ufbx_blend_channel._anonymous_1_struct
ufbx.ufbx_blend_channel._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_blend_channel_list
ufbx.ufbx_blend_deformer
Blend shape deformer can contain multiple channels (think of sliders between morphs) that may optionally have in-between keyframes.
ufbx.ufbx_blend_deformer._anonymous_1_struct
ufbx.ufbx_blend_deformer._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_blend_deformer_list
ufbx.ufbx_blend_keyframe
Blend shape associated with a target weight in a series of morphs
ufbx.ufbx_blend_keyframe_list
ufbx.ufbx_blend_shape
Blend shape target containing the actual vertex offsets
ufbx.ufbx_blend_shape._anonymous_1_struct
ufbx.ufbx_blend_shape._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_blend_shape_list
ufbx.ufbx_blob
Opaque byte buffer blob
ufbx.ufbx_bone
Bone attached to a ufbx_node
, provides the logical length of the bone
but most interesting information is directly in ufbx_node
.
ufbx.ufbx_bone._anonymous_1_struct
ufbx.ufbx_bone._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_bone_list
ufbx.ufbx_bone_pose
-- Miscellaneous
ufbx.ufbx_bone_pose_list
ufbx.ufbx_bool_list
ufbx.ufbx_cache_channel
ufbx.ufbx_cache_channel_list
ufbx.ufbx_cache_deformer
ufbx.ufbx_cache_deformer._anonymous_1_struct
ufbx.ufbx_cache_deformer._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_cache_deformer_list
ufbx.ufbx_cache_file
ufbx.ufbx_cache_file._anonymous_1_struct
ufbx.ufbx_cache_file._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_cache_file_list
ufbx.ufbx_cache_frame
ufbx.ufbx_cache_frame_list
ufbx.ufbx_camera
Camera attached to a ufbx_node
ufbx.ufbx_camera._anonymous_1_struct
ufbx.ufbx_camera._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_camera_list
ufbx.ufbx_camera_switcher
ufbx.ufbx_camera_switcher._anonymous_1_struct
ufbx.ufbx_camera_switcher._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_camera_switcher_list
ufbx.ufbx_character
-- Constraints
ufbx.ufbx_character._anonymous_1_struct
ufbx.ufbx_character._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_character_list
ufbx.ufbx_close_memory_cb
ufbx.ufbx_color_set
Vertex color set/layer
ufbx.ufbx_color_set_list
ufbx.ufbx_connection
Connection between two elements. Source and destination are somewhat arbitrary but the destination is often the "container" like a parent node or mesh containing a deformer.
ufbx.ufbx_connection_list
ufbx.ufbx_const_prop_override_desc_list
ufbx.ufbx_const_real_list
ufbx.ufbx_const_transform_override_list
ufbx.ufbx_const_uint32_list
ufbx.ufbx_constraint
ufbx.ufbx_constraint._anonymous_1_struct
ufbx.ufbx_constraint._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_constraint.constrain_rotation_struct
ufbx.ufbx_constraint.constrain_scale_struct
ufbx.ufbx_constraint.constrain_translation_struct
ufbx.ufbx_constraint_list
ufbx.ufbx_constraint_target
Target to follow with a constraint
ufbx.ufbx_constraint_target_list
ufbx.ufbx_coordinate_axes
Coordinate axes the scene is represented in.
NOTE: front
is the opposite from forward!
ufbx.ufbx_curve_point
-- Curves
ufbx.ufbx_deleter
ufbx.ufbx_display_layer
Collection of nodes to hide/freeze
ufbx.ufbx_display_layer._anonymous_1_struct
ufbx.ufbx_display_layer._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_display_layer_list
ufbx.ufbx_dom_node
ufbx.ufbx_dom_node_list
ufbx.ufbx_dom_value
ufbx.ufbx_dom_value_list
ufbx.ufbx_edge
Edge between two indices in a mesh
ufbx.ufbx_edge._anonymous_1_struct
ufbx.ufbx_edge._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_edge._anonymous_1_struct.indices_struct
ufbx.ufbx_edge_list
ufbx.ufbx_element
Element "base-class" common to each element.
Some fields (like connections_src
) are advanced and not visible
in the specialized element structs.
NOTE: The element_id
value is consistent when loading the
same file, but re-exporting the file will invalidate them.
ufbx.ufbx_element_list
ufbx.ufbx_empty
Empty/NULL/locator connected to a node, actual details in ufbx_node
ufbx.ufbx_empty._anonymous_1_struct
ufbx.ufbx_empty._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_empty_list
ufbx.ufbx_error
Error description with detailed stack trace
HINT: You can use ufbx_format_error()
for formatting the error
ufbx.ufbx_error.info_struct
ufbx.ufbx_error.stack_struct
ufbx.ufbx_error_frame
Detailed error stack frame.
NOTE: You must compile ufbx.c
with UFBX_ENABLE_ERROR_STACK
to enable the error stack.
ufbx.ufbx_evaluate_opts
Options for ufbx_evaluate_scene()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_extrapolation
ufbx.ufbx_face
Polygonal face with arbitrary number vertices, a single face contains a
contiguous range of mesh indices, eg. {5,3}
would have indices 5, 6, 7
NOTE: num_indices
maybe less than 3 in which case the face is invalid!
[TODO #23: should probably remove the bad faces at load time]
ufbx.ufbx_face_group
ufbx.ufbx_face_group_list
ufbx.ufbx_face_list
ufbx.ufbx_geometry_cache
ufbx.ufbx_geometry_cache_data_opts
Options for ufbx_read_geometry_cache_TYPE()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_geometry_cache_opts
Options for ufbx_load_geometry_cache()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_inflate_input
Source data/stream to decompress with ufbx_inflate()
ufbx.ufbx_inflate_retain
Persistent data between ufbx_inflate()
calls
NOTE: You must set initialized
to false
, but data
may be uninitialized
ufbx.ufbx_inflate_retain.data_struct
ufbx.ufbx_keyframe
Single real value
at a specified time
, interpolation between two keyframes
is determined by the interpolation
field of the previous key.
If interpolation == UFBX_INTERPOLATION_CUBIC
the span is evaluated as a
cubic bezier curve through the following points:
(prev-time, prev-value)
(prev-time + prev-right.dx, prev-value + prev-right.dy)
(next-time - next-left.dx, next-value - next-left.dy)
(next-time, next-value)
HINT: You can use ufbx_evaluate_curve(ufbx_anim_curve *curve, double time)
rather than trying to manually handle all the interpolation modes.
ufbx.ufbx_keyframe_list
ufbx.ufbx_light
Light source attached to a ufbx_node
ufbx.ufbx_light._anonymous_1_struct
ufbx.ufbx_light._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_light_list
ufbx.ufbx_line_curve
ufbx.ufbx_line_curve._anonymous_1_struct
ufbx.ufbx_line_curve._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_line_curve_list
ufbx.ufbx_line_segment
Segment of a ufbx_line_curve
, indices refer to ufbx_line_curve.point_indices[]
ufbx.ufbx_line_segment_list
ufbx.ufbx_load_opts
Options for ufbx_load_file/memory/stream/stdio()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_lod_group
Group of LOD (Level of Detail) levels for an object.
The actual LOD models are defined in the parent ufbx_node.children
.
ufbx.ufbx_lod_group._anonymous_1_struct
ufbx.ufbx_lod_group._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_lod_group_list
ufbx.ufbx_lod_level
Single LOD level within an LOD group. Specifies properties of the Nth child of the node containing the LOD group.
ufbx.ufbx_lod_level_list
ufbx.ufbx_marker
Tracking marker for effectors
ufbx.ufbx_marker._anonymous_1_struct
ufbx.ufbx_marker._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_marker_list
ufbx.ufbx_material
Surface material properties such as color, roughness, etc. Each property may
be optionally bound to an ufbx_texture
.
ufbx.ufbx_material._anonymous_1_struct
ufbx.ufbx_material._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_material_fbx_maps
ufbx.ufbx_material_fbx_maps._anonymous_1_struct
ufbx.ufbx_material_fbx_maps._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_material_fbx_maps._anonymous_1_struct.maps_struct
ufbx.ufbx_material_feature_info
Material feature
ufbx.ufbx_material_features
ufbx.ufbx_material_features._anonymous_1_struct
ufbx.ufbx_material_features._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_material_features._anonymous_1_struct.features_struct
ufbx.ufbx_material_list
ufbx.ufbx_material_map
Material property, either specified with a constant value or a mapped texture
ufbx.ufbx_material_map._anonymous_1_struct
ufbx.ufbx_material_pbr_maps
ufbx.ufbx_material_pbr_maps._anonymous_1_struct
ufbx.ufbx_material_pbr_maps._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_material_pbr_maps._anonymous_1_struct.maps_struct
ufbx.ufbx_material_texture
Texture attached to an FBX property
ufbx.ufbx_material_texture_list
ufbx.ufbx_matrix
4x3 matrix encoding an affine transformation.
cols[0..2]
are the X/Y/Z basis vectors, cols[3]
is the translation
ufbx.ufbx_matrix._anonymous_1_struct
ufbx.ufbx_matrix._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_matrix._anonymous_1_struct.cols_struct
ufbx.ufbx_matrix._anonymous_1_struct.v_struct
ufbx.ufbx_mesh
Polygonal mesh geometry.
Example mesh with two triangles (x, z) and a quad (y).
The faces have a constant UV coordinate x/y/z.
The vertices have per vertex normals that point up/down.
^ ^ ^
A---B-----C
|x / /|
| / y / |
|/ / z|
D-----E---F
v v v
Attributes may have multiple values within a single vertex, for example a
UV seam vertex has two UV coordinates. Thus polygons are defined using
an index that counts each corner of each face polygon. If an attribute is
defined (even per-vertex) it will always have a valid indices
array.
{0,3} {3,4} {7,3} faces ({ index_begin, num_indices })
0 1 2 3 4 5 6 7 8 9 index
0 1 3 1 2 4 3 2 4 5 vertex_indices[index]
A B D B C E D C E F vertices[vertex_indices[index]]
0 0 1 0 0 1 1 0 1 1 vertex_normal.indices[index]
^ ^ v ^ ^ v v ^ v v vertex_normal.data[vertex_normal.indices[index]]
0 0 0 1 1 1 1 2 2 2 vertex_uv.indices[index]
x x x y y y y z z z vertex_uv.data[vertex_uv.indices[index]]
Vertex position can also be accessed uniformly through an accessor:
0 1 3 1 2 4 3 2 4 5 vertex_position.indices[index]
A B D B C E D C E F vertex_position.data[vertex_position.indices[index]]
Some geometry data is specified per logical vertex. Vertex positions are
the only attribute that is guaranteed to be defined uniquely per vertex.
Vertex attributes may be defined per vertex if unique_per_vertex == true
.
You can access the per-vertex values by first finding the first index that
refers to the given vertex.
0 1 2 3 4 5 vertex
A B C D E F vertices[vertex]
0 1 4 2 5 9 vertex_first_index[vertex]
0 0 0 1 1 1 vertex_normal.indices[vertex_first_index[vertex]]
^ ^ ^ v v v vertex_normal.data[vertex_normal.indices[vertex_first_index[vertex]]]
ufbx.ufbx_mesh._anonymous_1_struct
ufbx.ufbx_mesh._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_mesh_list
ufbx.ufbx_mesh_part
Subset of mesh faces used by a single material or group.
ufbx.ufbx_mesh_part_list
ufbx.ufbx_metadata
Miscellaneous data related to the loaded file
ufbx.ufbx_metadata.has_warning_struct
ufbx.ufbx_metadata_object
ufbx.ufbx_metadata_object._anonymous_1_struct
ufbx.ufbx_metadata_object._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_metadata_object_list
ufbx.ufbx_name_element
-- Named elements
ufbx.ufbx_name_element_list
ufbx.ufbx_node
Nodes form the scene transformation hierarchy and can contain attached
elements such as meshes or lights. In normal cases a single ufbx_node
contains only a single attached element, so using type/mesh/...
is safe.
ufbx.ufbx_node._anonymous_1_struct
ufbx.ufbx_node._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_node_list
ufbx.ufbx_nurbs_basis
NURBS basis functions for an axis
ufbx.ufbx_nurbs_curve
ufbx.ufbx_nurbs_curve._anonymous_1_struct
ufbx.ufbx_nurbs_curve._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_nurbs_curve_list
ufbx.ufbx_nurbs_surface
ufbx.ufbx_nurbs_surface._anonymous_1_struct
ufbx.ufbx_nurbs_surface._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_nurbs_surface_list
ufbx.ufbx_nurbs_trim_boundary
ufbx.ufbx_nurbs_trim_boundary._anonymous_1_struct
ufbx.ufbx_nurbs_trim_boundary._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_nurbs_trim_boundary_list
ufbx.ufbx_nurbs_trim_surface
ufbx.ufbx_nurbs_trim_surface._anonymous_1_struct
ufbx.ufbx_nurbs_trim_surface._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_nurbs_trim_surface_list
ufbx.ufbx_open_file_cb
ufbx.ufbx_open_file_info
ufbx.ufbx_open_file_opts
Options for ufbx_open_file()
.
ufbx.ufbx_open_memory_opts
Options for ufbx_open_memory()
.
ufbx.ufbx_panic
ufbx.ufbx_panic.message_struct
ufbx.ufbx_pose
ufbx.ufbx_pose._anonymous_1_struct
ufbx.ufbx_pose._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_pose_list
ufbx.ufbx_procedural_geometry
-- Node attributes (advanced)
ufbx.ufbx_procedural_geometry._anonymous_1_struct
ufbx.ufbx_procedural_geometry._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_procedural_geometry_list
ufbx.ufbx_progress
Loading progress information.
ufbx.ufbx_progress_cb
ufbx.ufbx_prop
Single property with name/type/value.
ufbx.ufbx_prop._anonymous_1_struct
ufbx.ufbx_prop._anonymous_1_struct.value_real_arr_struct
ufbx.ufbx_prop_list
ufbx.ufbx_prop_override
-- Animation
ufbx.ufbx_prop_override_desc
ufbx.ufbx_prop_override_list
ufbx.ufbx_props
List of alphabetically sorted properties with potential defaults.
For animated objects in as scene from ufbx_evaluate_scene()
this list
only has the animated properties, the originals are stored under defaults
.
ufbx.ufbx_quat
Quaternion
ufbx.ufbx_quat._anonymous_1_struct
ufbx.ufbx_quat._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_quat._anonymous_1_struct.v_struct
ufbx.ufbx_real_list
ufbx.ufbx_scene
ufbx.ufbx_scene._anonymous_1_struct
ufbx.ufbx_scene._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_scene._anonymous_1_struct.elements_by_type_struct
ufbx.ufbx_scene_settings
Global settings: Axes and time/unit scales
ufbx.ufbx_selection_node
Selection state of a node, potentially contains vertex/edge/face selection as well.
ufbx.ufbx_selection_node._anonymous_1_struct
ufbx.ufbx_selection_node._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_selection_node_list
ufbx.ufbx_selection_set
Named set of nodes/geometry features to select.
ufbx.ufbx_selection_set._anonymous_1_struct
ufbx.ufbx_selection_set._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_selection_set_list
ufbx.ufbx_shader
Shader specifies a shading model and contains ufbx_shader_binding
elements
that define how to interpret FBX properties in the shader.
ufbx.ufbx_shader._anonymous_1_struct
ufbx.ufbx_shader._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_shader_binding
Shader binding table
ufbx.ufbx_shader_binding._anonymous_1_struct
ufbx.ufbx_shader_binding._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_shader_binding_list
ufbx.ufbx_shader_list
ufbx.ufbx_shader_prop_binding
Binding from a material property to shader implementation
ufbx.ufbx_shader_prop_binding_list
ufbx.ufbx_shader_texture
Texture that emulates a shader graph node.
3ds Max exports some materials as node graphs serialized to textures.
ufbx can parse a small subset of these, as normal maps are often hidden behind
some kind of bump node.
NOTE: These encode a lot of details of 3ds Max internals, not recommended for direct use.
HINT: ufbx_texture.file_textures[]
contains a list of "real" textures that are connected
to the ufbx_texture
that is pretending to be a shader node.
ufbx.ufbx_shader_texture_input
Input to a shader texture, see ufbx_shader_texture
.
ufbx.ufbx_shader_texture_input._anonymous_1_struct
ufbx.ufbx_shader_texture_input_list
ufbx.ufbx_skin_cluster
Cluster of vertices bound to a single bone.
ufbx.ufbx_skin_cluster._anonymous_1_struct
ufbx.ufbx_skin_cluster._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_skin_cluster_list
ufbx.ufbx_skin_deformer
Skin deformer specifies a binding between a logical set of bones (a skeleton)
and a mesh. Each bone is represented by a ufbx_skin_cluster
that contains
the binding matrix and a ufbx_node *bone
that has the current transformation.
ufbx.ufbx_skin_deformer._anonymous_1_struct
ufbx.ufbx_skin_deformer._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_skin_deformer_list
ufbx.ufbx_skin_vertex
Skin weight information for a single mesh vertex
ufbx.ufbx_skin_vertex_list
ufbx.ufbx_skin_weight
Single per-vertex per-cluster weight, see ufbx_skin_vertex
ufbx.ufbx_skin_weight_list
ufbx.ufbx_stereo_camera
ufbx.ufbx_stereo_camera._anonymous_1_struct
ufbx.ufbx_stereo_camera._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_stereo_camera_list
ufbx.ufbx_stream
ufbx.ufbx_string
Null-terminated UTF-8 encoded string within an FBX file
ufbx.ufbx_string_list
ufbx.ufbx_string_view
ufbx.ufbx_subdivide_opts
Options for ufbx_subdivide_mesh()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_subdivision_result
ufbx.ufbx_subdivision_weight
ufbx.ufbx_subdivision_weight_list
ufbx.ufbx_subdivision_weight_range
ufbx.ufbx_subdivision_weight_range_list
ufbx.ufbx_surface_point
ufbx.ufbx_tangent
Tangent vector at a keyframe, may be split into left/right
ufbx.ufbx_tessellate_curve_opts
Options for ufbx_tessellate_nurbs_curve()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_tessellate_surface_opts
Options for ufbx_tessellate_nurbs_surface()
NOTE: Initialize to zero with { 0 }
(C) or { }
(C++)
ufbx.ufbx_texture
Texture that controls material appearance
ufbx.ufbx_texture._anonymous_1_struct
ufbx.ufbx_texture._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_texture_file
Unique texture within the file.
ufbx.ufbx_texture_file_list
ufbx.ufbx_texture_layer
Single layer in a layered texture
ufbx.ufbx_texture_layer_list
ufbx.ufbx_texture_list
ufbx.ufbx_thread_opts
Thread pool options.
ufbx.ufbx_thread_pool
Thread pool interface.
See functions above for more information.
Hypothetical example of calls, where UFBX_THREAD_GROUP_COUNT=2
for simplicity:
run_fn(group=0, start_index=0, count=4) - t0 := threaded { ufbx_thread_pool_run_task(0..3) }
run_fn(group=1, start_index=4, count=10) - t1 := threaded { ufbx_thread_pool_run_task(4..10) }
wait_fn(group=0, max_index=4) - wait_threads(t0)
run_fn(group=0, start_index=10, count=15) - t0 := threaded { ufbx_thread_pool_run_task(10..14) }
wait_fn(group=1, max_index=10) - wait_threads(t1)
wait_fn(group=0, max_index=15) - wait_threads(t0)
ufbx.ufbx_thread_pool_info
Thread pool creation information from ufbx.
ufbx.ufbx_thumbnail
Embedded thumbnail in the file, valid if the dimensions are non-zero.
ufbx.ufbx_topo_edge
ufbx.ufbx_transform
Explicit translation+rotation+scale transformation. NOTE: Rotation is a quaternion, not Euler angles!
ufbx.ufbx_transform_override
ufbx.ufbx_transform_override_list
ufbx.ufbx_uint32_list
ufbx.ufbx_unknown
-- Unknown
ufbx.ufbx_unknown._anonymous_1_struct
ufbx.ufbx_unknown._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_unknown_list
ufbx.ufbx_uv_set
Vertex UV set/layer
ufbx.ufbx_uv_set_list
ufbx.ufbx_vec2
2D vector
ufbx.ufbx_vec2._anonymous_1_struct
ufbx.ufbx_vec2._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_vec2._anonymous_1_struct.v_struct
ufbx.ufbx_vec2_list
ufbx.ufbx_vec3
3D vector
ufbx.ufbx_vec3._anonymous_1_struct
ufbx.ufbx_vec3._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_vec3._anonymous_1_struct.v_struct
ufbx.ufbx_vec3_list
ufbx.ufbx_vec4
4D vector
ufbx.ufbx_vec4._anonymous_1_struct
ufbx.ufbx_vec4._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_vec4._anonymous_1_struct.v_struct
ufbx.ufbx_vec4_list
ufbx.ufbx_vertex_attrib
Vertex attribute: All attributes are stored in a consistent indexed format
regardless of how it's actually stored in the file.
values
is a contiguous array of attribute values.
indices
maps each mesh index into a value in the values
array.
If unique_per_vertex
is set then the attribute is guaranteed to have a
single defined value per vertex accessible via:
attrib.values.data[attrib.indices.data[mesh-vertex_first_index[vertex_ix]]
ufbx.ufbx_vertex_real
1D vertex attribute, see ufbx_vertex_attrib
for information
ufbx.ufbx_vertex_stream
Vertex data array for ufbx_generate_indices()
.
NOTE: ufbx_generate_indices()
compares the vertices using memcmp()
, so
any padding should be cleared to zero.
ufbx.ufbx_vertex_vec2
2D vertex attribute, see ufbx_vertex_attrib
for information
ufbx.ufbx_vertex_vec3
3D vertex attribute, see ufbx_vertex_attrib
for information
ufbx.ufbx_vertex_vec4
4D vertex attribute, see ufbx_vertex_attrib
for information
ufbx.ufbx_video
TODO: Video textures
ufbx.ufbx_video._anonymous_1_struct
ufbx.ufbx_video._anonymous_1_struct._anonymous_2_struct
ufbx.ufbx_video_list
ufbx.ufbx_void_list
ufbx.ufbx_warning
Warning about a non-fatal issue in the file. Often contains information about issues that ufbx has corrected about the file but it might indicate something is not working properly.
ufbx.ufbx_warning_list
Enums
ufbx.ufbx_aperture_format
Camera film/aperture size defaults
NOTE: Handled internally by ufbx, ignore unless you interpret ufbx_props
directly!
ufbx.ufbx_aperture_mode
Method of specifying the field of view from properties
NOTE: Handled internally by ufbx, ignore unless you interpret ufbx_props
directly!
ufbx.ufbx_aspect_mode
Method of specifying the rendering resolution from properties
NOTE: Handled internally by ufbx, ignore unless you interpret ufbx_props
directly!
ufbx.ufbx_bake_step_handling
Specifies how to handle stepped tangents.
ufbx.ufbx_baked_key_flags
ufbx.ufbx_blend_mode
Blend modes to combine layered textures with, compatible with common blend
mode definitions in many art programs. Simpler blend modes have equations
specified below where src
is the layer to composite over dst
.
See eg. https://www.w3.org/TR/2013/WD-compositing-1-20131010/#blendingseparable
ufbx.ufbx_cache_data_encoding
ufbx.ufbx_cache_data_format
ufbx.ufbx_cache_file_format
ufbx.ufbx_cache_interpretation
Known interpretations of geometry cache data.
ufbx.ufbx_constraint_aim_up_type
Method to determine the up vector in aim constraints
ufbx.ufbx_constraint_ik_pole_type
Method to determine the up vector in aim constraints
ufbx.ufbx_constraint_type
Type of property constrain eg. position or look-at
ufbx.ufbx_coordinate_axis
ufbx.ufbx_dom_value_type
-- Document object model
ufbx.ufbx_element_type
ufbx.ufbx_error_type
Error causes (and UFBX_ERROR_NONE
for no error).
ufbx.ufbx_evaluate_flags
Flags to control nanimation evaluation functions.
ufbx.ufbx_exporter
Scene is the root object loaded by ufbx that everything is accessed from.
ufbx.ufbx_extrapolation_mode
ufbx.ufbx_file_format
ufbx.ufbx_gate_fit
Method of specifying the render gate size from properties
NOTE: Handled internally by ufbx, ignore unless you interpret ufbx_props
directly!
ufbx.ufbx_geometry_transform_handling
How to handle FBX node geometry transforms. FBX nodes can have "geometry transforms" that affect only the attached meshes, but not the children. This is not allowed in many scene representations so ufbx provides some ways to simplify them. Geometry transforms can also be used to transform any other attributes such as lights or cameras.
ufbx.ufbx_index_error_handling
ufbx.ufbx_inherit_mode
Inherit type specifies how hierarchial node transforms are combined.
This only affects the final scaling, as rotation and translation are always
inherited correctly.
NOTE: These don't map to "InheritType"
property as there may be new ones for
compatibility with various exporters.
ufbx.ufbx_inherit_mode_handling
How to handle FBX transform inherit modes.
ufbx.ufbx_interpolation
Animation curve segment interpolation mode between two keyframes
ufbx.ufbx_light_area_shape
ufbx.ufbx_light_decay
How fast does the light intensity decay at a distance
ufbx.ufbx_light_type
The kind of light source
ufbx.ufbx_lod_display
LOD level display mode.
ufbx.ufbx_marker_type
ufbx.ufbx_material_fbx_map
FBX builtin material properties, matches maps in ufbx_material_fbx_maps
ufbx.ufbx_material_feature
Known material features
ufbx.ufbx_material_pbr_map
Known PBR material properties, matches maps in ufbx_material_pbr_maps
ufbx.ufbx_mirror_axis
Axis used to mirror transformations for handedness conversion.
ufbx.ufbx_nurbs_topology
ufbx.ufbx_open_file_type
ufbx.ufbx_pivot_handling
How to handle FBX transform pivots.
ufbx.ufbx_progress_result
Progress result returned from ufbx_progress_fn()
callback.
Determines whether ufbx should continue or abort the loading.
ufbx.ufbx_projection_mode
ufbx.ufbx_prop_flags
Property flags: Advanced information about properties, not usually needed.
ufbx.ufbx_prop_type
Data type contained within the property. All the data fields are always
populated regardless of type, so there's no need to switch by type usually
eg. prop-value_real
and prop-value_int
have the same value (well, close)
if prop-type == UFBX_PROP_INTEGER
. String values are not converted from/to.
ufbx.ufbx_rotation_order
Order in which Euler-angle rotation axes are applied for a transform
NOTE: The order in the name refers to the order of axes applied,
not the multiplication order: eg. UFBX_ROTATION_ORDER_XYZ
is Z*Y*X
[TODO: Figure out what the spheric rotation order is...]
ufbx.ufbx_shader_texture_type
ufbx.ufbx_shader_type
Shading model type
ufbx.ufbx_skinning_method
Method to evaluate the skinning on a per-vertex level
ufbx.ufbx_snap_mode
ufbx.ufbx_space_conversion
Specify how unit / coordinate system conversion should be performed.
Affects how ufbx_load_opts.target_axes
and ufbx_load_opts.target_unit_meters
work,
has no effect if neither is specified.
ufbx.ufbx_subdivision_boundary
ufbx.ufbx_subdivision_display_mode
ufbx.ufbx_texture_type
ufbx.ufbx_thumbnail_format
ufbx.ufbx_time_mode
ufbx.ufbx_time_protocol
ufbx.ufbx_topo_flags
-- Mesh topology
ufbx.ufbx_transform_flags
Flags to control ufbx_evaluate_transform_flags()
.
ufbx.ufbx_unicode_error_handling
ufbx.ufbx_warning_type
ufbx.ufbx_wrap_mode
Blend modes to combine layered textures with, compatible with common blend