Node — Aspose.3D FOSS for Java
Example
Example Node class 表示 Aspose.3D 场景图中的命名元素。每个节点可以容纳一个 Entity (例如一个 Mesh 或 Camera),维护与其他节点的父子关系,并携带本地变换。节点是组织场景层次结构中 3D 对象的主要方式。.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
// Access the root node via getter
Node root = scene.getRootNode();
// Create a child node
Node child = root.createChildNode("my_node");
// Iterate child nodes via getter
for (Node node : root.getChildNodes()) {
System.out.println(node.getName());
}Example
Example Node 构造函数使用可选名称初始化节点。.
| Example | Example | Example |
|---|---|---|
name | String | 节点的可选名称 |
Example
所有节点属性均通过 getter/setter 方法访问。.
| Example | Example | Example | Example | Example |
|---|---|---|---|---|
name | String | getName() | setName(String) | 节点的人类可读标识符 |
entity | Entity | getEntity() | setEntity(Entity) | 附加到此节点的主要实体(例如,., Mesh, Camera)。第一个元素的快捷方式 getEntities(). |
entities | List<Entity> | getEntities() | – | 附加到此节点的所有实体(只读) |
material | Material | getMaterial() | setMaterial(Material) | 分配给此节点的主要材质 |
materials | List<Material> | getMaterials() | – | 分配给此节点的所有材质(只读) |
childNodes | List<Node> | getChildNodes() | – | 子节点列表 |
parentNode | Node | getParentNode() | setParentNode(Node) | 场景层级中的直接父节点 |
parentNodes | List<Node> | getParentNodes() | – | 所有父节点(继承自 Entity;;支持实例化) |
visible | boolean | getVisible() | setVisible(boolean) | Example false,,该节点及其子树被隐藏 |
excluded | boolean | getExcluded() | setExcluded(boolean) | Example true,,此节点被排除在渲染之外 |
transform | Transform | getTransform() | – | 本地变换(平移、旋转、缩放) |
globalTransform | GlobalTransform | getGlobalTransform() | – | 世界空间变换矩阵 |
assetInfo | AssetInfo | getAssetInfo() | setAssetInfo(AssetInfo) | 附加到此节点的资产元数据(如果有) |
properties | PropertyCollection | getProperties() | – | 附加到此节点的自定义属性 |
Example
| Example | 返回类型 | Example |
|---|---|---|
createChildNode(String name) | Node | 创建并附加一个具有给定名称的新子节点 |
createChildNode(String name, Entity entity) | Node | 创建子节点并为其分配实体 |
addChildNode(Node node) | void | 将现有节点添加为此节点的子节点 |
getChild(String name) | Node | 按名称查找直接子节点 |
addEntity(Entity entity) | void | 为此节点附加额外的实体 |
merge(Node node) | void | 将另一个节点的子节点和实体合并到此节点中 |
evaluateGlobalTransform(boolean withGeometricTransform) | Matrix4 | 返回世界空间变换矩阵;传递 true 以包含几何偏移 |
getBoundingBox() | BoundingBox | 计算节点在世界空间中的轴对齐包围盒 |
getProperty(String name) | Object | 按名称获取属性值 |
findProperty(String name) | Property | 按名称查找属性 |
Example
创建场景,将网格附加到节点,并遍历场景图::
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.*;
Scene scene = new Scene();
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);
// Attach mesh to a child node
Node node = scene.getRootNode().createChildNode("triangle", mesh);
// Traverse child nodes using getter
for (Node child : scene.getRootNode().getChildNodes()) {
Entity entity = child.getEntity();
if (entity != null) {
System.out.println("Node '" + child.getName() + "': " + entity.getClass().getSimpleName());
System.out.println(" Excluded: " + child.getExcluded());
}
}