Scene — Aspose.3D FOSS for Java
Example
Example Scene класс в Aspose.3D служит корневым контейнером для 3D‑контента, управляет объектами верхнего уровня и обеспечивает управление отношениями родитель/дочерний в иерархии сцены. Он предоставляет доступ к корневым узлам и подсценам, образуя точку входа для загрузки, построения и сохранения 3D‑сцен.
import com.aspose.threed.Scene;
// Create an empty scene
Scene scene = new Scene();
// Access the root node via getter method
Node root = scene.getRootNode();Example
Example Scene класс может быть инстанцирован без аргументов для создания пустой сцены, либо с необязательными параметрами.
| Example | Example | Example |
|---|---|---|
entity | Entity | Необязательная сущность, присоединяемая к корневому узлу при создании |
parentScene | Scene | Необязательная родительская сцена (для подсцен); требует указания имени |
name | String | Имя сцены (используется только с двухаргументным Scene(Scene, String) конструктором) |
import com.aspose.threed.Scene;
// Empty scene
Scene scene = new Scene();
// Scene with an initial entity
Scene scene = new Scene(new Mesh());
// Access the root node (getter method)
Node root = scene.getRootNode();Методы класса
| Example | Тип возвращаемого значения | Example |
|---|---|---|
Scene.fromFile(String filePath) | Scene | Загружает сцену из указанного пути к файлу, автоматически определяя формат. |
Scene.fromFile(String filePath, LoadOptions options) | Scene | Загружает сцену с параметрами загрузки, специфичными для формата. |
import com.aspose.threed.Scene;
// Load from file (format detected from extension)
Scene scene = Scene.fromFile("model.obj");
// Load with options
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);Example
Все свойства доступны через методы получения/установки.
| Example | Example | Example | Example | Example |
|---|---|---|---|---|
rootNode | Node | getRootNode() | – | Корневой узел иерархии сцены |
subScenes | List<Scene> | getSubScenes() | – | Подсцены, вложенные в эту сцену |
assetInfo | AssetInfo | getAssetInfo() | setAssetInfo(AssetInfo) | Метаданные ресурса, такие как автор, дата создания и единицы измерения |
animationClips | List<AnimationClip> | getAnimationClips() | – | Анимационные клипы, определённые в сцене |
currentAnimationClip | AnimationClip | getCurrentAnimationClip() | setCurrentAnimationClip(AnimationClip) | Текущий активный анимационный клип |
library | List<A3DObject> | getLibrary() | – | Пользовательские объекты метаданных, прикреплённые к сцене |
name | String | getName() | setName(String) | Имя объекта сцены |
properties | PropertyCollection | getProperties() | – | Пользовательские свойства, привязанные к сцене |
Example
| Example | Тип возвращаемого значения | Example |
|---|---|---|
save(String filePath) | void | Сохраняет сцену в файл; формат определяется по расширению |
save(String filePath, FileFormat format) | void | Сохраняет сцену в файл в указанном FileFormat |
save(String filePath, SaveOptions options) | void | Сохраняет сцену с использованием параметров сохранения, специфичных для формата |
open(String filePath) | void | Открывает файл в этой сцене; формат определяется по расширению |
open(String filePath, LoadOptions options) | void | Открывает файл с использованием параметров загрузки, специфичных для формата |
getProperty(String name) | Object | Получает значение свойства по имени |
findProperty(String name) | Property | Находит свойство по имени |
createAnimationClip(String name) | AnimationClip | Создаёт новый именованный анимационный клип и добавляет его в сцену |
getAnimationClip(String name) | AnimationClip | Находит существующий анимационный клип по имени, или null если не найден |
clear() | void | Очищает всё содержимое сцены |
Example
Создайте сцену, добавьте узел сетки и сохраните в GLB:
import com.aspose.threed.Scene;
import com.aspose.threed.FileFormat;
// Create scene and mesh
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);
// Add node to root
Node node = scene.getRootNode().createChildNode("triangle", mesh);
// Save as GLB
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("triangle.glb", glbOpts);