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
interface IntersectionQuery extends Query {
point: { x: number; y: number; z?: number; w?: number }
tolerance?: number
operation: 'Occlusion' | 'Pick'
}
- 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 geometry
Pick: 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
}
- 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'
}
- 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 NDC
Unproject: 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'
}
- 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 NDC
Unproject: Unprojects an NDC point into a world point
PointQueryResult
interface PointQueryResult {
x: number
y: number
z?: number
w?: number
}
The result is a point of variable component length
PointQueryResult
interface Query {
id?: string
operation: string
}
- optional id: Currently unused
- operation: The operation type
QueryArgsResultMap
type QueryArgsResultMap = {
Project: PointQueryResult
Unproject: PointQueryResult
Occlusion: IntersectionQueryResult
Pick: IntersectionQueryResult
} & { [key: string]: unknown }
Mapping between the query type and query result type.
QueryOperation
type QueryOperation = 'Project' | 'Unproject' | 'Occlusion' | 'Pick'
Query operation type values
QueryResult
type QueryResult = PointQueryResult | IntersectionQueryResult
Query result type values Last modified on January 28, 2026