fbxcel_dom/v7400.rs
1//! FBX DOM utils for FBX v7.4 or later.
2//!
3//! # Concepts
4//!
5//! ## Tree
6//!
7//! FBX data has tree structure at low level.
8//! This low-level structure is represented by `fbxcel::tree::v7400::Tree`.
9//!
10//! Some nodes in FBX (including geometries, bones, textures, etc) has directed
11//! acyclic graph structures.
12//! These are called "objects".
13//!
14//! [`Document`] type interprets low-level tree and provides access to
15//! high-level objects graph structure.
16//!
17//! ### Node ID
18//!
19//! Each node (in low-level tree structure) is assigned internal indentifier by
20//! `fbxcel` crate.
21//! This does not appear in source FBX data.
22//!
23//! The node ID for low-level nodes are represented by
24//! `fbxcel::tree::v7400::NodeId`.
25//!
26//! `fbxcel_dom` provides specialized node ID types for some types of nodes,
27//! including objects.
28//! ([`object::ObjectNodeId`] is one example of them.)
29//! They have dedicated node ID types, and they can be converted into low-level
30//! node ID.
31//!
32//! ### Node handle
33//!
34//! Node IDs cannot be used without the tree the node belongs to.
35//! Node handle is a struct which contains both a tree and a node ID.
36//!
37//! The low-level node handles are represented by
38//! `fbxcel::tree::v7400::NodeHandle`.
39//!
40//! `fbxcel_dom` provides specialized node handle types for some types of nodes,
41//! including objects.
42//! [`object::ObjectHandle`] is one example of them.
43//!
44//! ## Object
45//!
46//! Many useful data are represented as objects in FBX data.
47//!
48//! Some subsets of object types make tree structures, but the rules are not
49//! completely revealed, because FBX is proprietary format.
50//!
51//! Sometimes users should see multiple connected objects to render 3D content.
52//!
53//! For detail, see [module documentation of `object`](object/index.html).
54//!
55//! [`Document`]: struct.Document.html
56//! [`object::ObjectHandle`]: object/struct.ObjectHandle.html
57//! [`object::ObjectNodeId`]: object/struct.ObjectNodeId.html
58
59pub use self::{
60 document::{Document, Loader},
61 error::LoadError,
62 global_settings::GlobalSettings,
63};
64
65pub(crate) mod connection;
66pub mod data;
67mod definition;
68mod document;
69pub(crate) mod error;
70mod global_settings;
71pub mod object;