diff --git a/extensions/2.0/Vendor/GODOT_single_root/README.md b/extensions/2.0/Vendor/GODOT_single_root/README.md index 61f19c9334..8b822c73d1 100644 --- a/extensions/2.0/Vendor/GODOT_single_root/README.md +++ b/extensions/2.0/Vendor/GODOT_single_root/README.md @@ -14,11 +14,11 @@ Written against the glTF 2.0 spec. ## Overview -This extension imposes constraints on glTF files to ensure they have a single root node. +This extension allows flagging glTF assets as having a single root node to enable more efficient and accurate workflows with various DCC tools, such as by directly importing the asset's node hierarchy without creating additional scene nodes. This flag imposes certain constraints on glTF assets as described below. Many games engines import glTF files as objects with a single root node. Unity has prefabs with a single root GameObject, and Godot has scenes with a single root node. Since glTF allows defining multiple root nodes, engines will insert the glTF root nodes as children of the "real" root node, which makes it difficult for a glTF file to define the properties of the "real" root node. This is important for things like physics bodies and character controllers, which are defined on the root node, so that all child nodes are moved with the body. Aside from physics, a single root node would avoid an extra node in the tree when round-tripping between glTF and these engines. -The `GODOT_single_root` glTF extension solves this problem by imposing additional constraints to ensure the entire glTF file can be parsed into one of these objects with a single root node. Therefore, all other nodes are either descendants of this node, or are not in the glTF scene node tree. Implementations can detect `GODOT_single_root` and import the single root node as the object's "real" root node in the scene/prefab/etc. The extension contains no data, it only restricts behavior. The restrictions are as follows: +The `GODOT_single_root` glTF extension solves this problem by imposing additional constraints to ensure the entire glTF file can be parsed into one of these objects with a single root node. Therefore, all other nodes are either descendants of this node, or are not in the glTF scene node tree (in which case they behave the same as base glTF). Implementations can detect `GODOT_single_root` and import the single root node as the object's "real" root node in the scene/prefab/etc. The extension contains no data, it only restricts behavior. The restrictions are as follows: - The document `"scenes"` array MUST have exactly one scene. - The document `"scene"` index MUST be set to 0, the index of the only scene in the `"scenes"` array. @@ -35,7 +35,7 @@ These restrictions make the glTF `"scenes"` and `"scene"` properties fully redun Note: Other properties set on the scene JSON, such as the name etc, are allowed, but not required or expected. If the scene does not have a name, use the single root node's name as the scene name. -The single root node acts as the root object that represents the entire glTF file, since all other nodes in the tree are descendants, and all resources such as meshes are either used by this node or by descendants. This requires the glTF file to only contain one scene, with one root node. Multiple scenes per file is not allowed, since it goes against this goal, and is usually not a meaningful concept. +The single root node acts as the root object that represents the entire glTF file, since all other nodes are either descendants or unused, and all resources such as meshes are either used by this node, by descendants, or unused. This requires the glTF file to only contain one scene, with one root node. Multiple scenes per file is not allowed, since it goes against this goal. Forbidding the root node to have a transform is required because: - A glTF file does not have a transform, only its nodes do. With this extension, the single root node represents the glTF file.