跳到主要内容
版本:v10.0

M3D / M3D / Actions / RaypickAction

Class: RaypickAction

M3D.Actions.RaypickAction

Memberof

M3D.Actions

Description

射线拾取Action

Author

YW

Date

Hierarchy​

Table of contents​

Constructors​

Properties​

Methods​

Constructors​

constructor​

• new RaypickAction(viewport): RaypickAction

Parameters​

NameTypeDescription
viewportViewport视口

Returns​

RaypickAction

Description

构造函数

Overrides​

Action.constructor

Properties​

id​

• id: number

Inherited from​

Action.id


count​

▪ Static count: number

Inherited from​

Action.count

Methods​

addIntersectPnt​

▸ addIntersectPnt(pos): void

Parameters​

NameTypeDescription
posVector3模型交点

Returns​

void

Description

临时记录和模型的相交点


addIntersectTrianglePnts​

▸ addIntersectTrianglePnts(normal): void

Parameters​

NameType
normalVector3

Returns​

void

Description

给存储射线和三角面片的交点添加射线相交的三角面片法线


addShape​

▸ addShape(shape, zIndex?): void

Parameters​

NameTypeDescription
shapeShapeshape对象
zIndex?number拾取优先级

Returns​

void

Description

将相交对象,加入缓存列表,供最后判断拾取先后关系使用


addToFramePickCollection​

▸ addToFramePickCollection(shape): void

Parameters​

NameTypeDescription
shapeShapeShape对象

Returns​

void

Description

添加到框选集合


beginOnceFramePick​

▸ beginOnceFramePick(): void

Returns​

void

Description

开始当前一次框选


beginPickAsGroup​

▸ beginPickAsGroup(shape): void

Parameters​

NameType
shapeShape

Returns​

void

Description

以组开始拾取(未实现)


canPickGeo​

▸ canPickGeo(geoType): boolean

Parameters​

NameTypeDescription
geoTypeGeoFeatureEnum待判断的几何属性类型

Returns​

boolean

true 能够拾取此类型 false 不能够拾取此类型

Description

判断当前拾取动作,能否拾取此几何类型的shape


canPickShape​

▸ canPickShape(shapeType): boolean

Parameters​

NameTypeDescription
shapeTypeShapeType待判断的类型

Returns​

boolean

true 能够拾取此类型 false 不能够拾取此类型

Description

判断当前拾取动作能否拾取此类型


endPickAsGroup​

▸ endPickAsGroup(shape, zIndex?): void

Parameters​

NameType
shapeShape
zIndex?number

Returns​

void

Description

结束以组拾取(未实现)


execute​

▸ execute(): ActionState

Returns​

ActionState

Description

执行Action

Inherited from​

Action.execute


frustumIntersectWithWorldBox​

▸ frustumIntersectWithWorldBox(box): boolean

Parameters​

NameTypeDescription
boxBoundingBox待求交的包围盒

Returns​

boolean

true相交 false 不相交

Description

是否和包围盒相交


getAllPickPoint​

▸ getAllPickPoint(shape): Vector3[]

Parameters​

NameType
shapeShape

Returns​

Vector3[]

所有拾取点

Description

获取所有拾取点


getData​

▸ getData(): RayPickActionData

Returns​

RayPickActionData

射线求交数据

Description

获取射线求交的数据


getEvents​

▸ getEvents(): M3DEvent[]

Returns​

M3DEvent[]

Description

获得事件列表

Inherited from​

Action.getEvents


getFarPickShape​

▸ getFarPickShape(): Shape

Returns​

Shape

拾取到的对象 null 表示没有拾取到

Description

得到最后端拾取对象


getFramePickMatchPntCount​

▸ getFramePickMatchPntCount(): number

Returns​

number

框选相交模型数量

Description

获取当前一次框选相交模型数量


getFramePickShapes​

▸ getFramePickShapes(): Shape[]

Returns​

Shape[]

拾取到的对象 null 表示没有拾取到

Description

获取存储所有框选相交的对象


getFramePickType​

▸ getFramePickType(): number

Returns​

number

框选类型 1 inside 全部在内部 2 intersect 相交即可

Description

获取框选类型


getId​

▸ getId(): number

Returns​

number

Description

获取id

Inherited from​

Action.getId


getIntersectPnts​

▸ getIntersectPnts(): Vector3[]

Returns​

Vector3[]

模型交点数组

Description

获取所有和模型的相交点


getIntersectType​

▸ getIntersectType(): number

Returns​

number

求交类型 0 三角网格相交 1 线相交 2 点相交

Description

获取求交类型 0 三角网格相交 1 线相交 2 点相交


getIsPickAll​

▸ getIsPickAll(): boolean

Returns​

boolean

是否框选

Description

是否框选


getNearPickPoint​

▸ getNearPickPoint(): Vector3

Returns​

Vector3

拾取到的点 null表示没有拾取到

Description

得到最前端的拾取到的点


getNearPickShape​

▸ getNearPickShape(): Shape

Returns​

Shape

拾取到的对象 null 表示没有拾取到

Description

得到最前端拾取对象


getNearestPickPoint​

▸ getNearestPickPoint(): Vector3

Returns​

Vector3

拾取到的模型最近的点

Description

获取拾取到的模型最近的点


getNormal​

▸ getNormal(): Vector3

Returns​

Vector3

返回法向

Description

返回拾取到的三角面片的法向


getOnceFramePickCount​

▸ getOnceFramePickCount(): number

Returns​

number

框选数量

Description

获取当前框选数量


getPickGeoType​

▸ getPickGeoType(): GeoFeatureEnum

Returns​

GeoFeatureEnum

允许拾取对象的几何属性类型

Description

获取允许拾取对象的几何属性类型


getPickShapeType​

▸ getPickShapeType(): PickShapeFilterType

Returns​

PickShapeFilterType

拾取类型

Description

获取拾取类型


getScreenPoint​

▸ getScreenPoint(): Vector2

Returns​

Vector2

屏幕点

Description

获取屏幕点


getUseClipPlane​

▸ getUseClipPlane(): boolean

Returns​

boolean

是否需要考虑裁剪平面

Description

获取是否需要考虑裁剪平面


getViewport​

▸ getViewport(): Viewport

Returns​

Viewport

视口对象

Description

获取当前视口


increaseFramePickMatchPntCount​

▸ increaseFramePickMatchPntCount(): void

Returns​

void

Description

当前一次框选相交模型数量加一


increaseFramePickPntCount​

▸ increaseFramePickPntCount(): void

Returns​

void

Description

当前框选拾取数量加一


intersect​

▸ intersect(v0, v1): Vector3

Parameters​

NameTypeDescription
v0Vector3线段起点
v1Vector3线段终点

Returns​

Vector3

交点 null表示没有交点

Description

射线是否和线段相交

▸ intersect(point): boolean

Parameters​

NameTypeDescription
pointVector3待判断点

Returns​

boolean

true相交 false不相交

Description

射线是否和点相交

▸ intersect(point, size): boolean

Parameters​

NameTypeDescription
pointVector3待判断点
sizenumber点的大小

Returns​

boolean

true相交 false不相交

Description

射线折否和点相交


isIntersectRayAndTriangle​

▸ isIntersectRayAndTriangle(v0, v1, v2): Vector3

Parameters​

NameTypeDescription
v0Vector3三角形第一个点
v1Vector3第二个点
v2Vector3第三个点

Returns​

Vector3

交点 null表示没有交点

Description

射线是否和三角形有交点

▸ isIntersectRayAndTriangle(v0, v1, v2, ray): Vector3

Parameters​

NameTypeDescription
v0Vector3三角形第一个点
v1Vector3第二个点
v2Vector3第三个点
rayRay射线

Returns​

Vector3

交点 null表示没有交点

Description

射线是否和三角形有交点


isPointInFrustum​

▸ isPointInFrustum(v0): boolean

Parameters​

NameType
v0Vector3

Returns​

boolean

是否在视锥体内

Description

点是否在视锥体内


isintersecFrustumLine​

▸ isintersecFrustumLine(raypickAction, v0, v1): boolean

Parameters​

NameTypeDescription
raypickActionRaypickAction
v0Vector3线段第一个点
v1Vector3第二个点

Returns​

boolean

是否相交

Description

判断线段是否与视锥体相交


isintersecFrustumTriangle​

▸ isintersecFrustumTriangle(v0, v1, v2): boolean

Parameters​

NameTypeDescription
v0Vector3三角形第一个点
v1Vector3第二个点
v2Vector3第三个点

Returns​

boolean

是否相交

Description

判断视锥体的四条射线是否和三角形相交


registerEvent​

▸ registerEvent(event): void

Parameters​

NameTypeDescription
eventM3DEventM3D事件

Returns​

void

Description

注册事件

Inherited from​

Action.registerEvent


removeEvent​

▸ removeEvent(): void

Returns​

void

Description

删除事件

Inherited from​

Action.removeEvent


setFramePickSection​

▸ setFramePickSection(leftTop, rightBottom): void

Parameters​

NameTypeDescription
leftTopVector2左上角位置点
rightBottomVector2右下角位置点

Returns​

void

Description

设置框选区域


setFramePickType​

▸ setFramePickType(framePickType): void

Parameters​

NameTypeDescription
framePickTypenumber框选类型 1 inside 全部在内部 2 intersect 相交即可

Returns​

void

Description

设置框选类型


setId​

▸ setId(v): void

Parameters​

NameTypeDescription
vnumberShapeId

Returns​

void

Description

设置id

Inherited from​

Action.setId


setIntersectType​

▸ setIntersectType(type): void

Parameters​

NameTypeDescription
typenumber求交类型 0 三角网格相交 1 线相交 2 点相交

Returns​

void

Description

设置求交类型


setNearestPickPoint​

▸ setNearestPickPoint(val): void

Parameters​

NameTypeDescription
valVector3拾取到的模型最近的点

Returns​

void

Description

设置拾取到的模型最近的点


setPickAll​

▸ setPickAll(flag): void

Parameters​

NameTypeDescription
flagboolean是否为框选

Returns​

void

Description

设置框选标识


setPickGeoType​

▸ setPickGeoType(geoType): void

Parameters​

NameTypeDescription
geoTypeGeoFeatureEnum拾取对象的几何属性类型

Returns​

void

Description

设置待拾取对象具有的几何属性类型


setPickRadius​

▸ setPickRadius(radius): void

Parameters​

NameTypeDescription
radiusnumber拾取阈值

Returns​

void

Description

设置拾取阈值,此阈值对应屏幕上的距离,不可过大也不用过小。建议 10 -- 20 像素


setPickShapeFilterType​

▸ setPickShapeFilterType(shapeType, excludeShapeType?): void

Parameters​

NameTypeDescription
shapeTypePickShapeFilterType拾取对象的类型
excludeShapeType?ShapeType排除的拾取对象

Returns​

void

Description

设置待拾取对象的类型


setPickShapeType​

▸ setPickShapeType(shapeType, excludeShapeType?): void

Parameters​

NameTypeDescription
shapeTypeShapeType拾取对象的类型
excludeShapeType?ShapeType排除的拾取对象

Returns​

void

Description

设置待拾取对象的类型


setRay​

▸ setRay(winx, winY): any

Parameters​

NameTypeDescription
winxnumber屏幕坐标x
winYnumber屏幕坐标y

Returns​

any

Description

设置射线 根据屏幕坐标点

▸ setRay(ray): any

Parameters​

NameTypeDescription
rayRay射线对象

Returns​

any

Description

设置射线

▸ setRay(screenPnt): any

Parameters​

NameTypeDescription
screenPntVector2屏幕坐标点

Returns​

any

Description

设置射线 根据屏幕坐标点


setShapePickState​

▸ setShapePickState(shapeType, state): void

Parameters​

NameTypeDescription
shapeTypeShapeType拾取对象的类型
stateboolean状态

Returns​

void

Description

设置Shape拾取状态


setUseClipPlane​

▸ setUseClipPlane(val): void

Parameters​

NameTypeDescription
valboolean是否需要考虑裁剪平面

Returns​

void

Description

设置是否需要考虑裁剪平面


setViewport​

▸ setViewport(viewport): void

Parameters​

NameTypeDescription
viewportViewport视口对象

Returns​

void

Description

设置当前视口


updateFramePickFrustum​

▸ updateFramePickFrustum(modelMatrix): void

Parameters​

NameType
modelMatrixMatrix3x4

Returns​

void

Description

更新框选视锥


updateGroupPickPnts​

▸ updateGroupPickPnts(): void

Returns​

void

Description

更新拾取点(未实现)


updateIntersectPnts​

▸ updateIntersectPnts(modelMatrix): void

Parameters​

NameType
modelMatrixMatrix3x4

Returns​

void

Description

更新相交点(未实现)


updateModelRay​

▸ updateModelRay(modelMatrix): void

Parameters​

NameTypeDescription
modelMatrixMatrix3x4模型世界坐标系变换矩阵

Returns​

void

Description

通过模型矩阵,更新模型局部坐标系射线


getPickPosition​

▸ getPickPosition(scene, isNear, screenPos): Vector3

Parameters​

NameTypeDescription
sceneScene场景
isNearboolean
screenPosVector2

Returns​

Vector3

Description

拾取模型上的点

▸ getPickPosition(scene, isNear, ray): Vector3

Parameters​

NameType
sceneScene
isNearboolean
rayRay

Returns​

Vector3


getPickShape​

▸ getPickShape(scene, screenPos, shapeType): Shape

Parameters​

NameTypeDescription
sceneScene场景
screenPosVector2屏幕点
shapeTypeShapeTypeshape类型

Returns​

Shape

Description

根据类型拾取Shape