Node — Aspose.3D FOSS for Java

Example

Example Node class 表示 Aspose.3D 场景图中的命名元素。每个节点可以容纳一个 Entity (例如一个 MeshCamera),维护与其他节点的父子关系,并携带本地变换。节点是组织场景层次结构中 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 构造函数使用可选名称初始化节点。.

ExampleExampleExample
nameString节点的可选名称

Example

所有节点属性均通过 getter/setter 方法访问。.

ExampleExampleExampleExampleExample
nameStringgetName()setName(String)节点的人类可读标识符
entityEntitygetEntity()setEntity(Entity)附加到此节点的主要实体(例如,., Mesh, Camera)。第一个元素的快捷方式 getEntities().
entitiesList<Entity>getEntities()附加到此节点的所有实体(只读)
materialMaterialgetMaterial()setMaterial(Material)分配给此节点的主要材质
materialsList<Material>getMaterials()分配给此节点的所有材质(只读)
childNodesList<Node>getChildNodes()子节点列表
parentNodeNodegetParentNode()setParentNode(Node)场景层级中的直接父节点
parentNodesList<Node>getParentNodes()所有父节点(继承自 Entity;;支持实例化)
visiblebooleangetVisible()setVisible(boolean)Example false,,该节点及其子树被隐藏
excludedbooleangetExcluded()setExcluded(boolean)Example true,,此节点被排除在渲染之外
transformTransformgetTransform()本地变换(平移、旋转、缩放)
globalTransformGlobalTransformgetGlobalTransform()世界空间变换矩阵
assetInfoAssetInfogetAssetInfo()setAssetInfo(AssetInfo)附加到此节点的资产元数据(如果有)
propertiesPropertyCollectiongetProperties()附加到此节点的自定义属性

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());
    }
}

另见

 中文