41namespace trianglemesh {
47#if defined(__CUDACC__)
48void NormalizeNormalsCUDA
54 const int64_t n = normals.GetLength();
57 scalar_t* ptr = normals.GetDataPtr<scalar_t>();
61 int64_t idx = 3 * workload_idx;
62 scalar_t x = ptr[idx];
63 scalar_t y = ptr[idx + 1];
64 scalar_t z = ptr[idx + 2];
70 scalar_t norm = sqrt(x * x + y * y + z * z);
84#if defined(__CUDACC__)
85void ComputeTriangleNormalsCUDA
93 const int64_t n = normals.GetLength();
97 scalar_t* normal_ptr = normals.GetDataPtr<scalar_t>();
98 const int64_t* triangle_ptr = triangles_d.
GetDataPtr<int64_t>();
99 const scalar_t* vertex_ptr = vertices.GetDataPtr<scalar_t>();
103 int64_t idx = 3 * workload_idx;
105 int64_t triangle_id1 = triangle_ptr[idx];
106 int64_t triangle_id2 = triangle_ptr[idx + 1];
107 int64_t triangle_id3 = triangle_ptr[idx + 2];
109 scalar_t v01[3], v02[3];
110 v01[0] = vertex_ptr[3 * triangle_id2] -
111 vertex_ptr[3 * triangle_id1];
112 v01[1] = vertex_ptr[3 * triangle_id2 + 1] -
113 vertex_ptr[3 * triangle_id1 + 1];
114 v01[2] = vertex_ptr[3 * triangle_id2 + 2] -
115 vertex_ptr[3 * triangle_id1 + 2];
116 v02[0] = vertex_ptr[3 * triangle_id3] -
117 vertex_ptr[3 * triangle_id1];
118 v02[1] = vertex_ptr[3 * triangle_id3 + 1] -
119 vertex_ptr[3 * triangle_id1 + 1];
120 v02[2] = vertex_ptr[3 * triangle_id3 + 2] -
121 vertex_ptr[3 * triangle_id1 + 2];
#define OPEN3D_DEVICE
Definition: CUDAUtils.h:64
#define DISPATCH_FLOAT_DTYPE_TO_TEMPLATE(DTYPE,...)
Definition: Dispatch.h:96
T * GetDataPtr()
Definition: Tensor.h:1149
Tensor To(Dtype dtype, bool copy=false) const
Definition: Tensor.cpp:725
OPEN3D_HOST_DEVICE OPEN3D_FORCE_INLINE void cross_3x1(const scalar_t *A_3x1_input, const scalar_t *B_3x1_input, scalar_t *C_3x1_output)
Definition: Matrix.h:82
const Dtype Int64
Definition: Dtype.cpp:66
void ParallelFor(const Device &device, int64_t n, const func_t &func)
Definition: ParallelFor.h:122
void NormalizeNormalsCPU(core::Tensor &normals)
Definition: TriangleMeshImpl.h:52
void ComputeTriangleNormalsCPU(const core::Tensor &vertices, const core::Tensor &triangles, core::Tensor &normals)
Definition: TriangleMeshImpl.h:89
Definition: PinholeCameraIntrinsic.cpp:35