# Intersections

Entry point for intersecting and obtaining intersection data from the scene. Accessible from SpeckleRenderer

#

Methods

intersect intersectRay

#

Typedefs

ExtendedIntersection ExtendedMeshIntersection MeshIntersection

#

Methods

# intersect

intersect(
    scene: Scene,
    camera: Camera,
    point: Vector2,
    castLayers: ObjectLayers.STREAM_CONTENT_MESH,
    nearest?: boolean,
    bounds?: Box3,
    firstOnly?: boolean
  ): Array<ExtendedMeshIntersection> | null

intersect(
    scene: Scene,
    camera: Camera,
    point: Vector2,
    castLayers?: Array<ObjectLayers>,
    nearest?: boolean,
    bounds?: Box3,
    firstOnly?: boolean
  ): Array<ExtendedIntersection> | null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Scene intersect function.

TIP

All intersect calls from this class will use the available acceleration structures. This makes the intersection significantly faster than using your own three.js raycasters.

Parameters

  • scene: Scene (opens new window)
  • camera: Camera (opens new window)
  • point: The NDC point to cast the ray from
  • castLayers: The ObjectLayers enabled on the raycaster
  • nearest: If the results should be sorted by dinstance. i.e nearest first
  • bounds: An optional bounds where the intersecting takes place. Everything outside this bounds is disregarded from the result list for this cast. Any object outside of these layers is disregarded from intersection
  • firstOnly: When this flag is enabled the acceleration structure will stop traversing after encountering the first intersection. Only applies to meshes

Returns: Array< Intersection > Three.js defined intersection

# intersectRay

intersectRay(
    scene: Scene,
    camera: Camera,
    ray: Ray,
    castLayers: ObjectLayers.STREAM_CONTENT_MESH,
    nearest?: boolean,
    bounds?: Box3,
    firstOnly?: boolean
  ): Array<ExtendedMeshIntersection> | null
intersectRay(
    scene: Scene,
    camera: Camera,
    ray: Ray,
    castLayers?: Array<ObjectLayers>,
    nearest?: boolean,
    bounds?: Box3,
    firstOnly?: boolean
  ): Array<ExtendedIntersection> | null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Scene intersect function using a provided Ray.

TIP

All intersect calls from this class will use the available acceleration structures. This makes the intersection significantly faster than using your own three.js raycasters.

Parameters

  • scene: Scene (opens new window)
  • camera: Camera (opens new window)
  • ray: The ray to use for casting
  • castLayers: The ObjectLayers enabled on the raycaster
  • nearest: If the results should be sorted by dinstance. i.e nearest first
  • bounds: An optional bounds where the intersecting takes place. Everything outside this bounds is disregarded from the result list for this cast. Any object outside of these layers is disregarded from intersection
  • firstOnly: When this flag is enabled the acceleration structure will stop traversing after encountering the first intersection. Only applies to meshes

Returns: Array< Intersection > Three.js defined intersection

#

Typedefs

# ExtendedIntersection

interface ExtendedIntersection extends Intersection {
  batchObject?: BatchObject;
  pointOnLine?: Material;
}
1
2
3
4

Extension of three.js's default Intersection.

# ExtendedMeshIntersection

interface ExtendedMeshIntersection extends MeshIntersection {
  batchObject: BatchObject
  object: SpeckleMesh | SpeckleInstancedMesh
}
1
2
3
4

# MeshIntersection

interface MeshIntersection extends Intersection {
  face: Face
  faceIndex: number
}
1
2
3
4