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)
Impressum