---
title: "Live2D平滑渐变方案"
author: "石心.Yong"
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/uwa-answer-live2d-smooth-gradient/
type: note
content_role: source
source_type: "source"
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/我的UWA问答/2021-06-05 - Live2D平滑渐变方案.md"
content_hash: 0c6a677a80d4c155a4e1916f9758a57dac520dc15481f4fd21c5528f31f71b26
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# Live2D平滑渐变方案

> **note · 我的 UWA 问答**
> 本文收录我在 UWA 问答发表的公开回答。问题内容归原提问者；回答保留当时语境，技术结论可能受 Unity 版本、平台和项目条件限制。

## 问题

Live2D官方提供的组件CubismRenderController通过设置Opacity可以设置Cubism的透明度,但是过渡很生硬,如下图

![327T`YU`6GJMIK2QAB3.png](/media/e1f5db423a99ac3a6446.png)

目前的方案是把Cubism通过RT渲染到面板上,通过控制面板透明度来达到平滑过渡效果,请问大家还有什么好的解决方案？

- 提问者：黑白凌乱
- 提问时间：2021-06-05 00:48:24

## 我的回答

所谓透明度“不平滑过度”，本质原因在于，原先的逻辑是 身体的每一个小部分单独应用cubism_ModelOpacity之后，各个部分再进行混合。核心代码如下：

![image.png](/media/8dfcfde4c18db37177c1.png)

身体是一部分一部分画的：

![image.png](/media/2eab3824b3cd7d4a7dea.png)

而题主要的效果是：在渲染出整体结果之后，再对整体应用透明效果。所以， ”全身绘制之后，再使用透明度处理一次“ 这一做法是必然的。本质是身体各部分绘制完成后，要取到FrameBuffer，然后使用透明度处理一次。因此”通过RT渲染到面板上，再控制面板的透明度的做法是合理“的。

所以题主的问题是，有没有更直接的方法，对这一过程进行优化。我这边还没有想到更好的优化方法，可能Builtin-RenderPipeline没有那么灵活，也或许可以考虑有没有优化的必要。

- 回答时间：2021-06-05 07:30:59
- 最后更新：2021-06-05 07:30:59
- 采纳状态：已采纳

## 来源与关系

- 上位集合：[我的 UWA 问答](https://www.pystone.net/notes/my-uwa-answers/)
- UWA 标签：Shader、渲染模块、终端平台
- 原始问题：[Live2D平滑渐变方案](https://answer.uwa4d.com/question/60b9e8d8608bed3338d78717)
- 源页最后更新：2021-06-05 07:30:59
