--- sidebarDepth: 1 --- # 模型 # 索引 包括骨骼模型相关接口 --- | 接口 |
| 描述 | | --- | --- | --- | | [BindModelToEntity](模型.md#bindmodeltoentity) | 客户端 | 实体替换骨骼模型后,再往上其他挂接骨骼模型。 | | [BindModelToModel](模型.md#bindmodeltomodel) | 客户端 | 在骨骼模型上挂接其他骨骼模型 | | [CancelAllBoneMask](模型.md#cancelallbonemask) | 客户端 | 取消动画中的所有骨骼屏蔽。 | | [CreateFreeModel](模型.md#createfreemodel) | 客户端 | 创建自由的模型(无需绑定Entity) | | [GetAllBindModelToEntity](模型.md#getallbindmodeltoentity) | 客户端 | 获取实体上某个骨骼上挂接的所有骨骼模型的id | | [GetAnimLength](模型.md#getanimlength) | 客户端 | 获取某个骨骼动画的长度,单位为秒 | | [GetBoneWorldPos](模型.md#getboneworldpos) | 客户端 | 获取骨骼的坐标 | | [GetEntityBoneWorldPos](模型.md#getentityboneworldpos) | 客户端 | 获取换了骨骼模型的实体的骨骼坐标 | | [GetEntityScale](模型.md#getentityscale) | 服务端 | 获取实体的放缩比例大小 | | [GetModelId](模型.md#getmodelid) | 客户端 | 获取骨骼模型的Id,主要用于特效绑定骨骼模型 | | [GetModelName](模型.md#getmodelname) | 服务端 | 获取实体的模型名称 | | [GetPlayingAnimList](模型.md#getplayinganimlist) | 客户端 | 获取指定的骨骼模型中正处于播放状态的骨骼动画名称列表 | | [GetTexture](模型.md#gettexture) | 客户端 | 获取骨骼模型的贴图路径 | | [HideModel](模型.md#hidemodel) | 客户端 | 隐藏纯模型 | | [ModelPlayAni](模型.md#modelplayani) | 客户端 | 纯骨骼播放动作。 支持骨骼动画混合,可参考SetAnimationBoneMask接口以及RegisterAnim1DControlParam接口说明。 | | [ModelStopAni](模型.md#modelstopani) | 客户端 | 暂停指定的骨骼动画 | | [PlayAnim](模型.md#playanim) | 客户端 | 播放骨骼动画 | | [RegisterAnim1DControlParam](模型.md#registeranim1dcontrolparam) | 客户端 | 当同时播放多个骨骼动画时,新建用于控制动画进行1D线性混合的参数。目前线性混合仅支持对两个动画进行混合。新建的参数值范围为[0,1]。指定的骨骼将会按照这个参数的值对两个动画进行线性混合。 | | [RemoveFreeModel](模型.md#removefreemodel) | 客户端 | 移除自由模型 | | [ResetModel](模型.md#resetmodel) | 客户端 | 恢复实体为原版模型 | | [SetAnim1DControlParam](模型.md#setanim1dcontrolparam) | 客户端 | 新建动画的1D控制参数后,使用该接口对相应的参数进行控制。 | | [SetAnimLayer](模型.md#setanimlayer) | 客户端 | 设置骨骼动画的层级,动画层级越大,则优先度越高,骨骼模型的骨骼优先播放优先度最高的动画,相同层级的动画则优先播放率先播放的动画。 | | [SetAnimSpeed](模型.md#setanimspeed) | 客户端 | 设置某个骨骼动画的播放速度 | | [SetAnimationAllBoneMask](模型.md#setanimationallbonemask) | 客户端 | 设置是否屏蔽动画中所有骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。该接口会对该动画中所有骨骼生效,可通过参数ignoreBoneList来指定不受影响的骨骼名称。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。 | | [SetAnimationBoneMask](模型.md#setanimationbonemask) | 客户端 | 设置是否屏蔽动画中指定的骨骼的动画,若开启骨骼屏蔽后,该骨骼将不再播放该动画中的动作。通过屏蔽指定骨骼的动画可实现同一个骨骼模型同时在不同骨骼上播放不同的动作动画,从而实现快捷的动作融合。 | | [SetBrightness](模型.md#setbrightness) | 客户端 | 设置实体的亮度 | | [SetEntityOpacity](模型.md#setentityopacity) | 客户端 | 设置骨骼模型的透明度,只能对骨骼模型生效,如果设置的是原版模型,则模型的影子会被隐藏。 | | [SetEntityScale](模型.md#setentityscale) | 服务端 | 设置实体的放缩比例大小,设置比例过大会导致游戏卡顿,建议控制在20倍以内 | | [SetEntityShadowShow](模型.md#setentityshadowshow) | 客户端 | 设置实体打开/关闭影子渲染 | | [SetExtraUniformValue](模型.md#setextrauniformvalue) | 客户端 | 设置shader中特定Uniform的值 | | [SetFreeModelAniSpeed](模型.md#setfreemodelanispeed) | 客户端 | 设置自由模型动画的播放速度 | | [SetFreeModelBoundingBox](模型.md#setfreemodelboundingbox) | 客户端 | 设置自由模型的包围盒 | | [SetFreeModelPos](模型.md#setfreemodelpos) | 客户端 | 设置自由模型的位置 | | [SetFreeModelRot](模型.md#setfreemodelrot) | 客户端 | 设置自由模型的方向 | | [SetFreeModelScale](模型.md#setfreemodelscale) | 客户端 | 设置自由模型的大小 | | [SetLegacyBindRot](模型.md#setlegacybindrot) | 客户端 | 用于修复特效挂接到骨骼时的方向 | | [SetModel](模型.md#setmodel) | 服务端 | 设置骨骼模型 | | [SetModel](模型.md#setmodel) | 客户端 | 替换实体的骨骼模型 | | [SetModelOffset](模型.md#setmodeloffset) | 服务端 | 设置骨骼模型相对于局部坐标系的偏移量,初始值为(0, 0, 0) | | [SetModelOffset](模型.md#setmodeloffset) | 客户端 | 模型增加偏移量 | | [SetModelPerspectiveEffect](模型.md#setmodelperspectiveeffect) | 客户端 | 设置模型透视效果。注:只对自定义骨骼模型生效 | | [SetModelTexture](模型.md#setmodeltexture) | 服务端 | 设置骨骼模型贴图,该接口与SetTexture功能相同,但属于服务端接口。 | | [SetShowArmModel](模型.md#setshowarmmodel) | 客户端 | 设置使用骨骼模型后切换至第一人称时是否显示手部模型。需要先为骨骼模型定义arm_model,arm_model的定义可参考demo示例-AwesomeMod中的resourcePack/models/netease_models.json中的大天狗模型定义 | | [SetTexture](模型.md#settexture) | 客户端 | 设置骨骼模型的贴图,该接口与SetModelTexture功能相同,但属于客户端接口。 | | [ShowCommonHurtColor](模型.md#showcommonhurtcolor) | 服务端 | 设置挂接骨骼模型的实体是否显示通用的受伤变红效果 | | [ShowCommonHurtColor](模型.md#showcommonhurtcolor) | 客户端 | 设置挂接骨骼模型的实体是否显示通用的受伤变红效果 | | [ShowModel](模型.md#showmodel) | 客户端 | 显示纯模型 | | [UnBindModelToEntity](模型.md#unbindmodeltoentity) | 客户端 | 取消实体上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel | | [UnBindModelToModel](模型.md#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 | - 示例 ```python 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 | - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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 | - 示例 ```python 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的列表 | - 示例 ```python 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 | 骨骼动画长度 | - 示例 ```python 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) | 位置坐标 | - 示例 ```python 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) | 位置坐标 | - 示例 ```python 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 | 比例因子 | - 示例 ```python 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 | - 示例 ```python import mod.client.extraClientApi as clientApi comp = clientApi.GetEngineCompFactory().CreateModel(entityId) modelId = comp.GetModelId() ``` ## GetModelName 服务端 method in mod.server.component.modelCompServer.ModelComponentServer - 描述 获取实体的模型名称 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | str | 模型名称 | - 备注 - 在服务端获取,客户端不生效 - 示例 ```python 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) | 骨骼动画名称列表 | - 示例 ```python 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为当前路径的相对路径 | - 示例 ```python 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 | 无返回值 | - 示例 ```python 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。 - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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的混合动画了。 - 示例 ```python 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 | 是否成功移除 | - 示例 ```python import mod.client.extraClientApi as clientApi comp = clientApi.GetEngineCompFactory().CreateModel(entityId) comp.RemoveFreeModel(modelId) ``` ## ResetModel 客户端 method in mod.client.component.modelCompClient.ModelComponentClient - 描述 恢复实体为原版模型 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 设置是否成功 | - 示例 ```python 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线性混合将对该骨骼不会生效。 - 示例 ```python 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的层级高。 - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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骨骼对其他骨骼的影响。 - 示例 ```python 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骨骼对其他骨骼的影响。 - 示例 ```python 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:设置失败 | - 备注 - 目前只支持修改替换了骨骼模型的实体亮度,使用游戏原生模型的实体暂不予支持。 - 示例 ```python 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],值越小越透明 | - 返回值 无 - 示例 ```python 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组件控制 - 示例 ```python 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为关闭影子渲染 | - 返回值 无 - 示例 ```python 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 # 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 | 是否成功设置 | - 示例 ```python 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包围盒,那么当模型处于屏幕的边缘,模型就会不渲染。 - 示例 ```python 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 | 是否成功设置 | - 示例 ```python 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 | 是否成功设置 | - 示例 ```python 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 | 是否成功设置 | - 示例 ```python 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 | 设置是否成功 | - 备注 - 在挂接特效前调用即可 - 示例 ```python 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 | 设置结果 | - 示例 ```python #设置名称 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组件 - 示例 ```python 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) | 偏移量 | - 返回值 无 - 示例 ```python 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) | 偏移向量 | - 返回值 无 - 示例 ```python 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 | - 返回值 无 - 示例 ```python 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 | 设置结果 | - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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 | 设置是否成功 | - 备注 - 引擎默认打开该选项,需要改变受伤效果可以关闭之后再进行定制 - 示例 ```python import mod.server.extraServerApi as serverApi comp = serverApi.GetEngineCompFactory().CreateModel(entityId) comp.ShowCommonHurtColor(True) ``` ### 客户端接口 method in mod.client.component.modelCompClient.ModelComponentClient - 描述 设置挂接骨骼模型的实体是否显示通用的受伤变红效果 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | show | bool | 是否显示 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 设置是否成功 | - 备注 - 引擎默认打开该选项,需要改变受伤效果可以关闭之后再进行定制 - 示例 ```python 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 | 无返回值 | - 示例 ```python 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 | 取消挂接是否成功 | - 示例 ```python 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 | 是否成功 | - 示例 ```python import mod.client.extraClientApi as clientApi comp = clientApi.GetEngineCompFactory().CreateModel(11) # subModelId已经绑定在modelId为11的骨骼模型上 comp.UnBindModelToModel(subModelId) ```