Lagrange
Loading...
Searching...
No Matches
scene_convert.h
1/*
2 * Copyright 2025 Adobe. All rights reserved.
3 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License. You may obtain a copy
5 * of the License at http://www.apache.org/licenses/LICENSE-2.0
6 *
7 * Unless required by applicable law or agreed to in writing, software distributed under
8 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9 * OF ANY KIND, either express or implied. See the License for the specific language
10 * governing permissions and limitations under the License.
11 */
12#pragma once
13
14#include <lagrange/SurfaceMesh.h>
15#include <lagrange/scene/Scene.h>
16#include <lagrange/scene/SimpleScene.h>
17#include <lagrange/types/TransformOptions.h>
18
19#include <vector>
20
21// TODO: We're still missing scene <-> simple scene conversion functions.
22namespace lagrange::scene {
23
34template <typename Scalar, typename Index>
35Scene<Scalar, Index> mesh_to_scene(SurfaceMesh<Scalar, Index> mesh);
36
47template <typename Scalar, typename Index>
48Scene<Scalar, Index> meshes_to_scene(std::vector<SurfaceMesh<Scalar, Index>> meshes);
49
62template <typename Scalar, typename Index>
63SurfaceMesh<Scalar, Index> scene_to_mesh(
64 const Scene<Scalar, Index>& scene,
65 const TransformOptions& transform_options = {},
66 bool preserve_attributes = true);
67
82template <typename Scalar, typename Index>
83std::vector<SurfaceMesh<Scalar, Index>> scene_to_meshes(
84 const Scene<Scalar, Index>& scene,
85 const TransformOptions& transform_options = {});
86
102template <typename Scalar, typename Index>
103SimpleScene<Scalar, Index> scene_to_simple_scene(const Scene<Scalar, Index>& scene);
104
119template <typename Scalar, typename Index>
120Scene<Scalar, Index> simple_scene_to_scene(const SimpleScene<Scalar, Index>& simple_scene);
121
128template <typename Scalar, typename Index>
130{
135 std::vector<SurfaceMesh<Scalar, Index>> meshes;
136
140 std::vector<std::vector<ElementId>> material_ids;
141};
142
164template <typename Scalar, typename Index>
165MeshesAndMaterialsResult<Scalar, Index> scene_to_meshes_and_materials(
166 const Scene<Scalar, Index>& scene,
167 const TransformOptions& transform_options = {});
168
169
170} // namespace lagrange::scene
Simple scene container for instanced meshes.
Definition SimpleScene.h:62
Options available when applying affine transforms to a mesh.
Definition TransformOptions.h:29
Result structure for scene to meshes and materials conversion.
Definition scene_convert.h:130
std::vector< SurfaceMesh< Scalar, Index > > meshes
List of meshes with transforms applied.
Definition scene_convert.h:135
std::vector< std::vector< ElementId > > material_ids
List of material IDs used by each mesh (indices into Scene::materials).
Definition scene_convert.h:140
Definition Scene.h:353