ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
TriangleMesh.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
11 
12 namespace cloudViewer {
13 namespace t {
14 namespace geometry {
15 namespace kernel {
16 namespace trianglemesh {
17 
19 
20 void ComputeTriangleNormalsCPU(const core::Tensor& vertices,
21  const core::Tensor& triangles,
23 
24 void ComputeVertexNormalsCPU(const core::Tensor& triangles,
25  const core::Tensor& triangle_normals,
26  core::Tensor& vertex_normals);
27 
28 void ComputeTriangleAreasCPU(const core::Tensor& vertices,
29  const core::Tensor& triangles,
30  core::Tensor& triangle_areas);
31 
32 std::array<core::Tensor, 3> SamplePointsUniformlyCPU(
33  const core::Tensor& triangles,
34  const core::Tensor& vertices,
35  const core::Tensor& triangle_areas,
36  const core::Tensor& vertex_normals,
37  const core::Tensor& vertex_colors,
38  const core::Tensor& triangle_normals,
39  const core::Tensor& texture_uvs,
40  const core::Tensor& albedo,
41  size_t number_of_points);
42 
43 #ifdef BUILD_CUDA_MODULE
44 void NormalizeNormalsCUDA(core::Tensor& normals);
45 
46 void ComputeTriangleNormalsCUDA(const core::Tensor& vertices,
47  const core::Tensor& triangles,
49 
50 void ComputeVertexNormalsCUDA(const core::Tensor& triangles,
51  const core::Tensor& triangle_normals,
52  core::Tensor& vertex_normals);
53 
54 void ComputeTriangleAreasCUDA(const core::Tensor& vertices,
55  const core::Tensor& triangles,
56  core::Tensor& triangle_areas);
57 #endif
58 
59 } // namespace trianglemesh
60 } // namespace kernel
61 } // namespace geometry
62 } // namespace t
63 } // namespace cloudViewer
double normals[3]
void ComputeTriangleNormalsCPU(const core::Tensor &vertices, const core::Tensor &triangles, core::Tensor &normals)
void ComputeVertexNormalsCPU(const core::Tensor &triangles, const core::Tensor &triangle_normals, core::Tensor &vertex_normals)
void NormalizeNormalsCPU(core::Tensor &normals)
void ComputeTriangleAreasCPU(const core::Tensor &vertices, const core::Tensor &triangles, core::Tensor &triangle_areas)
std::array< core::Tensor, 3 > SamplePointsUniformlyCPU(const core::Tensor &triangles, const core::Tensor &vertices, const core::Tensor &triangle_areas, const core::Tensor &vertex_normals, const core::Tensor &vertex_colors, const core::Tensor &triangle_normals, const core::Tensor &texture_uvs, const core::Tensor &albedo, size_t number_of_points)
Generic file read and write utility for python interface.