Classes | Functions | Variables

Package iphy3d
[Client Modules]

客户端--3D碰撞检测 More...

Classes

class  iphy3d_exception
 碰撞检测异常,继承于python的Exception. More...
class  col_filter
 碰撞检测过滤器 More...
class  col_result
 碰撞检测结果 More...
class  col_object
 可碰撞物体的基类,不需要直接创建,通过col_sphere/col_box创建后可以访问其公有属性 More...
class  col_sphere
 球型碰撞体 More...
class  col_box
 长方体碰撞体 More...
class  col_capsule
 胶囊体碰撞体. More...
class  col_cylinder
 圆柱体碰撞体. More...
class  col_model
 模型碰撞体,三角形组成的复杂几何体,碰撞精度最高,但计算量也最大 注意:1 模型体如果不是凸多边形组成的,那么不能用于sweep_test。 2 不会受model的位置变换的影响,需自己维护碰撞体的旋转矩阵 3 碰撞体模型必须为3dmax导出 4 推荐为碰撞体单独做低模,降低计算量 5 做碰撞检测时,请不要将模型碰撞体作为去碰的碰撞体,返回结果会不确定。 More...

Functions

def set_debug_draw
def set_draw_range
def hit_by_ray
 射线碰撞测试,返回从起始位置起第一个碰撞的结果
def static_test
 静态碰撞测试,返回碰撞体列表
def sweep_test
 凸扫碰撞测试,返回从起始位置起第一个碰撞的结果,如果传入的碰撞体不是 col_sphere/col_box/col_capsule/col_cylinder,会抛出iphy3d.iphy3d_exception 注意:目前存在改变碰撞体的rotation_matrix后,sweep_test仍使用的是原有碰撞体属性的bug.
def update
 更新碰撞系统,向场景中增加或移动被碰撞体后必须调用

Variables

 EXCLUDE_FILTER = collision.EXCLUDE_FILTER
 过滤方式 : 与标记位不包含的碰
 EQUAL_FILTER = collision.EQUAL_FILTER
 过滤方式 : 与标记位相等的碰
 INEQUAL_FILTER = collision.INEQUAL_FILTER
 过滤方式 : 与标记位不相等的碰

Detailed Description

客户端--3D碰撞检测


Function Documentation

def iphy3d.set_debug_draw (   layer_id,
  flag 
)
是否激活碰撞信息的显示

参数:
        layer_id : int iworld2d对应的layer_id,用于指示哪个3D场景
                                        全3D请用 iworld3d.NO_2D_LAYER
        flag : bool True为开启显示,False为隐藏
def iphy3d.set_draw_range (   layer_id,
  x,
  y,
  z,
  radius 
)
设置显示碰撞信息的范围

参数:
        layer_id : int iworld2d对应的layer_id,用于指示哪个3D场景
                                                        全3D请用 iworld3d.NO_2D_LAYER
        x : float 中心点的x坐标
        y : float 中心点的y坐标
        z : float 中心点的z坐标
        radius : float 显示碰撞信息的半径
def iphy3d.hit_by_ray (   layer_id,
  start,
  end,
  filter = None 
)

射线碰撞测试,返回从起始位置起第一个碰撞的结果

Parameters:
layer_id: int iworld2d对应的layer_id,用于指示哪个3D场景 全3D请用 iworld3d.NO_2D_LAYER
start: math3d.vector 射线的起点
end: math3d.vector 射线的终点
filter: iphy3d.col_filter 碰撞过滤器 默认值为None,对应的filter为 mask = 0, category = 0, filter_type = EXCLUDE_FILTER
Return values:
:iphy3d.col_result 碰撞检测结果
def iphy3d.static_test (   layer_id,
  col_obj,
  filter = None 
)

静态碰撞测试,返回碰撞体列表

Parameters:
layer_id: int iworld2d对应的layer_id,用于指示哪个3D场景 全3D请用 iworld3d.NO_2D_LAYER
col_obj: iphy3d.col_object 碰撞体
filter: iphy3d.col_filter 碰撞过滤器.
默认值为None,对应的filter为 mask = 0, category = 0, filter_type = EXCLUDE_FILTER .
使用EQUAL_FILTER去检测碰撞,性能有所提高
Return values:
:list 碰撞体列表
def iphy3d.sweep_test (   layer_id,
  col_obj,
  start,
  end,
  filter = None 
)

凸扫碰撞测试,返回从起始位置起第一个碰撞的结果,如果传入的碰撞体不是 col_sphere/col_box/col_capsule/col_cylinder,会抛出iphy3d.iphy3d_exception 注意:目前存在改变碰撞体的rotation_matrix后,sweep_test仍使用的是原有碰撞体属性的bug.

Parameters:
layer_id: int iworld2d对应的layer_id,用于指示哪个3D场景 全3D请用 iworld3d.NO_2D_LAYER
col_obj: iphy3d.col_object 碰撞体
start: math3d.vector 起始位置
end: math3d.vector 结束位置
filter: iphy3d.col_filter 碰撞过滤器。 默认值为None,对应的filter为 mask = 0, category = 0, filter_type = EXCLUDE_FILTER
Return values:
:iphy3d.col_result 碰撞检测结果
def iphy3d.update (   layer_id )

更新碰撞系统,向场景中增加或移动被碰撞体后必须调用

Parameters:
layer_id: int iworld2d对应的layer_id,用于指示哪个3D场景 全3D请用 iworld3d.NO_2D_LAYER
 All Classes Namespaces Functions Variables Properties