3D模型类 More...
3D模型类
def __init__ | ( | self, | |
model_file, | |||
name = "" , |
|||
layer_id = None , |
|||
async_callback = None , |
|||
async_args = () , |
|||
async_type = 2 |
|||
) |
初始化 参数: model_file :str gim文件名 name :str 名字,必须唯一 layer_id :int None代表用默认的层;如果是全3D场景,则请使用NO_2D_LAYER。如果是在 UI 中,则使用 scene3d_ui.get_ui_id()。 async_callback : function 异步加载后的回调函数,async_callback(async_args) async_args : 回调函数的参数,如果是tuple/list,则回调函数有多个参数;如果是其他对象,则只返回一个参数;如果为(),则不返回参数 async_type : int 异步方式,此接口无效,将于近期删除
def destroy | ( | self ) |
把该对象从场景中销毁
def get_anim_ctrl | ( | self, | |
anim_type | |||
) |
获取动画控制器 参数 : anim_type : int 动画类型: iworld3d.ANIM_TYPE_SKELETAL = 1 骨骼动画 iworld3d.ANIM_TYPE_MORPH = 2 变形动画 返回值 : iworld3d.anim_ctrl 对应的动画控制器
def play_animation | ( | self, | |
name, | |||
transit_time = -1.0 , |
|||
transit_type = TRANSIT_TYPE_DEFAULT , |
|||
init_time = 0 , |
|||
loop = PLAY_FLAG_DEF_LOOP , |
|||
speed_rate = 1.0 |
|||
) |
播放指定的骨骼动画 参数 : name : string 或 int 动画名称或索引号 transit_time : float 仅骨骼动画有效。与前一个动画(组合)之间的过渡时间,小于零时表示使用动作文件中记录的值 transit_type : int 仅骨骼动画有效。过渡类型: TRANSIT_TYPE_NONE = 0, 不做过渡处理 TRANSIT_TYPE_IMM = 1, 旧动画停止播放,并按当前骨骼状态直接过渡 TRANSIT_TYPE_DELAY = 2, 旧动画延迟至最后一帧再开始过渡 TRANSIT_TYPE_CROSS = 3, 旧动画继续播放,同时与新动画过渡 TRANSIT_TYPE_MORPH = 4, 旧动画继续播放,并保证morph同步点与新动画中相同名称的morph点的时间重合的过渡 TRANSIT_TYPE_DEFAULT = 16, 使用动作文件中记录的过渡类型,如果没有记录则自动选择最合适的过渡方式 init_time : float 开始播放的时间点 loop : int 循环类型: PLAY_FLAG_NO_LOOP = 0, 不循环 PLAY_FLAG_LOOP = 1, 循环 PLAY_FLAG_DEF_LOOP = 2, 按动作文件中的循环设定 speed_rate : float 播放速速度的倍率,与model3d.anim_rate不同的是它仅应用于anim指定的动画 返回值 : bool 播放是否成功
def play_anim_group | ( | self, | |
group, | |||
transit_time = -1.0 , |
|||
transit_type = TRANSIT_TYPE_DEFAULT , |
|||
speed_rate = 1.0 |
|||
) |
播放组合动画(一组按不同优先级和权重同时混合播放的骨骼动画) 参数 : group : string 或 list string 表示组合动画的名称,组合信息来自ags文件,由模型编辑器编辑 list 组合动画列表,列表每个元素表示一个动画,由一个5元组tuple表示: (anim, priority, weight, init_time, sync_to) anim : string或int 动画名称或索引号 priority : int 在组合动画中的优先级,优先级高者完全占主导,通常优先级最低的是整体动画,高优先级的是分支动画 weight : float 与其它同优先级的动画组合时的混合权重 init_time : float 表示开始播放的时间点,如果为负并且anim与旧的组合动画中对应动画相同则该动画的当前时间不会改变 sync_to : int 一组动画中的序号,指定按照此动画同步,为-1时表示不同步 transit_time : float 同play_animation的transit_time transit_type : int 同play_animation的transit_type speed_rate : float 播放速速度的倍率,与model3d.anim_rate不同的是它仅应用于group中的每个动画 返回值 : bool 播放是否成功
def register_on_end_event | ( | self, | |
callback, | |||
multiple = True , |
|||
data = None |
|||
) |
注册模型动作结束回调事件响应函数 参数: callback : func(neox_ref, [data]) 回调函数 其中neox_ref为引擎内部参数,请误使用。 提示:回调函数中对self进行操作,可将self传入data中. multiple : bool 是否多次响应 data : object 回调函数的数据 返回值:无 说明: 多次调用此函数,条件满足时,将会有多次事件回调。
def register_action_key_event | ( | self, | |
key, | |||
callback, | |||
data = None |
|||
) |
注册模型动作关键帧回调事件响应函数 参数: key : str 关键帧事件名字 callback : func(neox_ref, anim_name, key, [data]) 回调函数,anim_name是动作名字,key是关键帧事件名字 其中neox_ref为引擎内部参数,请误使用。 提示:回调函数中对self进行操作,可将self传入data中. data : object 回调函数的数据 返回值:无 说明: 多次调用此函数,条件满足时,将会有多次事件回调。
def unregister_event | ( | self, | |
callback, | |||
key = "end" , |
|||
anim = -1 |
|||
) |
取消注册模型相关回调事件响应函数 参数: callback : func 需要取消的回调函数 key : str 关键帧事件名字 anim : int/str 动作名称或索引值。如果用register_action_key_event注册响应函数,则索引值为-1;如果用register_anim_key_event注册响应函数,索引值传入相应动作名 返回值:无
def bind | ( | self, | |
socket, | |||
bindobj, | |||
bind_type = BIND_TYPE_DEFAULT |
|||
) |
绑定空间对象到Socket 提示:未绑定到别的模型时,请先调用leave_scene进行解除场景绑定操作. 参数 : socket : int或string Socket序号或名字 space_obj : 支持按分量绑定空间对象(如model3d, fx3d, space_movie) bind_type : int 绑定类型,可以是以下组合: BIND_TYPE_DEFAULT = 0 按mex文件中记录的挂接点默认绑定类型绑定 BIND_TYPE_TRANSLATE = 1 绑定位移 BIND_TYPE_ROTATE = 2 绑定旋转 BIND_TYPE_SCALE = 4 绑定缩放 BIND_TYPE_ALL = 7 绑定所有空间属性 BIND_TYPE_TRANSLATE_WORLD = 8 绑定世界空间的位移
def unbind | ( | self, | |
binding | |||
) |
解除绑定空间对象 参数 : binding : int 或 3种空间对象(model3d, fx3d, space_movie) 如果是整数,表示解除绑定指定的Socket上所有空间对象。 如果是空间对象,表示解除此空间对象
def get_screen_pos | ( | self ) |
按照当前模型的世界位置,返回屏幕坐标的pos 返回值 : (int, int) 屏幕坐标(screen_x, screen_y)
def set_pick | ( | self, | |
flag = True |
|||
) |
设置对象允许被鼠标点中,前提是该对象必须有名字 设置物体是否参与pick/碰撞等检测,默认没有set_pick 参数: flag :bool
def unset_pick | ( | self ) |
解除对象被鼠标点中
def add_round_shadow | ( | self, | |
elliptical = True , |
|||
size = (10,10 , |
|||
bone = 0 , |
|||
light_dir = None |
|||
) |
添加一个圆影 参数 : elliptical : bool 是否椭圆 size : (size_x, size_y) 圆影大小 bone : int或string 阴影跟随哪根骨骼。为0时表示跟随骨骼中心 light_dir : math3d.vector 光方向。为None时表示竖直向下投影
def add_plane_shadow | ( | self, | |
plane, | |||
light_name | |||
) |
添加一个平面阴影 参数 : plane : (math3d.vector, math3d.vector) 影子所在的平面,表示为(n, p)即(法线, 平面上一点) light_name : str 模型所在场景的光源名称
def set_shadow_visible | ( | self, | |
flag | |||
) |
阴影是否可见 参数: flag : bool 是否可见
def accept_shadow | ( | self, | |
flag | |||
) |
此模型接受阴影、贴花。 参数: flag : bool 是否接受阴影。模型初始化时为False
def clear_shadows | ( | self ) |
清除所有阴影
def add_mesh | ( | self, | |
mesh_file | |||
) |
加载换装模型文件. 共用一套骨骼系统的模型可以进行合并.可多次调用合并不同的模型. 特别注意:绑定的gis文件不一样的gim文件禁止进行合并. 参数: mesh_file : str 模型的文件路径(.gim)
def bind_bone | ( | self, | |
bone, | |||
space_obj, | |||
mat, | |||
bind_type = BIND_TYPE_ALL |
|||
) |
绑定空间对象到骨骼. 提示:未绑定到别的模型时,请先调用leave_scene进行解除场景绑定操作. 参数: bone : int或string Bone序号或名字 space_obj : 支持空间对象(如model3d, fx3d, space_movie) mat : math3d.matrix space_obj相对于bone的局部矩阵 bind_type : int 绑定类型,可以是以下组合: BIND_TYPE_TRANSLATE = 1 绑定位移 BIND_TYPE_ROTATE = 2 绑定旋转 BIND_TYPE_SCALE = 4 绑定缩放 BIND_TYPE_ALL = 7 绑定所有空间属性 BIND_TYPE_TRANSLATE_WORLD = 8 绑定世界空间的位移
def get_anim_event_count | ( | self, | |
anim | |||
) |
获取动画事件数. 参数: anim : string或int 动画的索引或名字,如果为None表示当前动画. 返回值: int 事件数
def get_anim_event_name | ( | self, | |
anim, | |||
idx | |||
) |
获取动画事件名称. 参数: anim : string或int 动画的索引和名字,如果为None表示当前动画. idx : int 事件索引 返回值: string 事件名字
def get_anim_event_time | ( | self, | |
anim, | |||
idx | |||
) |
获取动画事件时间. 参数: anim : string或int 动画的索引和名字,如果未None表示当前动画. idx : int 事件索引 返回值: float 时间(毫秒)
def get_anim_length | ( | self, | |
anim | |||
) |
获取动画长度(毫秒). 参数: anim : string或int 动画的索引和名字. 返回值: float 长度
def get_anim_names | ( | self ) |
获取动画动作名字列表. 返回值: tuple 名字列表
def get_animgroup_names | ( | self ) |
获取动画动作组合名字列表. 返回值: tuple 名字列表
def get_bone_by_name | ( | self, | |
name | |||
) |
由骨骼名字获取骨骼索引 参数: name : string 骨骼名字 返回值: int 骨骼索引
def get_bone_count | ( | self ) |
获取骨骼总数. 返回值: int 骨骼总数
def get_bone_matrix | ( | self, | |
bone, | |||
space_type = SPACE_TYPE_PARENT |
|||
) |
取得骨骼节点的矩阵. 参数: bone : int或string 骨骼索引或名字 space_type : int 空间类型: iworld3d.SPACE_TYPE_PARENT = 0 父空间 iworld3d.SPACE_TYPE_WORLD = 1 世界空间 iworld3d.SPACE_TYPE_LOCAL = 2 局部空间 返回值: math3d.matrix 骨骼矩阵
def get_bone_name | ( | self, | |
idx | |||
) |
由骨骼索引获取骨骼名字. 参数: idx : int 骨骼索引 返回值: string 骨骼名字
def get_bone_prs | ( | self, | |
bone | |||
) |
取得骨骼节点的位置、方向和比例(相对于父骨骼节点) 参数: bone : int或string 骨骼索引或名字 返回值: (math3d.vector, math3d.rotation, math3d.vector) (位置,方向,比例)
def get_parent_bone | ( | self, | |
idx | |||
) |
获取父骨骼. 参数: idx : int 骨骼索引 返回值: int : 父骨骼索引,如果自己是根节点则返回-1
def get_root_bone | ( | self, | |
root_idx = 0 |
|||
) |
获取根骨骼. 参数: root_idx : int 根骨骼序号 返回值: int : 根骨骼索引
def get_root_bone_count | ( | self ) |
获取根骨骼数. 返回值: int 根骨骼数
def get_socket_count | ( | self ) |
获取挂接点数量. 返回值: int 挂接点数量
def get_socket_matrix | ( | self, | |
socket, | |||
space_type = SPACE_TYPE_PARENT |
|||
) |
取得socket的矩阵. 参数: socket : int或string socket索引或名字 space_type : int 空间类型: iworld3d.SPACE_TYPE_PARENT = 0 父空间 iworld3d.SPACE_TYPE_WORLD = 1 世界空间 iworld3d.SPACE_TYPE_LOCAL = 2 局部空间 返回值: math3d.matrix 矩阵
def get_socket_name | ( | self, | |
socket_id | |||
) |
获取挂接点的名字 参数: socket_id : int 挂接点序号 返回值: string : 挂接点名字
def get_socket_obj_count | ( | self, | |
socket | |||
) |
获取挂接点的固有挂街物数量.动态绑定的不算。 参数: socket : int或string 返回值: int : 挂接点所挂接的固有物体数量
def get_submesh_bounding_box | ( | self, | |
submesh, | |||
space_type = SPACE_TYPE_LOCAL |
|||
) |
获取子模型的包围盒大小. 参数: submesh : int或string 子模型索引或名字 space_type : int 空间类型 iworld3d.SPACE_TYPE_PARENT = 0 父空间 iworld3d.SPACE_TYPE_WORLD = 1 世界空间 iworld3d.SPACE_TYPE_LOCAL = 2 局部空间 返回值: math3d.vector 包围盒大小
def get_submesh_bounding_radius | ( | self, | |
submesh, | |||
space_type = SPACE_TYPE_LOCAL |
|||
) |
获取子模型的包围球半径. 参数: submesh : int或string 子模型索引或名字 space_type : int 空间类型 iworld3d.SPACE_TYPE_PARENT = 0 父空间 iworld3d.SPACE_TYPE_WORLD = 1 世界空间 iworld3d.SPACE_TYPE_LOCAL = 2 局部空间 返回值: float 包围球半径
def get_submesh_center | ( | self, | |
submesh, | |||
space_type = SPACE_TYPE_LOCAL |
|||
) |
获取子模型的包围球(盒)中心. 参数: submesh : int或string 子模型索引或名字 space_type : int 空间类型 iworld3d.SPACE_TYPE_PARENT = 0 父空间 iworld3d.SPACE_TYPE_WORLD = 1 世界空间 iworld3d.SPACE_TYPE_LOCAL = 2 局部空间 返回值: math3d.vector 子模型中心
def get_submesh_count | ( | self ) |
获取子模型数 返回值 : int 子模型数
def get_submesh_name | ( | self, | |
sub_idx | |||
) |
获取子模型的名字 参数: sub_idx : int 子模型序号 返回值: string 子模型名字
def get_submesh_visible | ( | self, | |
submesh | |||
) |
获取子模型的可见性 参数 : submesh : int或string 子模型索引或名字 返回值 : bool 是否可见
def load_action | ( | self, | |
anim_source | |||
) |
加载动作文件 参数: anim_source : string 模型的文件路径(.gis)
def play_anim_seq | ( | self, | |
anim_seq | |||
) |
播放序列动画 (一组按照固定顺序连续播放的骨骼动画),序列信息来自ags文件,由模型编辑器编辑 参数 : anim_seq : string 序列动画名称 返回值 : bool 播放是否成功
def register_anim_key_event | ( | self, | |
anim, | |||
key, | |||
callback, | |||
data = None |
|||
) |
注册模型动作关键帧回调事件响应函数. 参数: anim : int或string 动作名称 key : string 关键帧事件 callback : func(neox_ref, anim_name, key, [data]) 回调函数 其中neox_ref为引擎内部参数,请误使用。 提示:回调函数中对self进行操作,可将self传入data中. data : 回调函数的数据 说明: 多次调用此函数,条件满足时,将会有多次事件回调。
def register_seq_end_event | ( | self, | |
callback, | |||
multiple = True , |
|||
data = None |
|||
) |
注册模型动作序列结束回调事件响应函数. 参数: callback : func(neox_ref, [data]) 回调函数 其中neox_ref为引擎内部参数,请误使用。 提示:回调函数中对self进行操作,可将self传入data中. multiple : bool 是否多次响应 data : 回调函数的数据 说明: 多次调用此函数,条件满足时,将会有多次事件回调。
def set_submesh_visible | ( | self, | |
submesh, | |||
visible = True |
|||
) |
设置子模型的可见性 参数: submesh : int或string 子模型索引或名字 visible : bool 是否可见
def stop_animation | ( | self ) |
停止播放当前骨骼动画
def unbind_bone | ( | self, | |
binding | |||
) |
解除绑定空间对象 参数: binding : 3种空间对象(model3d, fx3d, space_movie) 如果是空间对象,表示解除此空间对象
def set_submesh_texture | ( | self, | |
submesh, | |||
tex_file | |||
) |
设置子模型的贴图 说明:目前只支持一层贴图,多层贴图请通过编辑器设置. 参数: submesh : int或string 子模型索引或名字 tex_file : string 贴图文件路径
alpha = property(_get_alpha, _set_alpha) [static] |
透明度.
int 0-255 读写.
name = property(_get_name) [static] |
名字.
str 只读.
size = property(_get_size) [static] |
包围盒大小.
(x, y, z) 只读.
idx = property(_get_idx) [static] |
用于场景查询的索引标识.
str 只读.
bounding_box = property(_get_bounding_box) [static] |
包围盒大小(局部空间).
bounding_radius = property(_get_bounding_radius) [static] |
包围球半径(局部空间).
float 只读
anim_rate = property(_get_anim_rate, _set_anim_rate) [static] |
骨骼动作播放速度倍率.
float 读写. 一个模型所有动作共用的速度值,1.0为正常值.