Trajectory props
Optionalcolor?: stringOptionalcolorIntervals?: TrajectoryColorInterval[]Data-driven interval colouring: an array of measured-depth (MSL) intervals, each
{ from, to, color }, that recolour the tube where a point falls inside an
interval (outside every interval the base color is used). Intended for colouring
a trajectory by data instead of a single diffuse colour. Colours are de-duplicated
internally, so many intervals may share a colour cheaply. Memoize the array — a new
reference rebuilds the interval textures.
OptionaldepthInterval?: numberSpacing between depth markers in metres. Default 100.
OptionaldepthMarkerColor?: stringDepth-marker colour used by the mixed colour mode. Default black.
OptionaldepthMarkerColorMode?: ContourColorModeHow depth markers modulate the tube colour (mirrors the Surface contour modes):
darken / lighten / mixed. Default ContourColorMode.darken.
OptionaldepthMarkerColorModeFactor?: numberDepth-marker modulation strength (0..1). Default 0.5.
OptionaldepthMarkerOffset?: numberMetre offset applied to the MSL datum used by the depth markers (e.g. set to the RT elevation or a kickoff depth to align the marker grid to that reference). Default 0.
OptionaldepthMarkers?: booleanDraw depth-marker lines along the tube (measured depth, MSL).
OptionaldepthMarkerWidth?: numberDepth-marker band thickness in metres, centred on each interval. Default 1.
OptionalhighlightBlending?: BlendingBlend mode for the highlight ghost. AdditiveBlending (the default) glows on dark
scenes but washes out on light ones; use NormalBlending (with highlightOpacity
< 1) for a solid overlay that reads on any background.
OptionalhighlightColor?: stringHighlight (ghost) colour used by the Highlighter on hover/selection.
OptionalhighlightOpacity?: numberHighlight (ghost) opacity (0..1). Together with highlightBlending this tunes how
strongly the hover/selection effect reads against a given background. Default 1.
OptionallodDistance?: numberCamera distance (from DistanceContext) below which the high LOD is used.
OptionallowRadialSegments?: numberRadial resolution of the low (field-scale) LOD.
Optionalmap?: TextureOptional albedo texture applied to the tube (combined with color: the tube
centre reads as color x texel). The trajectory is unlit, so only a colour
map is supported.
OptionalmapUvUnits?: "normalized" | "world"UV units for map: 'normalized' (azimuth 0..1 around x curve position 0..1
along, so the texture fits the whole well) or 'world' (circumference metres x
measured-depth metres, so map.repeat sets a world-consistent texel density).
Default 'normalized'.
OptionalminPixelRadius?: numberScreen-space floor so the tube never thins below this many pixels.
Optionalopacity?: numberOpacity (1 = opaque, the default). Values < 1 render semi-transparent.
Optionalpriority?: numberOptionalradialSegments?: numberRadial resolution of the high LOD.
Optionalradius?: numberReal-world tube radius in metres. Applied as a shader uniform (no rebuild).
OptionalshadingColor?: stringColour the silhouette darkens toward (default black = a darker same-hue diffuse).
OptionalshadingFalloff?: numberRim shading exponent. The tube centre is always EXACTLY the diffuse colour; this shapes how the darkening rises toward the silhouette: higher = darkening hugs the edge (broad exact-colour front), lower = spreads inward. Default 2.
OptionalshadingStrength?: numberSilhouette darkening amount (0 = flat, 1 = full). Default 0.6.
<Wellbore id="abc">
<WellboreBounds id="abc">
<Trajectory color="red" radius={1} />
</WellboreBounds>
</Wellbore>
Depends on the trajectory generator. Picking and highlighting are wired by
exposing per-mesh userData.emitterMaterial and userData.highlightMaterial (which
the PickingHelper / Highlighter prefer over their defaults); register the pointer
handlers on the ancestor Wellbore (or another listener) as usual — the tube is then
picked/highlighted correctly with no dedicated registration of its own.
Renders a wellbore trajectory as a single instanced tube. Radius is a shader uniform (so thickness — and a future Y-axis scale — never rebuild geometry), with a screen-space
minPixelRadiusfloor so the tube reads as a ~1 px line at field scale and gains thickness continuously as the camera approaches. A coarse radial-segment geometry LOD is swapped based on theDistanceContextpublished byWellboreBounds. Must be a child of theWellborecomponent (wrap it in aWellboreBoundsfor the distance-driven LOD).This supersedes the older
BasicTrajectory+TubeTrajectorycomposition: one generator, one geometry, GPU picking andHighlightersupport, OIT-compatible, plus optional depth markers, data-driven interval colouring and an albedo texture map.