# 模型

# 索引

包括骨骼模型相关接口


接口
描述
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)