AnyCAD Rapid API 2026
Help you to create a better world!
载入中...
搜索中...
未找到
AnyCAD.Foundation.Raycaster类 参考

射线拾取器类 更多...

类 AnyCAD.Foundation.Raycaster 继承关系图:
AnyCAD.Foundation.PickCaster

Public 成员函数

 Raycaster (global::System.IntPtr cPtr, bool cMemoryOwn)
 仅供内部使用
 
 Raycaster ()
 默认构造函数
 
 Raycaster (Camera camera, EnumShapeFilter pickFilter, int x, int y)
 构造函数(屏幕坐标版本)
 
 Raycaster (Camera camera, EnumShapeFilter pickFilter, Ray ray, int x, int y)
 构造函数(指定射线版本)
 
Ray GetRay ()
 
void SetRay (Ray val)
 
AABox GetRayBox ()
 
void SetRayBox (AABox val)
 
Vector2 GetXY ()
 
void SetXY (Vector2 val)
 
uint GetTabOrder ()
 
void SetTabOrder (uint val)
 
override bool FilterByClipPlane (Plane plane)
 根据裁剪平面过滤(重写基类方法)
 
void Initialize (Camera camera, EnumShapeFilter pickFilter, int x, int y)
 初始化射线拾取器
 
uint Sort ()
 对相交结果按距离排序
 
PickedItem GetTopItem ()
 获取最近的相交项
 
bool TestThreshold (Vector3 pt)
 测试点是否在阈值范围内
 
uint HitTest (Scene scene)
 对场景进行命中测试
 
uint HitTest (SceneManager sceneManager)
 对场景管理器进行命中测试
 
uint HitTest (SceneNode node)
 对单个场景节点进行命中测试
 
uint HitTest (SceneManager sceneManager, bool respectPickable)
 对场景管理器进行命中测试(带选项)
 
- Public 成员函数 继承自 AnyCAD.Foundation.PickCaster
 PickCaster (global::System.IntPtr cPtr, bool cMemoryOwn)
 仅供内部使用
 
void Dispose ()
 
 PickCaster ()
 默认构造函数
 
 PickCaster (Camera camera, EnumShapeFilter pickFilter)
 构造函数
 
PickedId GetId ()
 
void SetId (PickedId val)
 
bool GetPickOcclusion ()
 
void SetPickOcclusion (bool val)
 
Matrix4d GetTransform ()
 
void SetTransform (Matrix4d val)
 
virtual void Initialize (Camera camera, EnumShapeFilter pickFilter)
 初始化拾取器
 
void Clear ()
 清空所有相交结果
 
uint GetCount ()
 获取相交结果数量
 

详细描述

射线拾取器类

实现基于射线的拾取功能,从屏幕点或指定射线出发,检测与场景对象的相交。 支持距离排序、阈值测试等功能,是最常用的拾取方式。 继承自 PickCaster。

构造及析构函数说明

◆ Raycaster() [1/2]

AnyCAD.Foundation.Raycaster.Raycaster ( Camera camera,
EnumShapeFilter pickFilter,
int x,
int y )

构造函数(屏幕坐标版本)

参数
camera相机对象
pickFilter拾取过滤器
x屏幕X坐标(像素)
y屏幕Y坐标(像素)

根据屏幕坐标创建从相机出发的射线

◆ Raycaster() [2/2]

AnyCAD.Foundation.Raycaster.Raycaster ( Camera camera,
EnumShapeFilter pickFilter,
Ray ray,
int x,
int y )

构造函数(指定射线版本)

参数
camera相机对象
pickFilter拾取过滤器
ray拾取射线对象
x屏幕X坐标
y屏幕Y坐标

使用指定的射线进行拾取

成员函数说明

◆ FilterByClipPlane()

override bool AnyCAD.Foundation.Raycaster.FilterByClipPlane ( Plane plane)
virtual

根据裁剪平面过滤(重写基类方法)

参数
plane裁剪平面对象
返回
true如果被过滤掉,false如果保留

重载 AnyCAD.Foundation.PickCaster .

◆ GetTopItem()

PickedItem AnyCAD.Foundation.Raycaster.GetTopItem ( )

获取最近的相交项

返回
距离相机最近的拾取项引用

返回排序后的第一个相交项(如果已排序)

◆ HitTest() [1/4]

uint AnyCAD.Foundation.Raycaster.HitTest ( Scene scene)

对场景进行命中测试

参数
scene场景对象智能指针
返回
找到的相交项数量

遍历场景中所有可见节点,检测与射线的相交

◆ HitTest() [2/4]

uint AnyCAD.Foundation.Raycaster.HitTest ( SceneManager sceneManager)

对场景管理器进行命中测试

参数
sceneManager场景管理器指针
返回
找到的相交项数量

遍历所有场景中的节点,检测与射线的相交

◆ HitTest() [3/4]

uint AnyCAD.Foundation.Raycaster.HitTest ( SceneManager sceneManager,
bool respectPickable )

对场景管理器进行命中测试(带选项)

参数
sceneManager场景管理器指针
respectPickable是否遵循节点上的Pickable属性
返回
找到的相交项数量

如果respectPickable为true,则跳过不可拾取的节点

◆ HitTest() [4/4]

uint AnyCAD.Foundation.Raycaster.HitTest ( SceneNode node)

对单个场景节点进行命中测试

参数
node场景节点指针
返回
找到的相交项数量

递归遍历节点及其子节点,检测相交

◆ Initialize()

void AnyCAD.Foundation.Raycaster.Initialize ( Camera camera,
EnumShapeFilter pickFilter,
int x,
int y )

初始化射线拾取器

参数
camera相机对象
pickFilter拾取过滤器
x屏幕X坐标
y屏幕Y坐标

根据屏幕坐标创建射线并设置相关参数

◆ Sort()

uint AnyCAD.Foundation.Raycaster.Sort ( )

对相交结果按距离排序

返回
相交结果的数量

将所有相交项按距离相机的远近排序,最近的在前

◆ TestThreshold()

bool AnyCAD.Foundation.Raycaster.TestThreshold ( Vector3 pt)

测试点是否在阈值范围内

参数
pt测试点坐标
返回
true如果在阈值范围内,否则false

检查点到射线的距离是否小于ScreenThreshold