table of contents
RTC_GEOMETRY_TYPE_TRIANGLE(3)  Embree Ray Tracing Kernels 3  RTC_GEOMETRY_TYPE_TRIANGLE(3) 
NAME¶

RTC_GEOMETRY_TYPE_TRIANGLE  triangle geometry type
SYNOPSIS¶

#include <embree3/rtcore.h> RTCGeometry geometry = rtcNewGeometry(device, RTC_GEOMETRY_TYPE_TRIANGLE);
DESCRIPTION¶
Triangle meshes are created by passing RTC_GEOMETRY_TYPE_TRIANGLE to the rtcNewGeometry function call. The triangle indices can be specified by setting an index buffer (RTC_BUFFER_TYPE_INDEX type) and the triangle vertices by setting a vertex buffer (RTC_BUFFER_TYPE_VERTEX type). See rtcSetGeometryBuffer and rtcSetSharedGeometryBuffer for more details on how to set buffers. The index buffer must contain an array of three 32bit indices per triangle (RTC_FORMAT_UINT3 format) and the number of primitives is inferred from the size of that buffer. The vertex buffer must contain an array of single precision x, y, z floating point coordinates (RTC_FORMAT_FLOAT3 format), and the number of vertices are inferred from the size of that buffer. The vertex buffer can be at most 16 GB large.
The parametrization of a triangle uses the first vertex p0 as base point, the vector p1  p0 as udirection and the vector p2  p0 as vdirection. Thus vertex attributes t0,t1,t2 can be linearly interpolated over the triangle the following way:

t_uv = (1uv)*t0 + u*t1 + v*t2 = t0 + u*(t1t0) + v*(t2t0)
A triangle whose vertices are laid out counterclockwise has its geometry normal pointing upwards outside the front face, like illustrated in the following picture:
For multisegment motion blur, the number of time steps must be first specified using the rtcSetGeometryTimeStepCount call. Then a vertex buffer for each time step can be set using different buffer slots, and all these buffers have to have the same stride and size.
Also see tutorial [Triangle Geometry] for an example of how to create triangle meshes.
EXIT STATUS¶
On failure NULL is returned and an error code is set that be get queried using rtcGetDeviceError.
SEE ALSO¶
[rtcNewGeometry]