Dependencies

Scenome's directed acyclic graph is the scene structure you can see. The directed acyclic graph describes relationships between nodes in terms of parent, child, and sibling. Dependencies created in the directed acyclic graph are called structural dependencies.

There is an underlying structure, called the dependency graph that describes additional relationships between nodes. The dependency graph describes relationships in terms of references and dependencies. You can derive a unique dependency graph for each node in the scene graph.

Virtual, Pointer-Based Dependencies

In Scenome a dependency is created when a node points at another node and in doing so creates a relationship between the two nodes. This relationship is not usually expressed in the directed acyclic graph. A material node might point at a texture node but have no structural relationship. This means the material node is dependent upon the texture node. The texture node is referenced by the material node. These dependencies are virtual dependencies because, for example, the structure of the directed acyclic graph has no effect on the relationship between a material node and a texture node. The relationship between the texture node and material exists regardless of the location of either node in the scene graph.

Dependencies, Example 1

Figure 1.1. A directed acyclic graph. You can see the parent, child, and sibling relationships between the nodes. You cannot see the entire underlying dependency graph for each node.

Dependency Graph For Root Node

Figure 1.2. Let's examine dependencies and references for the Root node. Notice the dependency graph is similar to the directed acyclic graph, and indeed shares one important property: the dependency graph is acyclic.

Dependency Graph For Materials Group Node

Figure 1.3. Let's examine dependencies and references for Materials Group node.

Dependency Graph For TextureNode1

Figure 1.4. Let's examine dependencies and references for TextureNode1.

Dependency Graph For LinkNode1

Figure 1.5. Let's examine dependencies and references for LinkNode1.

Dependency Graph For MaterialNode

Figure 1.6. Let's examine dependencies and references for MaterialNode1.

Dependency Graph For Scene Group Node

Figure 1.7. Let's examine dependencies and references for Scene Group Node.

Dependency Graph For MeshNode1

Figure 1.8. Let's examine dependencies and references for MeshNode1.

Dependency Graph For RectangleGeometryModifier

Figure 1.9. Let's examine dependencies and references for RectangleGeometryModifier.

Dependency Graph For GeographicProjectionModifier

Figure 1.10. Let's examine dependencies and references for GeographicProjectionModifier.

Dependency Graph For DisplaceModifier

Figure 1.11. Let's examine dependencies and references for DisplaceModifier.

Dependency Graph For MaterialModifier

Figure 1.12. Let's examine dependencies and references for MaterialModifier.

Dependency Graph For CalculateNormalsModifier

Figure 1.13. Let's examine dependencies and references for CalculateNormalsModifier.

Circular References

As discussed in the link node documentation, circular references while not illegal, are not best practice. Circular references can cause infinite traversal loops inside Scenome and runtime products.

For The Scene Builder

Dependencies are an important method of creating relationships between nodes in the scene graph. During scene building you won't query the dependency graph very often but there might be times when this is important. Scenome provides several tools for evaluating the dependency graph on a node-by-node basis. These are discussed in the command documentation and modeling exercises.