54 KiB
sidebarDepth
| sidebarDepth |
|---|
| 1 |
模型
索引
包括骨骼模型相关接口
| 接口 | 描述 | |
|---|---|---|
| BindModelToEntity | 客户端 | 实体替换骨骼模型后,再往上其他挂接骨骼模型。 |
| BindModelToModel | 客户端 | 在骨骼模型上挂接其他骨骼模型 |
| CancelAllBoneMask | 客户端 | 取消动画中的所有骨骼屏蔽。 |
| CreateFreeModel | 客户端 | 创建自由的模型(无需绑定Entity) |
| GetAllBindModelToEntity | 客户端 | 获取实体上某个骨骼上挂接的所有骨骼模型的id |
| GetAnimLength | 客户端 | 获取某个骨骼动画的长度,单位为秒 |
| GetBoneWorldPos | 客户端 | 获取骨骼的坐标 |
| GetEntityBoneWorldPos | 客户端 | 获取换了骨骼模型的实体的骨骼坐标 |
| GetEntityScale | 服务端 | 获取实体的放缩比例大小 |
| GetModelId | 客户端 | 获取骨骼模型的Id,主要用于特效绑定骨骼模型 |
| GetModelName | 服务端 | 获取实体的模型名称 |
| GetPlayingAnimList | 客户端 | 获取指定的骨骼模型中正处于播放状态的骨骼动画名称列表 |
| GetTexture | 客户端 | 获取骨骼模型的贴图路径 |
| HideModel | 客户端 | 隐藏纯模型 |
| ModelPlayAni | 客户端 | 纯骨骼播放动作。 支持骨骼动画混合,可参考SetAnimationBoneMask接口以及RegisterAnim1DControlParam接口说明。 |
| ModelStopAni | 客户端 | 暂停指定的骨骼动画 |
| PlayAnim | 客户端 | 播放骨骼动画 |
| RegisterAnim1DControlParam | 客户端 | 当同时播放多个骨骼动画时,新建用于控制动画进行1D线性混合的参数。目前线性混合仅支持对两个动画进行混合。新建的参数值范围为[0,1]。指定的骨骼将会按照这个参数的值对两个动画进行线性混合。 |
| RemoveFreeModel | 客户端 | 移除自由模型 |
| ResetModel | 客户端 | 恢复实体为原版模型 |
| SetAnim1DControlParam | 客户端 | 新建动画的1D控制参数后,使用该接口对相应的参数进行控制。 |
| SetAnimLayer | 客户端 | 设置骨骼动画的层级,动画层级越大,则优先度越高,骨骼模型的骨骼优先播放优先度最高的动画,相同层级的动画则优先播放率先播放的动画。 |
| SetAnimSpeed | 客户端 | 设置某个骨骼动画的播放速度 |
| SetAnimationAllBoneMask | 客户端 | 设置是否屏蔽动画中所有骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。该接口会对该动画中所有骨骼生效,可通过参数ignoreBoneList来指定不受影响的骨骼名称。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。 |
| SetAnimationBoneMask | 客户端 | 设置是否屏蔽动画中指定的骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。 |
| SetBrightness | 客户端 | 设置实体的亮度 |
| SetEntityOpacity | 客户端 | 设置骨骼模型的透明度,只能对骨骼模型生效,如果设置的是原版模型,则模型的影子会被隐藏。 |
| SetEntityScale | 服务端 | 设置实体的放缩比例大小,设置比例过大会导致游戏卡顿,建议控制在20倍以内 |
| SetEntityShadowShow | 客户端 | 设置实体打开/关闭影子渲染 |
| SetExtraUniformValue | 客户端 | 设置shader中特定Uniform的值 |
| SetFreeModelAniSpeed | 客户端 | 设置自由模型动画的播放速度 |
| SetFreeModelBoundingBox | 客户端 | 设置自由模型的包围盒 |
| SetFreeModelPos | 客户端 | 设置自由模型的位置 |
| SetFreeModelRot | 客户端 | 设置自由模型的方向 |
| SetFreeModelScale | 客户端 | 设置自由模型的大小 |
| SetLegacyBindRot | 客户端 | 用于修复特效挂接到骨骼时的方向 |
| SetModel | 服务端 | 设置骨骼模型 |
| SetModel | 客户端 | 替换实体的骨骼模型 |
| SetModelOffset | 服务端 | 设置骨骼模型相对于局部坐标系的偏移量,初始值为(0, 0, 0) |
| SetModelOffset | 客户端 | 模型增加偏移量 |
| 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 |
BindModelToEntity
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
实体替换骨骼模型后,再往上其他挂接骨骼模型。
-
参数
参数名 数据类型说明 boneName str 挂接的骨骼名称 modelName str 要挂接的骨骼模型名称 offset tuple(float,float,float) 偏移量 rot 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
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
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
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 骨骼动画名称 -
返回值
数据类型说明 float 骨骼动画长度 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 获取run动画的长度
animLength = comp.GetAnimLength('run')
GetBoneWorldPos
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
获取骨骼的坐标
-
参数
参数名 数据类型说明 boneName str 骨骼名称 -
返回值
数据类型说明 tuple(int,int,int) 位置坐标 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
bPos = comp.GetBoneWorldPos(boneName)
GetEntityBoneWorldPos
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
获取换了骨骼模型的实体的骨骼坐标
-
参数
参数名 数据类型说明 entityId str 实体id boneName str 骨骼名称 -
返回值
数据类型说明 tuple(int,int,int) 位置坐标 -
示例
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()
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()
GetModelName
服务端
method in mod.server.component.modelCompServer.ModelComponentServer
-
描述
获取实体的模型名称
-
参数
无
-
返回值
数据类型说明 str 模型名称 -
备注
- 在服务端获取,客户端不生效
-
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
modelName = comp.GetModelName()
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
-
描述
获取骨骼模型的贴图路径
-
参数
无
-
返回值
数据类型说明 str 贴图路径, 以textures\models为当前路径的相对路径 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
texturePath = comp.GetTexture()
HideModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
隐藏纯模型
-
参数
参数名 数据类型说明 modelId int 要隐藏的modelId -
返回值
数据类型说明 None 无返回值 -
示例
import mod.client.extraClientApi as clientApi
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。
-
示例
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
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ModelStopAni(modelId, "attack")
PlayAnim
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
播放骨骼动画
-
参数
参数名 数据类型说明 aniName str 动画名称 isLoop bool 是否循环播放 -
返回值
数据类型说明 bool 设置是否成功 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.PlayAnim("run", True)
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
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)
RemoveFreeModel
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
移除自由模型
-
参数
参数名 数据类型说明 modelId int 要移除的modelId -
返回值
数据类型说明 bool 是否成功移除 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
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
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)
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
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetAnimLayer(modelId, "attack", 1)
SetAnimSpeed
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
设置某个骨骼动画的播放速度
-
参数
参数名 数据类型说明 aniName str 骨骼动画名称 speed float 速度倍率 -
返回值
数据类型说明 bool 设置是否成功 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# run动作三倍速
comp.SetAnimSpeed("run", 3.0)
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
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
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
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
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
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
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
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
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetFreeModelScale(modelId, 1, 1, 1)
SetLegacyBindRot
客户端
method in mod.client.component.modelCompClient.ModelComponentClient
-
描述
用于修复特效挂接到骨骼时的方向
-
参数
参数名 数据类型说明 enable bool 设置为False时,可以使特效与骨骼方向一致 -
返回值
数据类型说明 bool 设置是否成功 -
备注
- 在挂接特效前调用即可
-
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetLegacyBindRot(False)
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")
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))
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为当前路径的相对路径 -
返回值
数据类型说明 bool 设置是否成功 -
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetTexture("Osteve")
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
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)