# Queries
Queries are a simple mechanism that allows the user to perform several operations in a contained way. The supported operations are
- Project a point
 - Unproject a point
 - Intersection test
 - Occlusion test
 
Queries are not meant to be used directly, but rather through the viewer's query function
# Typedefs
 | IntersectionQuery | IntersectionQueryResult | PointQuery | PointQueryResult | 
|---|---|---|---|
| Query | QueryArgsResultMap | QueryOperation | QueryResult | 
# IntersectionQuery
interface IntersectionQuery extends Query {
  point: { x: number; y: number; z?: number; w?: number }
  tolerance?: number
  operation: 'Occlusion' | 'Pick'
}
 1
2
3
4
5
2
3
4
5
- point: The point to test for intersections
 - optional tolerance: Tolerance for intersection
 - operation: The query operation type
 
Based on the operation modes:
Occlusion: Test if a point in the scene is being occluded by the scene's geometryPick: Cast a camer ray to the specified point and return all intersection results
# IntersectionQueryResult
interface IntersectionQueryResult {
  objects: Array<{
    guid: string
    object?: Record<string, unknown>
    point: { x: number; y: number; z: number }
  }> | null
}
 1
2
3
4
5
6
7
2
3
4
5
6
7
- guid: The id of the object
 - optional object: The raw data of the intersected object
 - point: The point of intersection
 
# PointQuery
interface PointQuery extends Query {
  point: { x: number; y: number; z?: number; w?: number }
  operation: 'Project' | 'Unproject'
}
 1
2
3
4
2
3
4
- point: The point to run the operation on
 - operation: The operation type
 
Based on the operation modes:
Project: Projects a world point onto the screen. Result is in NDCUnproject: Unprojects an NDC point into a world point
# PointQuery
interface PointQuery extends Query {
  point: { x: number; y: number; z?: number; w?: number }
  operation: 'Project' | 'Unproject'
}
 1
2
3
4
2
3
4
- point: The point to run the operation on
 - operation: The operation type
 
Based on the operation modes:
Project: Projects a world point onto the screen. Result is in NDCUnproject: Unprojects an NDC point into a world point
# PointQueryResult
interface PointQueryResult {
  x: number
  y: number
  z?: number
  w?: number
}
 1
2
3
4
5
6
2
3
4
5
6
The result is a point of variable component length
 
# PointQueryResult
interface Query {
  id?: string 
  operation: string
}
 1
2
3
4
2
3
4
- optional id: Currently unused
 - operation: The operation type
 
# QueryArgsResultMap
type QueryArgsResultMap = {
  Project: PointQueryResult
  Unproject: PointQueryResult
  Occlusion: IntersectionQueryResult
  Pick: IntersectionQueryResult
} & { [key: string]: unknown }
 1
2
3
4
5
6
2
3
4
5
6
Mapping between the query type and query result type.
 
# QueryOperation
type QueryOperation = 'Project' | 'Unproject' | 'Occlusion' | 'Pick'
 1
Query operation type values
 
# QueryResult
type QueryResult = PointQueryResult | IntersectionQueryResult
 1
Query result type values
← Loader NodeRenderView →