1RTC_GEOMETRY_TYPE_*_CURVE(E3m)bree Ray Tracing KernelsRT3C_GEOMETRY_TYPE_*_CURVE(3)
2
3
4
5 NAME
6 RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE -
7 Bezier curve geometry type using a sweep surface
8
9 RTC_GEOMETRY_TYPE_ROUND_BSPLINE_CURVE -
10 B-spline curve geometry type using a sweep surface
11
12 RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE -
13 linear curve geometry type
14
15 RTC_GEOMETRY_TYPE_FLAT_BEZIER_CURVE -
16 Bezier curve geometry type using a ribbon approximation
17
18 RTC_GEOMETRY_TYPE_FLAT_BSPLINE_CURVE -
19 B-spline curve geometry type using a ribbon approximation
20
21 SYNOPSIS
22 #include <embree3/rtcore.h>
23
24 rtcNewGeometry(device, RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE);
25 rtcNewGeometry(device, RTC_GEOMETRY_TYPE_ROUND_BSPLINE_CURVE);
26 rtcNewGeometry(device, RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE);
27 rtcNewGeometry(device, RTC_GEOMETRY_TYPE_FLAT_BEZIER_CURVE);
28 rtcNewGeometry(device, RTC_GEOMETRY_TYPE_FLAT_BSPLINE_CURVE);
29
30 DESCRIPTION
31 Curves with per vertex radii are supported with linear, cubic Bezier,
32 and cubic B-spline bases. Such curve geometries are created by passing
33 RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE, RTC_GEOME‐
34 TRY_TYPE_FLAT_BEZIER_CURVE, RTC_GEOMETRY_TYPE_FLAT_BSPLINE_CURVE,
35 RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE, or RTC_GEOME‐
36 TRY_TYPE_ROUND_BSPLINE_CURVE, to the rtcNewGeometry function. The
37 curve indices can be specified through an index buffer (RTC_BUF‐
38 FER_TYPE_INDEX) and the curve vertices through a vertex buffer
39 (RTC_BUFFER_TYPE_VERTEX). See rtcSetGeometryBuffer and rtcSetSharedGe‐
40 ometryBuffer for more details on how to set buffers.
41
42 The index buffer contains an array of 32-bit indices (RTC_FORMAT_UINT
43 format), each pointing to the ID of the first control vertex. The ver‐
44 tex buffer stores each control vertex in the form of a single precision
45 position and radius stored in x, y, z, r order in memory (RTC_FOR‐
46 MAT_FLOAT4 format). The number of vertices is inferred from the size
47 of this buffer. The radii may be smaller than zero for the B-Spline
48 basis, but the interpolated radii should always be greater or equal to
49 zero.
50
51 The RTC_GEOMETRY_TYPE_FLAT_* flat mode is a fast mode designed to ren‐
52 der distant hair. In this mode the curve is rendered as a connected
53 sequence of ray facing quads. Individual quads are considered to have
54 subpixel size, and zooming onto the curve might show geometric arti‐
55 facts. The number of quads to subdivide into can be specified through
56 the rtcSetGeometryTessellationRate function. By default the tessella‐
57 tion rate is 4.
58
59 In the RTC_GEOMETRY_TYPE_ROUND_* round mode, a real geometric surface
60 is rendered for the curve, which is more expensive but allows closeup
61 views. For the Bezier and B-spline bases this mode renders a sweep
62 surface by sweeping a varying radius circle tangential along the curve.
63 As a limitation, the radius of the curve has to be smaller than the
64 curvature radius of the curve at each location on the curve. The round
65 mode is currently not supported for the linear basis.
66
67 The intersection with the curve segment stores the parametric hit loca‐
68 tion along the curve segment as u-coordinate (range 0 to +1).
69
70 For Bezier and B-spline curves the v-coordinate is set to the normal‐
71 ized distance in the range -1 to +1. For the linear basis and in round
72 mode the v-coordinate is set to zero.
73
74 In flat mode, the geometry normal Ng is set to the tangent of the curve
75 at the hit location. In round mode, the geometry normal Ng is set to
76 the non-normalized geometric normal of the surface.
77
78 For multi-segment motion blur, the number of time steps must be first
79 specified using the rtcSetGeometryTimeStepCount call. Then a vertex
80 buffer for each time step can be set using different buffer slots, and
81 all these buffers must have the same stride and size.
82
83 Also see tutorials [Hair] and [Curves] for examples of how to create
84 and use curve geometries.
85
86 EXIT STATUS
87 On failure NULL is returned and an error code is set that can be
88 queried using rtcDeviceGetError.
89
90 SEE ALSO
91 [rtcNewGeometry]
92
93
94
95 RTC_GEOMETRY_TYPE_*_CURVE(3)