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
79template <typename Scalar, typename Index>
80std::vector<SurfaceMesh<Scalar, Index>> scene_to_meshes(
81 const Scene<Scalar, Index>& scene,
82 const TransformOptions& transform_options = {});
83
99template <typename Scalar, typename Index>
100SimpleScene<Scalar, Index> scene_to_simple_scene(const Scene<Scalar, Index>& scene);
101
116template <typename Scalar, typename Index>
117Scene<Scalar, Index> simple_scene_to_scene(const SimpleScene<Scalar, Index>& simple_scene);
118
125template <typename Scalar, typename Index>
127{
129 std::vector<SurfaceMesh<Scalar, Index>> meshes;
130
132 std::vector<std::vector<ElementId>> material_ids;
133};
134
146template <typename Scalar, typename Index>
147MeshesAndMaterialsResult<Scalar, Index> scene_to_meshes_and_materials(
148 const Scene<Scalar, Index>& scene,
149 const TransformOptions& transform_options = {});
150
151
152} // 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:127
std::vector< SurfaceMesh< Scalar, Index > > meshes
List of meshes with transforms applied.
Definition scene_convert.h:129
std::vector< std::vector< ElementId > > material_ids
List of material IDs for each mesh.
Definition scene_convert.h:132
Definition Scene.h:353