跳到主要内容
版本: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