Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/特效/序列帧.md
2025-03-17 13:24:39 +08:00

726 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebarDepth: 1
---
# 序列帧
## Bind
<span style="display:inline;color:#7575f9">客户端</span>
<span id="0"></span>
method in mod.client.component.frameAniEntityBindComp.FrameAniEntityBindComp
- 描述
绑定entity
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| bindEntityId | str | 绑定的entity的ID |
| offset | tuple(float,float,float) | 绑定的偏移量 |
| rot | tuple(float,float,float) | 绑定的旋转角度 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniEntityBind(frameEntityId)
comp.Bind(entityId, (0, 1, 0), (0, 0, 0))
```
<span id="1"></span>
method in mod.client.component.frameAniSkeletonBindComp.FrameAniSkeletonBindComp
- 描述
绑定骨骼模型
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| modelId | int | 绑定的骨骼模型的ID见model组件的GetModelId |
| boneName | str | 绑定具体骨骼的名称 |
| offset | tuple(float,float,float) | 绑定的偏移量 |
| rot | tuple(float,float,float) | 绑定的旋转角度 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniSkeletonBind(frameEntityId)
comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0))
```
## CreateEngineSfx
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.system.clientSystem.ClientSystem
- 描述
创建序列帧特效
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| path | str | 特效资源路径,不用后缀名 |
| pos | tuple(float,float,float) | 创建位置可选没传则可以创建完用frameAniTrans组件设置 |
| rot | tuple(float,float,float) | 角度可选没传则可以创建完用frameAniTrans组件设置 |
| scale | tuple(float,float,float) | 缩放系数可选没传则可以创建完用frameAniTrans组件设置 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int或None | frameEntityId或者None |
- 备注
- 创建序列帧后可以用返回的frameEntityId创建序列帧分类中的相关组件设置所需属性以实现各种表现效果
- 切换维度后会自动隐藏非本维度创建的而且没有绑定实体的序列帧, 回到该维度后会自动重新显示
- 需要注意序列帧创建之后需要调用frameAniControl组件的play函数才会播放,如果播放非本维度创建的序列帧,会同时修改该序列帧的创建维度为当前维度
- 示例
```python
import mod.client.extraClientApi as clientApi
class MyClientSystem(ClientSystem):
# 创建
def createSfx(self):
frameEntityId = self.CreateEngineSfx("textures/sfxs/snow_3")
frameAniTransComp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
frameAniTransComp.SetPos((10,10,10))
frameAniTransComp.SetRot((0,0,0))
frameAniTransComp.SetScale((1,1,1))
frameAniControlComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
frameAniControlComp.Play()
# 删除
def removeSfx(self, frameEntityId):
self.DestroyEntity(frameEntityId)
```
## CreateEngineSfxFromEditor
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.system.clientSystem.ClientSystem
- 描述
指使用资源包中effects/xxx.json按照编辑器中编辑好的参数创建序列帧。支持环状序列帧
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| path | str | 特效配置路径,需要为"effects/xxx.json""xxx"为编辑器创建序列帧时填写的名称 |
| pos | tuple(float,float,float) | 创建位置可选没传则可以创建完用frameAniTrans组件设置一般需要设置播放的位置 |
| rot | tuple(float,float,float) | 角度可选没传则可以创建完用frameAniTrans组件设置 |
| scale | tuple(float,float,float) | 缩放系数可选没传则可以创建完用frameAniTrans组件设置 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| int或None | frameEntityId或者None |
- 备注
- 创建序列帧后可以用返回的frameEntityId创建序列帧分类中的相关组件设置所需属性以实现各种表现效果
- 需要注意序列帧创建之后需要调用frameAniControl组件的play函数才会播放
- 根据editor配置生成序列帧后还需要设置位置或绑定以及进行播放。
- 示例
```python
import mod.client.extraClientApi as clientApi
class MyClientSystem(ClientSystem):
# 创建
def createSfxFromEditor(self):
frameEntityId = self.CreateEngineSfxFromEditor("effects/mySfx.json")
frameAniTransComp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
frameAniTransComp.SetPos((10,10,10))
frameAniTransComp.SetRot((0,0,0))
frameAniTransComp.SetScale((1,1,1))
frameAniControlComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
frameAniControlComp.Play()
# 删除
def removeSfx(self, frameEntityId):
self.DestroyEntity(frameEntityId)
```
## GetPos
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
获取序列帧特效的位置
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 返回序列帧特效的世界坐标位置。 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.GetPos()
```
## GetRot
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
获取序列帧特效的旋转角度
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 返回序列帧特效的旋转角度。 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.GetRot()
```
## GetScale
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
获取序列帧特效的缩放值
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float,float) | 返回序列帧特效的缩放值。 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.GetScale()
```
## Pause
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
暂停播放序列帧定格在当前时刻再次调用Play时继续播放
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Pause()
```
## Play
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
播放序列帧
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Play()
```
## SetDeepTest
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧是否透视,默认为否
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| deepTest | bool | False表示透视则被物体/方块阻挡时仍然能看到序列帧 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为透视
comp.SetDeepTest(False)
```
## SetFaceCamera
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧是否始终朝向摄像机,默认为是
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| face | bool | True表示朝摄像机 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为不始终朝摄像机
comp.SetFaceCamera(False)
```
## SetFadeDistance
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧开始自动调整透明度的距离。序列帧与摄像机之间的距离小于该值时会自动调整序列帧的透明度,距离摄像机越近,序列帧越透明
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| fadeDistance | float | 自动调整透明度的距离,应为正数,负数将视作零来处理 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置该序列帧在与相机距离小于3时会自动调整透明度
comp.SetFadeDistance(3)
```
## SetLayer
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧渲染层级默认层级为1当层级不为1时表示该特效开启特效分层渲染功能。特效粒子和帧动画分层渲染时层级越高渲染越靠后层级大的会遮挡层级低的且同一层级的特效会根据特效的相对位置产生正确的相互遮挡关系。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| layer | int | 粒子渲染层级总共包含0-15的层级。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 备注
- 该接口只针对序列帧进行设置粒子特效请使用particleControl组件
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为渲染层级为2
comp.SetLayer(2)
```
## SetLoop
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧是否循环播放,默认为否
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| loop | bool | True表示循环播放 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为循环播放
comp.SetLoop(True)
```
## SetMixColor
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧混合颜色
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| color | tuple(float,float,float,float) | 颜色的RGBA值范围0-1 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置颜色为红色半透明
color = (1, 0, 0, 0.5)
comp.SetMixColor(color)
```
## SetPos
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
设置序列帧的位置
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| pos | tuple(float,float,float) | 世界坐标 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.SetPos((0, 5, 0))
```
## SetRot
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
设置序列帧的旋转
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| rot | tuple(float,float,float) | 按顺序绕局部坐标系的+x-y+z轴旋转的角度 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
# 绕y轴旋转90度然后绕z轴旋转90度
comp.SetRot((0, 90, 90))
```
## SetRotUseZXY
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
设置序列帧的旋转旋转顺序按照绕z,x,y轴旋转
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| rot | tuple(float,float,float) | 绕局部坐标系的+z+x+y轴旋转的角度旋转顺序按照绕z,x,y轴旋转。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
# 绕z轴旋转90度然后绕y轴旋转90度
comp.SetRotUseZXY((0, 90, 90))
```
## SetScale
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniTransComp.FrameAniTransComp
- 描述
设置序列帧的缩放
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| scale | tuple(float,float,float) | 对于平面序列帧,第一个参数为贴图横向上的缩放,第二个参数为纵向上的缩放,第三个参数无用。对于环状序列帧,为三个坐标轴上的缩放 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
# 横向拉伸为2倍纵向不变
comp.SetScale((2, 1, 1))
```
## SetUsePointFiltering
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
设置序列帧是否使用点滤波
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| use | bool | True为使用点滤波False为使用双线性插值默认使用 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 备注
- 使用点滤波的图像通常边缘清晰、可能会有较强烈的锯齿感;使用双线性插值的图像通常比较平滑、可能会使图像一定程度上变得模糊
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置该序列帧使用点滤波
comp.SetUsePointFiltering(True)
```
## Stop
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.frameAniControlComp.FrameAniControlComp
- 描述
停止序列帧(不是暂停)
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Stop()
```