# 模型
# 索引
包括骨骼模型相关接口
接口 | 描述 | |
---|---|---|
BindItemToBone | 客户端 | 将使用了骨骼模型的玩家的手持物绑定到指定的骨骼上 |
BindModelToEntity | 客户端 | 实体替换骨骼模型后,再往上挂接其他骨骼模型。 |
BindModelToModel | 客户端 | 在骨骼模型上挂接其他骨骼模型 |
CancelAllBoneMask | 客户端 | 取消动画中的所有骨骼屏蔽。 |
CreateFreeModel | 客户端 | 创建自由的模型(无需绑定Entity) |
GetAllBindModelToEntity | 客户端 | 获取实体上某个骨骼上挂接的所有骨骼模型的id |
GetAnimLength | 客户端 | 获取某个骨骼动画的长度,单位为秒 |
GetBonePositionFromMinecraftObject | 客户端 | 获取原版模型的骨骼世界坐标 |
GetBoneWorldPos | 客户端 | 获取骨骼的坐标 |
GetEntityBoneWorldPos | 客户端 | 获取换了骨骼模型的实体的骨骼坐标 |
GetEntityScale | 服务端 | 获取实体的放缩比例大小 |
GetExtraUniformValue | 客户端 | 获取在骨骼模型shader中使用的自定义变量Uniform的值 |
GetModelId | 客户端 | 获取骨骼模型的Id,主要用于特效绑定骨骼模型 |
GetModelMaterial | 客户端 | 获取骨骼模型的正在使用的材质名称,也可获取骨骼模型中指定骨骼所使用的材质名称。如果获取指定骨骼所使用的材质,需要先在netease_model.json下设置"useSplitMeshes"字段为true。 |
GetModelName | 服务端 | 获取实体的模型名称 |
GetModelStyle | 客户端 | 获取模型类型 |
GetPlayingAnimList | 客户端 | 获取指定的骨骼模型中正处于播放状态的骨骼动画名称列表 |
GetTexture | 客户端 | 获取骨骼模型的贴图路径 |
HideModel | 客户端 | 隐藏纯模型 |
ModelPlayAni | 客户端 | 纯骨骼播放动作。 支持骨骼动画混合,可参考SetAnimationBoneMask接口以及RegisterAnim1DControlParam接口说明。 |
ModelStopAni | 客户端 | 暂停指定的骨骼动画 |
PlayAnim | 客户端 | 播放骨骼动画 |
RegisterAnim1DControlParam | 客户端 | 当同时播放多个骨骼动画时,新建用于控制动画进行1D线性混合的参数。目前线性混合仅支持对两个动画进行混合。新建的参数值范围为[0,1]。指定的骨骼将会按照这个参数的值对两个动画进行线性混合。 |
RegisterAnim1DMultiControlParam | 客户端 | 当同时播放多个骨骼动画时,注册用于根据权重控制多动画进行混合的参数 |
RemoveAnim1DMultiControlParam | 客户端 | 删除用于根据权重控制多动画进行混合的参数 |
RemoveFreeModel | 客户端 | 移除自由模型 |
ResetModel | 客户端 | 恢复实体为原版模型 |
SetAnim1DControlParam | 客户端 | 新建动画的1D控制参数后,使用该接口对相应的参数进行控制。 |
SetAnim1DMultiControlParam | 客户端 | 新建动画的1D控制参数后,设置用于根据权重控制多动画进行混合的参数 |
SetAnimLayer | 客户端 | 设置骨骼动画的层级,动画层级越大,则优先度越高,骨骼模型的骨骼优先播放优先度最高的动画,相同层级的动画则优先播放率先播放的动画。 |
SetAnimSpeed | 客户端 | 设置某个骨骼动画的播放速度 |
SetAnimationAllBoneMask | 客户端 | 设置是否屏蔽动画中所有骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。该接口会对该动画中所有骨骼生效,可通过参数ignoreBoneList来指定不受影响的骨骼名称。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。 |
SetAnimationBoneMask | 客户端 | 设置是否屏蔽动画中指定的骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。 |
SetBrightness | 客户端 | 设置实体的亮度 |
SetEntityOpacity | 客户端 | 设置骨骼模型的透明度,只能对骨骼模型生效,如果设置的是原版模型,则模型的影子会被隐藏。 |
SetEntityScale | 服务端 | 设置实体的放缩比例大小,设置比例过大会导致游戏卡顿,建议控制在20倍以内 |
SetEntityShadowShow | 客户端 | 设置实体打开/关闭影子渲染 |
SetExtraUniformValue | 客户端 | 设置shader中特定Uniform的值 |
SetFreeModelAniSpeed | 客户端 | 设置自由模型动画的播放速度 |
SetFreeModelBoundingBox | 客户端 | 设置自由模型的包围盒 |
SetFreeModelPos | 客户端 | 设置自由模型的位置 |
SetFreeModelRot | 客户端 | 设置自由模型的方向 |
SetFreeModelScale | 客户端 | 设置自由模型的大小 |
SetLegacyBindRot | 客户端 | 用于修复特效挂接到骨骼时的方向 |
SetModel | 服务端 | 设置骨骼模型 |
SetModel | 客户端 | 替换实体的骨骼模型 |
SetModelMaterial | 客户端 | 设置骨骼模型所使用的的材质,除了可以设置骨骼模型所使用的自定义材质以外,也可对单个骨骼设置所使用的自定义材质。如果需要设置单个骨骼所使用的材质,需要先在netease_model.json下设置"useSplitMeshes"字段为true。 |
SetModelMultiPassMaterial | 客户端 | 设置骨骼模型多pass中使用到的材质列表,也可对单个骨骼设置所使用的自定义多Pass材质。如果需要设置单个骨骼所使用的多Pass材质,需要先在netease_model.json下设置"useSplitMeshes"字段为true。 |
SetModelOffset | 服务端 | 设置骨骼模型相对于局部坐标系的偏移量,初始值为(0, 0, 0) |
SetModelOffset | 客户端 | 模型增加偏移量 |
SetModelPartVisible | 客户端 | 对骨骼模型中指定的骨骼进行渲染屏蔽,屏蔽后该骨骼不会被渲染出来。 |
SetModelPerspectiveEffect | 客户端 | 设置模型透视效果。注:只对自定义骨骼模型生效 |
SetModelTexture | 服务端 | 设置骨骼模型贴图,该接口与SetTexture功能相同,但属于服务端接口。 |
SetShowArmModel | 客户端 | 设置使用骨骼模型后切换至第一人称时是否显示手部模型。需要先为骨骼模型定义arm_model,arm_model的定义可参考demo示例-AwesomeMod中的resourcePack/models/netease_models.json中的大天狗模型定义 |
SetTexture | 客户端 | 设置骨骼模型的贴图,该接口与SetModelTexture功能相同,但属于客户端接口。 |
ShowCommonHurtColor | 服务端 | 设置挂接骨骼模型的实体是否显示通用的受伤变红效果 |
ShowCommonHurtColor | 客户端 | 设置挂接骨骼模型的实体是否显示通用的受伤变红效果 |
ShowModel | 客户端 | 显示纯模型 |
UnBindModelToEntity | 客户端 | 取消实体上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel |
UnBindModelToModel | 客户端 | 取消骨骼模型上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel |
# BindItemToBone
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
将使用了骨骼模型的玩家的手持物绑定到指定的骨骼上
参数
参数名 数据类型说明 modelId int 指定挂接的骨骼模型id boneName str 指定骨骼模型的骨骼名 bindSlot int 绑定手持物的slot,0为主手,1为副手,默认值为0 offset tuple(float,float,float) 偏移量,默认值为(0,0,0) rotation tuple(float,float,float) 旋转角度,默认值为(0,0,0) scale tuple(float,float,float) 缩放,默认值为(1,1,1) 返回值
数据类型说明 bool 是否设置成功 备注
- 旋转顺序为:先绕z轴的顺时针方向、再绕x轴的顺时针方向、最后绕y轴的逆时针方向
- 如果需要SetLegacyBindRot,需先调用SetLegacyBindRot,再调用本接口
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.BindItemToBone(1, "rightHand", 0, (2.5,0,2), (0,0,0), (1,1.5,1))
# BindModelToEntity
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
实体替换骨骼模型后,再往上挂接其他骨骼模型。
参数
参数名 数据类型说明 boneName str 挂接的骨骼名称 modelName str 要挂接的骨骼模型名称 offset tuple(float,float,float) 偏移量 rot tuple(float,float,float) 旋转 scale tuple(float,float,float) 缩放 返回值
数据类型说明 int 挂到骨骼上的骨骼模型的Id,失败返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 把名称为gun的骨骼模型挂接到rightHand骨骼上
gunModelId = comp.BindModelToEntity("rightHand", "gun")
# BindModelToModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
在骨骼模型上挂接其他骨骼模型
参数
参数名 数据类型说明 boneName str 挂接的骨骼名称 modelName str 要挂接的骨骼模型名称 返回值
数据类型说明 int 挂到骨骼上的骨骼模型的Id,失败返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(11)
# 把名称为gun的骨骼模型挂接到modelId为11的模型的rightHand骨骼上
gunModelId = comp.BindModelToModel("rightHand", "gun")
# CancelAllBoneMask
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
取消动画中的所有骨骼屏蔽。
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型 aniName str 动画名称 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.CancelAllBoneMask(modelId, "attack")
# CreateFreeModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
创建自由的模型(无需绑定Entity)
参数
参数名 数据类型说明 modelName str 模型名称 返回值
数据类型说明 int 创建成功返回 modelId,创建失败返回 0 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
model = comp.CreateFreeModel(modelName)
# GetAllBindModelToEntity
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取实体上某个骨骼上挂接的所有骨骼模型的id
参数
参数名 数据类型说明 boneName str 要获取的骨骼名称 返回值
数据类型说明 list(int) 骨骼模型的id的列表 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelIds = comp.GetAllBindModelToEntity("rightHand")
# GetAnimLength
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取某个骨骼动画的长度,单位为秒
参数
参数名 数据类型说明 aniName str 骨骼动画名称 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 float 骨骼动画长度 示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 获取run动画的长度
animLength = comp.GetAnimLength('run')
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
modelId = 1
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
# 获取run动画的长度
animLength = comp.GetAnimLength('run', modelId)
# GetBonePositionFromMinecraftObject
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取原版模型的骨骼世界坐标
参数
参数名 数据类型说明 boneName str 骨骼名称 返回值
数据类型说明 tuple(float,float,float) 世界坐标, 未找到骨骼时返回None 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
pos = comp.GetBonePositionFromMinecraftObject("rightleg")
# GetBoneWorldPos
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取骨骼的坐标
参数
参数名 数据类型说明 boneName str 骨骼名称 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 tuple(float,float,float) 位置坐标 示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
bPos = comp.GetBoneWorldPos(boneName)
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
modelId = 1
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
bPos = comp.GetBoneWorldPos(boneName, modelId)
# GetEntityBoneWorldPos
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取换了骨骼模型的实体的骨骼坐标
参数
参数名 数据类型说明 entityId str 实体id boneName str 骨骼名称 返回值
数据类型说明 tuple(float,float,float) 位置坐标 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
bPos = comp.GetEntityBoneWorldPos(entityId, boneName)
# GetEntityScale
服务端
method in mod.server.component.scaleCompServer.ScaleComponentServer
描述
获取实体的放缩比例大小
参数
无
返回值
数据类型说明 float 比例因子 示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateScale(entityId)
result = comp.GetEntityScale()
# GetExtraUniformValue
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取在骨骼模型shader中使用的自定义变量Uniform的值
参数
参数名 数据类型说明 modelId int 需要查询的骨骼模型modelId uniformIndex int 需要设置的自定义变量的下标,值范围为1~4,分别对应Shader中的EXTRA_VECTOR1,EXTRA_VECTOR2,EXTRA_VECTOR3,EXTRA_VECTOR4 返回值
数据类型说明 tuple(float,float,float,float) 返回的对应自定义变量的值。获取失败则返回None。 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelId = comp.GetModelId()
# 获取该骨骼模型shader中使用的EXTRA_VECTOR1这个自定义变量的值
print comp.GetExtraUniformValue(modelId, 1)
# 获取该骨骼模型shader中使用的EXTRA_VECTOR4这个自定义变量的值
print comp.GetExtraUniformValue(modelId, 4)
# GetModelId
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取骨骼模型的Id,主要用于特效绑定骨骼模型
参数
无
返回值
数据类型说明 int 当前骨骼模型实例的id 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelId = comp.GetModelId()
# GetModelMaterial
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取骨骼模型的正在使用的材质名称,也可获取骨骼模型中指定骨骼所使用的材质名称。如果获取指定骨骼所使用的材质,需要先在netease_model.json下设置"useSplitMeshes"字段为true。
参数
参数名 数据类型说明 modelId int 需要进行设置材质操作的骨骼模型Id。 boneName str 骨骼模型中的骨骼名称。默认值为空字符串。 返回值
数据类型说明 list(str) 正在使用的材质名称列表 备注
- 如果需要查询的骨骼模型开启了骨骼拆分,即在netease_model.json下设置"useSplitMeshes"字段为true后,使用该接口查询骨骼模型的材质时,如果不指定boneName,则此时获取的是本体模型正在使用的材质。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 创建大天狗骨骼模型。
modelId = comp.SetModel("datiangou")
# 所有使用到的自定义材质都需已定义在resource_pack/materials/entity.material中。
# 查询骨骼模型正在使用的材质。
print comp.GetModelMaterial(modelId)
# 查询骨骼模型中指定骨骼正在使用的材质。
# 注意,需要用户先在资源包resource_pack/model/netease_model.json中对骨骼模型配置字段"useSplitMeshes"为true以及"splitBonesGroup"中指定了该骨骼,该效果才会生效,否则不生效。
print comp.GetModelMaterial(modelId, "L_wing01")
# GetModelName
服务端
method in mod.server.component.modelCompServer.ModelComponentServer
描述
获取实体的模型名称
参数
无
返回值
数据类型说明 str 模型名称 备注
- 在服务端获取,客户端不生效
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
modelName = comp.GetModelName()
# GetModelStyle
客户端
method in mod.client.component.actorRenderCompClient.ActorRenderCompClient
描述
获取模型类型
参数
无
返回值
数据类型说明 str normal 表示正常,slim 表示纤细,custom表示自定义 备注
- 当玩家的模型被个性化皮肤、接口等修改为非Steve、Alex的其他类型后,返回custom。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.GetModelStyle()
# GetPlayingAnimList
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取指定的骨骼模型中正处于播放状态的骨骼动画名称列表
参数
参数名 数据类型说明 modelId int 骨骼模型Id 返回值
数据类型说明 list(str) 骨骼动画名称列表 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
playingAnimList = comp.GetPlayingAnimList(modelId)
# GetTexture
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
获取骨骼模型的贴图路径
参数
参数名 数据类型说明 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 str 贴图路径, 以textures\models为当前路径的相对路径 示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
texturePath = comp.GetTexture()
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
modelId = 1
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
texturePath = comp.GetTexture(modelId)
# HideModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
隐藏纯模型
参数
参数名 数据类型说明 modelId int 要隐藏的modelId 返回值
数据类型说明 None 无返回值 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.HideModel(modelId)
# ModelPlayAni
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
纯骨骼播放动作。 支持骨骼动画混合,可参考SetAnimationBoneMask接口以及RegisterAnim1DControlParam接口说明。
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型。 aniName str 要设置的动画名称 isLoop bool 是否循环播放,默认为 False isBlended bool 播放时是与当前动画混合还是中止当前动画的播放,默认False,即中止当前动画播放。设置为True时,将允许即将播放的动画进行混合。注意,动画混合仅在相同层级的动画之间进行。若当前播放的动画与即将播放的动画层级不一样,则isBlended参数无效。 layer int 设置骨骼动画的层级,范围为0~255,默认为0。注意,如果播放的动画已经存在,则会将原有的动画层级覆盖。动画层级越大,则优先度越高,骨骼模型的骨骼优先播放优先度最高的动画。 返回值
数据类型说明 bool 设置是否成功 备注
- 在动画的层级相同的情况下,动画的优先度播放顺序则首先按照:1.是否与需要其他动画进行混合。2.是否率先播放 这两个因素来先后决定。例如,我们首先对动画A,动画B使用接口RegisterAnim1DControlParam注册1D线性混合参数alpha, 然后对动画A和动画C使用接口RegisterAnim1DControlParam注册线性混合参数beta。接着,先后播放动画A, 动画C,动画B,动画D。这时,由于动画A,动画C具有混合需要,并且率先播放,因此骨骼模型会率先播放动画A和动画C的混合动画(注意,1D线性混合参数的初始值为0,因此此时混合动画的表现还是动画A),如果此时再暂停动画C,则会播放动画A与动画B的混合动画。接着暂停动画B,则会播放动画A,最后再暂停动画A,则才会播放动画D。
- 如动画需要参与混合,必须将isBlended设为True,否则可能会出现调用RegisterAnim1DControlParam或RegisterAnim1DMultiControlParam接口返回值异常或功能失效的情况
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ModelPlayAni(modelId, 'run', True, False, 0)
# ModelStopAni
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
暂停指定的骨骼动画
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型 aniName str 动画名称 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ModelStopAni(modelId, "attack")
# PlayAnim
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
播放骨骼动画
参数
参数名 数据类型说明 aniName str 动画名称 isLoop bool 是否循环播放 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.PlayAnim("run", True)
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
modelId = 1
comp.PlayAnim("run", True, modelId)
# RegisterAnim1DControlParam
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
当同时播放多个骨骼动画时,新建用于控制动画进行1D线性混合的参数。目前线性混合仅支持对两个动画进行混合。新建的参数值范围为[0,1]。指定的骨骼将会按照这个参数的值对两个动画进行线性混合。
参数
参数名 数据类型说明 modelId int 骨需要设置的模型id,包括实体模型以及自由模型。 leftAniName str 混合的第一个动画名称,当1D参数的值为0时指定的骨骼仅播放这个动画。 rightAniName str 混合的第二个动画名称,当1D参数的值为1时指定的骨骼仅播放这个动画。 paramName str 自定义的1D参数名称。该参数新建后的初始值为0。 返回值
数据类型说明 bool 设置是否成功 备注
- 注意,如果对某个骨骼使用了骨骼屏蔽,则这个1D线性混合将对该骨骼不会生效。另外,如果在使用该接口时新建一个已经存在的参数名称,则会将原来的参数覆盖。
- 在动画的层级相同的情况下,动画的优先度播放顺序则首先按照:1.是否与需要其他动画进行混合。2.是否率先播放 这两个因素来先后决定。例如,我们首先对动画A,动画B使用接口RegisterAnim1DControlParam注册1D线性混合参数alpha, 然后对动画A和动画C使用接口RegisterAnim1DControlParam注册线性混合参数beta。接着,先后播放动画A, 动画C,动画B,动画D。这时,由于动画A,动画C具有混合需要,并且率先播放,因此骨骼模型会率先播放动画A和动画C的混合动画(注意,由于1D线性混合参数的初始值为0,因此此时混合动画的表现还是动画A),如果此时再暂停动画C,则会播放动画A与动画B的混合动画。接着暂停动画B,则会播放动画A,最后再暂停动画A,则才会播放动画D。
- 另一种需要注意的情况:如果我们首先对动画A,动画B使用接口RegisterAnim1DControlParam注册1D线性混合参数alpha, 然后对动画A和动画C使用接口RegisterAnim1DControlParam注册线性混合参数beta。接着,先后播放动画A, 动画B,动画C。这时,我们调用SetAnim1DControlParam接口设置参数beta的值为0.5。此时模型仍然是播放动画A,这是由于动画A和动画B具有混合需求并且率先播放的,即率先凑齐了参数混合两个动画,因此此时模型实际上是在进行动画A和动画B的混合,但是由于alpha的值为0,因此模型还是表现为动画A,如果此时再用SetAnim1DControlParam接口设置参数alpha的值为0.5,则能够看到动画A和动画B的混合动画了。
示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 新建1D控制参数,用于对attack和walk这两个动画进行线性混合,参数的名称为“arm_control_param”。
comp.RegisterAnim1DControlParam(modelId, "attack", "walk", "arm_control_param")
# 相继播放这两个动画,设置isBlend为True,开启动画混合。
comp.ModelPlayAni(modelId, "attack", True, True)
comp.ModelPlayAni(modelId, "walk",True, True)
# 改变1D控制参数的值,两个动画将根据该值进行线性混合。可根据实际情况进行动态调整。
comp.SetAnim1DControlParam(modelId, "arm_control_param", 0.5)
# RegisterAnim1DMultiControlParam
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
当同时播放多个骨骼动画时,注册用于根据权重控制多动画进行混合的参数
参数
参数名 数据类型说明 modelId int 模型id paramName str 自定义的多动作混合参数名称 animList list(str) 需要混合的动作列表 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 相继播放这三个动画,设置isBlend为True,开启动画混合。
comp.ModelPlayAni(modelId, "attack", True, True)
comp.ModelPlayAni(modelId, "walk",True, True)
comp.ModelPlayAni(modelId, "run",True, True)
# 新建多动作混合控制参数,用于对attack、walk和run这三个动画根据权重进行混合,参数的名称为"multi_blend_key"。
comp.RegisterAnim1DMultiControlParam(modelId, "multi_blend_key", ["attack", "walk", "run"])
# 改变多动作混合控制参数的值,将根据dict中每个动画的权重进行混合。可根据实际情况进行动态调整。
comp.SetAnim1DMultiControlParam(modelId, "multi_blend_key", {"walk":0.5, "run":0.3, "attack":0.2})
# RemoveAnim1DMultiControlParam
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
删除用于根据权重控制多动画进行混合的参数
参数
参数名 数据类型说明 modelId int 模型id paramName str 自定义的多动作混合参数名称 返回值
数据类型说明 bool 设置删除成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.RemoveAnim1DMultiControlParam(modelId, "multi_blend_key")
# RemoveFreeModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
移除自由模型
参数
参数名 数据类型说明 modelId int 要移除的modelId 返回值
数据类型说明 bool 是否成功移除 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.RemoveFreeModel(modelId)
# ResetModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
恢复实体为原版模型
参数
无
返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ResetModel()
# SetAnim1DControlParam
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
新建动画的1D控制参数后,使用该接口对相应的参数进行控制。
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型。 paramName str 使用接口RegisterAnim1DControlParam所新建的自定义1D参数名称。该参数新建后的初始值为0。 value float 参数的值,范围为[0,1]。当1D参数的值为0时仅播放接口RegisterAnim1DControlParam中的leftAniName参数指定的动画,当1D参数的值为1时仅播放接口RegisterAnim1DControlParam中的rightAniName参数指定的动画 返回值
数据类型说明 bool 设置是否成功 备注
- 注意,如果对某个骨骼使用了骨骼屏蔽,则这个1D线性混合将对该骨骼不会生效。
示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 新建1D控制参数,用于对attack和walk这两个动画进行线性混合,参数的名称为“arm_control_param”。
comp.RegisterAnim1DControlParam(modelId, "attack", "walk", "arm_control_param")
# 相继播放这两个动画,设置isBlend为True,开启动画混合。
comp.ModelPlayAni(modelId, "attack", True, True)
comp.ModelPlayAni(modelId, "walk",True, True)
# 改变1D控制参数的值,两个动画将根据该值进行线性混合。可根据实际情况进行动态调整。
comp.SetAnim1DControlParam(modelId, "arm_control_param", 0.5)
# SetAnim1DMultiControlParam
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
新建动画的1D控制参数后,设置用于根据权重控制多动画进行混合的参数
参数
参数名 数据类型说明 modelId int 模型id paramName str 自定义的多动作混合参数名称 animWeightDict dict 动作权重表,可在表中设置每个动作的混合权重 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 相继播放这三个动画,设置isBlend为True,开启动画混合。
comp.ModelPlayAni(modelId, "attack", True, True)
comp.ModelPlayAni(modelId, "walk",True, True)
comp.ModelPlayAni(modelId, "run",True, True)
# 新建多动作混合控制参数,用于对attack、walk和run这三个动画根据权重进行混合,参数的名称为"multi_blend_key"。
comp.RegisterAnim1DMultiControlParam(modelId, "multi_blend_key", ["attack", "walk", "run"])
# 改变多动作混合控制参数的值,将根据dict中每个动画的权重进行混合。可根据实际情况进行动态调整。
comp.SetAnim1DMultiControlParam(modelId, "multi_blend_key", {"walk":0.5, "run":0.3, "attack":0.2})
# SetAnimLayer
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置骨骼动画的层级,动画层级越大,则优先度越高,骨骼模型的骨骼优先播放优先度最高的动画,相同层级的动画则优先播放率先播放的动画。
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型 aniName str 动画名称 layer int 动画层级, 正整数,范围为0~255 返回值
数据类型说明 bool 设置是否成功 备注
- 注意,设置层级相同的情况下不会改变当前的优先播放序列。举个例子:当前存在动画A及动画B,动画A的层级为1,动画B的层级为0,此时骨骼模型播放的动画为动画A。如果将动画A的层级设置为0,即动画A及动画B的层级相同,则当前仍然会播放动画A,因为层级相同的情况下不会改变目前的优先播放序列。要想让骨骼模型播放动画B,则需要动画B的层级比动画A的层级高。
示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetAnimLayer(modelId, "attack", 1)
# SetAnimSpeed
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置某个骨骼动画的播放速度
参数
参数名 数据类型说明 aniName str 骨骼动画名称 speed float 速度倍率 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# run动作三倍速
comp.SetAnimSpeed("run", 3.0)
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
modelId = 1
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
# run动作三倍速
comp.SetAnimSpeed("run", 3.0, modelId)
# SetAnimationAllBoneMask
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置是否屏蔽动画中所有骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。该接口会对该动画中所有骨骼生效,可通过参数ignoreBoneList来指定不受影响的骨骼名称。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型 aniName str 动画名称 ignoreBonesList list(str) 忽视的骨骼名称列表。在这个列表中的骨骼将不会被影响。输入空列表时则对所有骨骼执行这次设置。 enable bool 是否启用该骨骼的动画。True为不屏蔽,启动该骨骼的动画。False为屏蔽,不启动该骨骼的动画。 applyToChild bool True为对ignoreBoneList中的骨骼的子骨骼也生效,False为仅对ignoreBoneList中的骨骼生效,默认为True。若ignoreBoneList为空列表,则applyToChild无效果。 返回值
数据类型说明 bool 设置是否成功 备注
- 在使用该接口屏蔽上下半身的动画时,如果骨骼当中存在root骨骼,并且root骨骼的子骨骼包含上下半身的骨骼的话,root骨骼往往会控制整体骨骼模型的移动,要注意root骨骼对其他骨骼的影响。
示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 屏蔽名为attack动画中所有骨骼的动画,"l_arm"及"r_arm"这两个不受影响,其子骨骼也不受影响
comp.SetAnimationAllBoneMask(modelId, "attack", ["l_arm", "r_arm"], False, True)
# SetAnimationBoneMask
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置是否屏蔽动画中指定的骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。
参数
参数名 数据类型说明 modelId int 需要设置的模型id,包括实体模型以及自由模型 aniName str 动画名称 boneNamesList list(str) 骨骼名称列表 enable bool 是否启用该骨骼的动画。True为不屏蔽,启动该骨骼的动画。False为屏蔽,不启动该骨骼的动画。 applyToChild bool True为对该骨骼及其子骨骼生效,False为仅对该骨骼生效,默认为True 返回值
数据类型说明 bool 设置是否成功 备注
- 在使用该接口屏蔽上下半身的动画时,如果骨骼当中存在root骨骼,并且root骨骼的子骨骼包含上下半身的骨骼的话,root骨骼往往会控制整体骨骼模型的移动,要注意root骨骼对其他骨骼的影响。
示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 屏蔽名为attack动画中的"l_arm"及"r_arm"的骨骼的动画,对其子骨骼也生效
comp.SetAnimationBoneMask(modelId, "attack", ["l_arm", "r_arm"], False, True)
# SetBrightness
客户端
method in mod.client.component.brightnessCompClient.BrightnessCompClient
描述
设置实体的亮度
参数
参数名 数据类型说明 brightness float 0:纯黑
1:正常亮度
1-14:较亮甚至纯白
超过14:通常为纯白,即使数值改变也没有明显变化返回值
数据类型说明 bool True:设置成功 False:设置失败 备注
- 目前只支持修改替换了骨骼模型的实体亮度,使用游戏原生模型的实体暂不予支持。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBrightness(entityId)
success = comp.SetBrightness(0.5)
# SetEntityOpacity
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置骨骼模型的透明度,只能对骨骼模型生效,如果设置的是原版模型,则模型的影子会被隐藏。
参数
参数名 数据类型说明 opacity float 透明度值,取值范围为[0, 1],值越小越透明 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetEntityOpacity(0.2)
# SetEntityScale
服务端
method in mod.server.component.scaleCompServer.ScaleComponentServer
描述
设置实体的放缩比例大小,设置比例过大会导致游戏卡顿,建议控制在20倍以内
参数
参数名 数据类型说明 entityId str 要设置的实体 scale float 比例因子 返回值
数据类型说明 int 成功返回1,失败返回-1 备注
- 该接口支持设置实体替换骨骼模型后的大小,以及受minecraft:scale组件影响的原版模型(如矿车,三叉戟则无效)
- 使用该接口设置大小后,则不再受minecraft:scale组件控制
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateScale(entityId)
result = comp.SetEntityScale(entityId, scale)
# SetEntityShadowShow
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置实体打开/关闭影子渲染
参数
参数名 数据类型说明 flag bool True为打开影子渲染,False为关闭影子渲染 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetEntityShadowShow(False)
# SetExtraUniformValue
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置shader中特定Uniform的值
参数
参数名 数据类型说明 modelId int 要设置的modelId uniformIndex int 要设置的uniform下标,目前支持4个,范围为1到4。分别对应Shader中的EXTRA_VECTOR1,EXTRA_VECTOR2,EXTRA_VECTOR3,EXTRA_VECTOR4 vec4data tuple(float,float,float,float) 要设置的vec4的值。初始值为(0.0, 0.0, 0.0, 0.0) 返回值
数据类型说明 bool 是否设置成功 备注
- 若在游戏运行过程中修改shader文件,需要调用clientApi.ReloadAllShaders()或者重启游戏才会生效
示例
# python代码:
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelId = comp.GetModelId()
#可向shader传rgba代表红色
comp.SetExtraUniformValue(modelId, 1, (1.0, 0.0, 0.0, 1.0))
// shader代码(分两步):
//第一步, include头文件
#include "uniformExtraVectorConstants.h"
//第二步, shader中直接使用设置的值
void main()
{
vec4 pythonColor = EXTRA_VECTOR1;
...(此处省略无关代码)
}
# SetFreeModelAniSpeed
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置自由模型动画的播放速度
参数
参数名 数据类型说明 modelId int 要设置的modelId aniName str 要设置的动画名称 speed float 播放速度,速度上限为动画帧数,正负数效果相同 返回值
数据类型说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(clientApi.GetLevelId())
# 在玩家脚下位置创建自由模型
playerId = clientApi.GetLocalPlayerId()
posComp = clientApi.GetEngineCompFactory().CreatePos(playerId)
playerPos = posComp.GetPos()
modelId = comp.CreateFreeModel("alloy_barrier_1_1_set")
comp.SetFreeModelPos(modelId, playerPos[0], playerPos[1]-3, playerPos[2])
# 需要模型对应的动画在播放才能设置动画速度
comp.ModelPlayAni(modelId, "recover", True)
comp.SetFreeModelAniSpeed(modelId, "recover", 10)
# SetFreeModelBoundingBox
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置自由模型的包围盒
参数
参数名 数据类型说明 modelId int 要设置的modelId min tuple(float,float,float) 包围盒最小点 max tuple(float,float,float) 包围盒最大点 返回值
数据类型说明 bool 成功返回True,失败返回False 备注
- min的元素一定要比对应的max的元素小。
- 模型包围盒用于判断渲染剔除:判断一个模型要不要渲染,要看它在不在视野范围内,也就是看游戏摄像机的视锥体(摄像机拍到的范围)和这个包围盒有没有交集。有则说明在视野范围内,反之则不在视野范围内。进而可以剔除掉该模型,不进行渲染。 例如创建的自由模型显示上的大小是3x3x3个方块,那么需要将包围盒大小也设置为3x3x3,否则,如果包围盒比较小,例如使用了默认的1x1x1包围盒,那么当模型处于屏幕的边缘,模型就会不渲染。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.SetFreeModelBoundingBox(modelId, (-1, -0.9, -0.8), (1, 1, 1))
# SetFreeModelPos
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置自由模型的位置
参数
参数名 数据类型说明 modelId int 要设置的modelId x float 要设置的位置X轴参数 y float 要设置的位置Y轴参数 z float 要设置的位置Z轴参数 返回值
数据类型说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.SetFreeModelPos(modelId, 0, 0, 0)
# SetFreeModelRot
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置自由模型的方向
参数
参数名 数据类型说明 modelId int 要设置的modelId x float 沿X方向的旋转参数 y float 沿Y方向的旋转参数 z float 沿Z方向的旋转参数 返回值
数据类型说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.SetFreeModelRot(modelId, 0, 0, 0)
# SetFreeModelScale
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置自由模型的大小
参数
参数名 数据类型说明 modelId int 要设置的modelId x float 沿X方向的比例因子 y float 沿Y方向的比例因子 z float 沿Z方向的比例因子 返回值
数据类型说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.SetFreeModelScale(modelId, 1, 1, 1)
# SetLegacyBindRot
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
用于修复特效挂接到骨骼时的方向
参数
参数名 数据类型说明 enable bool 设置为False时,可以使特效与骨骼方向一致 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 bool 设置是否成功 备注
- 在挂接特效前调用即可
示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetLegacyBindRot(False)
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
modelId = 1
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.SetLegacyBindRot(False, modelId)
# SetModel
服务端客户端
# 服务端接口
method in mod.server.component.modelCompServer.ModelComponentServer
描述
设置骨骼模型
参数
参数名 数据类型说明 modelName str 模型名称,值为""时重置模型 返回值
数据类型说明 bool 设置结果 示例
#设置名称
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModel("xuenv")
# 客户端接口
method in mod.client.component.modelCompClient.ModelComponentClient
描述
替换实体的骨骼模型
参数
参数名 数据类型说明 modelName str 骨骼模型的名称 返回值
数据类型说明 int 替换的骨骼模型实例的id。失败返回-1 备注
- 要恢复原版模型请使用ResetModel接口
- 使用客户端组件更换模型不会同步及存盘,仅是纯客户端表现,如需要同步及存盘,请使用服务器的model组件
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModel("xuenv")
# SetModelMaterial
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置骨骼模型所使用的的材质,除了可以设置骨骼模型所使用的自定义材质以外,也可对单个骨骼设置所使用的自定义材质。如果需要设置单个骨骼所使用的材质,需要先在netease_model.json下设置"useSplitMeshes"字段为true。
参数
参数名 数据类型说明 modelId int 需要进行设置材质操作的骨骼模型Id。 material str 需要设置的自定义材质的名称。该材质为GPU骨骼渲染下所使用的材质,大多数情况下只会使用到这个材质。 materialcpu str 需要设置的自定义材质的名称,该材质为针对部分低端机设备所使用的CPU蒙皮材质,大多数情况下不会使用到这个参数,默认值为空字符串。如果该参数为空,或者所填入的CPU材质名称不存在,则会使用GPU材质替代。因此此时如果GPU材质设置成功,则接口也会返回True. boneName str 骨骼模型中的骨骼名称。默认值为空字符串。 返回值
数据类型说明 bool 设置是否成功 备注
- CPU蒙皮材质的说明可看自定义材质,目前大多数设备都不会用到CPU蒙皮材质,仅在部分低端安卓设备中会使用CPU蒙皮材质。如果开发者如无需要,都可以不设置CPU蒙皮材质。如开发者有需要,则可以参考官方骨骼模型材质data/vanilla_netease/materials/entity.material中的”entity_for_skeleton_cpu“制作自己的CPU蒙皮材质。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 创建大天狗骨骼模型。
modelId = comp.SetModel("datiangou")
# 所有使用到的自定义材质都需已定义在resource_pack/materials/entity.material中。
# 对该骨骼模型设置自己所定义的材质。
print comp.SetModelMaterial(modelId, "my_custom_mat")
# 对该骨骼模型设置自己所定义的材质及低端设备使用到的CPU蒙皮材质。
print comp.SetModelMaterial(modelId, "my_custom_mat", "my_custom_mat_cpu")
# 对该骨骼模型中的某个骨骼设置自己所定义的材质。
# 注意,需要用户先在资源包resource_pack/model/netease_model.json中对骨骼模型配置字段"useSplitMeshes"为true以及"splitBonesGroup"中指定了该骨骼,该效果才会生效,否则不生效。
print comp.SetModelMaterial(modelId, "my_custom_mat", "", "L_wing01")
# SetModelMultiPassMaterial
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置骨骼模型多pass中使用到的材质列表,也可对单个骨骼设置所使用的自定义多Pass材质。如果需要设置单个骨骼所使用的多Pass材质,需要先在netease_model.json下设置"useSplitMeshes"字段为true。
参数
参数名 数据类型说明 modelId int 需要进行设置材质操作的骨骼模型Id。 materialList list(str) 多pass所使用的材质列表。 materialCpuList list(str) 多pass所使用的CPU蒙皮材质列表。这些材质为针对部分低端机设备所使用的CPU蒙皮材质。默认值为None。大多数情况下不会使用到这个参数,如果该参数为None,或者为空列表,或者所填入的CPU材质名称不存在,则会使用GPU材质替代。因此此时如果GPU材质设置成功,则接口也会返回True. boneName str 骨骼模型中的骨骼名称。默认值为空字符串。 返回值
数据类型说明 bool 设置是否成功 备注
- 注意,材质列表中的首个材质将会覆盖骨骼模型原本的默认材质。例如,使用了SetModelMaterial接口设置了自定义材质A,再使用SetModelMultiPassMaterial设置多Pass材质B,C,D,则这个自定义材质A将会被B覆盖。骨骼模型此时生效的材质为B,C,D。
- CPU蒙皮材质的说明可看自定义材质,目前大多数设备都不会用到CPU蒙皮材质,仅在部分低端安卓设备中会使用CPU蒙皮材质。如果开发者如无需要,都可以不设置CPU蒙皮材质。如开发者有需要,则可以参考官方骨骼模型材质data/vanilla_netease/materials/entity.material中的”entity_for_skeleton_cpu“制作自己的CPU蒙皮材质。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 创建大天狗骨骼模型。
modelId = comp.SetModel("datiangou")
# 设置所使用的到的多pass材质列表
print comp.SetModelMultiPassMaterial(modelId, ["my_mat_default", "my_mat_for_pass_1", "my_mat_for_pass_2"])
# 对该骨骼模型中的某个骨骼设置自己所定义的多pass材质列表。
# 注意,需要用户先在资源包resource_pack/model/netease_model.json中对骨骼模型配置字段"useSplitMeshes"为true以及"splitBonesGroup"中指定了该骨骼,该效果才会生效,否则不生效。
print comp.SetModelMultiPassMaterial(modelId, ["my_mat_default", "my_mat_for_pass_1", "my_mat_for_pass_2"], None, "L_wing01")
# SetModelOffset
服务端客户端
# 服务端接口
method in mod.server.component.modelCompServer.ModelComponentServer
描述
设置骨骼模型相对于局部坐标系的偏移量,初始值为(0, 0, 0)
参数
参数名 数据类型说明 offset tuple(float,float,float) 偏移量 返回值
无
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelOffset((0, 3, 0))
# 客户端接口
method in mod.client.component.modelCompClient.ModelComponentClient
描述
模型增加偏移量
参数
参数名 数据类型说明 offset tuple(float,float,float) 偏移向量 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelOffset((0, 1, 0))
# SetModelPartVisible
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
对骨骼模型中指定的骨骼进行渲染屏蔽,屏蔽后该骨骼不会被渲染出来。
参数
参数名 数据类型说明 modelId int 需要进行屏蔽操作的骨骼模型Id。 boneName str 骨骼模型中的骨骼名称。 visible bool 显示或者屏蔽。True为显示,False为屏蔽 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 创建大天狗骨骼模型。
modelId = comp.SetModel("datiangou")
# 屏蔽指定骨骼
print comp.SetModelPartVisible(modelId, "r_wing01", False)
# 注意,需要用户先在资源包resource_pack/model/netease_model.json中对骨骼模型配置以下字段"useSplitMeshes"以及"splitBonesGroup",该接口才会生效,否则不生效。
# 例子:
# "datiangou": {
# "skeleton": "skeleton/datiangou_skeleton.json",
# "mesh": "mesh/datiangou_mesh.json",
# "animation": {
# "idle": "animation/datiangou_animation_run.json",
# "fengxi": "animation/datiangou_animation_fengxi.json",
# "run": "animation/datiangou_animation_run.json"
# },
# "arm_model": "datiangou_arm",
#
# // "useSplitMeshes"设为true时,读取该模型的时候将按bones来分别生成和存储mesh,而不会按以往方法来合成一整个mesh,
# // 分离mesh后,骨骼模型渲染时,也会按照所包含的meshes来逐个渲染,因此如果不是需要使用骨骼渲染屏蔽功能,建议不要将这个字段设置为true,否则会增加性能消耗。
# "useSplitMeshes": true,
# // 分离骨骼组
# "splitBonesGroup": {
# // 指定需要分离出来的骨骼名称,指定后能够使用SetModelPartVisible接口进行渲染屏蔽。需要与该骨骼模型的skeleton.json文件中存在的骨骼名称一致,大小写一致。
# "R_wing01":{},
# "L_wing01":{},
# "R_arm":{}
# }
# },
# SetModelPerspectiveEffect
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置模型透视效果。注:只对自定义骨骼模型生效
参数
参数名 数据类型说明 isPerspective bool 是否显示透视颜色 color tuple(float,float,float,float) 透视颜色的RGBA值,范围0-1 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelPerspectiveEffect(True, (1, 0.9, 0, 0.2))
# SetModelTexture
服务端
method in mod.server.component.modelCompServer.ModelComponentServer
描述
设置骨骼模型贴图,该接口与SetTexture功能相同,但属于服务端接口。
参数
参数名 数据类型说明 texture str 贴图路径,以textures\models为当前路径的相对路径 返回值
数据类型说明 bool 设置结果 示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelTexture("Osteve")
# SetShowArmModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置使用骨骼模型后切换至第一人称时是否显示手部模型。需要先为骨骼模型定义arm_model,arm_model的定义可参考demo示例-AwesomeMod中的resourcePack/models/netease_models.json中的大天狗模型定义
参数
参数名 数据类型说明 modelId int 模型id show bool 是否显示 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelId = comp.SetModel(“datiangou”)
# 隐藏手部模型
comp.SetShowArmModel(modelId, False)
# SetTexture
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置骨骼模型的贴图,该接口与SetModelTexture功能相同,但属于客户端接口。
参数
参数名 数据类型说明 texture str 贴图路径,以textures\models为当前路径的相对路径 modelId int 需要指定的模型id,默认为None,表示使用CreateModel时传入的entityID挂接的模型 返回值
数据类型说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
# 操作实体目前加载的模型
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetTexture("Osteve")
# 指定模型id,操作id对应的模型(创建组件时使用levelId)
import mod.client.extraClientApi as clientApi
modelId = 1
comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp.SetTexture("Osteve", modelId)
# ShowCommonHurtColor
服务端客户端
# 服务端接口
method in mod.server.component.modelCompServer.ModelComponentServer
描述
设置挂接骨骼模型的实体是否显示通用的受伤变红效果
参数
参数名 数据类型说明 show bool 是否显示 返回值
数据类型说明 bool 设置是否成功 备注
- 引擎默认打开该选项,需要改变受伤效果可以关闭之后再进行定制
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.ShowCommonHurtColor(True)
# 客户端接口
method in mod.client.component.modelCompClient.ModelComponentClient
描述
设置挂接骨骼模型的实体是否显示通用的受伤变红效果
参数
参数名 数据类型说明 show bool 是否显示 返回值
数据类型说明 bool 设置是否成功 备注
- 引擎默认打开该选项,需要改变受伤效果可以关闭之后再进行定制
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ShowCommonHurtColor(False)
# ShowModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
显示纯模型
参数
参数名 数据类型说明 modelId int 要显示的modelId 返回值
数据类型说明 None 无返回值 示例
import mod.client.extraClientApi as clientApi
## 当需要自由模型时,建议使用LevelId
# comp = clientApi.GetEngineCompFactory().CreateModel(levelId)
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ShowModel(modelId)
# UnBindModelToEntity
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
取消实体上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel
参数
参数名 数据类型说明 modelId int 要取消挂接的骨骼模型的id 返回值
数据类型说明 bool 取消挂接是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.UnBindModelToEntity(gunModelId)
# UnBindModelToModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
描述
取消骨骼模型上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel
参数
参数名 数据类型说明 modelId int 要取消挂接的骨骼模型的id 返回值
数据类型说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(11)
# subModelId已经绑定在modelId为11的骨骼模型上
comp.UnBindModelToModel(subModelId)