【虚拟仿真】Unity3D中模型的渐隐渐现效果实现
实现 模型 效果 仿真 虚拟 Unity3D
2023-09-11 14:19:57 时间
推荐阅读
一、前言
最近项目上要实现一个模型渐隐渐现的效果,研究了一下,分享出来。
这个主要是用到了Shader(但不用学)和DoTween动画插件。
文中示例代码简单明了,感兴趣的小伙伴可以参考一下。
二、效果展示及源码下载
源码下载:
https://download.csdn.net/download/q764424567/20079897
三、正文
界面没啥好说的:
代码:
using DG.Tweening;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TestDissolve : MonoBehaviour
{
public GameObject model;
private List<Material> materials = new List<Material>();
public Button Btn_FadeOut;
public Button Btn_FadeInt;
private void Start()
{
//获取材质
GetMeterials();
Btn_FadeOut.onClick.AddListener(FadeOut);
Btn_FadeInt.onClick.AddListener(FadeIn);
}
private void GetMeterials()
{
Material[] materals;
MeshRenderer[] meshRendererer = model.GetComponentsInChildren<MeshRenderer>();
foreach (var item in meshRendererer)
{
materals = item.materials;
foreach (Material m in materals)
{
if (!materials.Contains(m))
{
materials.Add(m);
}
}
}
for (int i = 0; i < materials.Count; i++)
{
Material m = materials[i];
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
m.SetInt("_ZWrite", 0);
m.DisableKeyword("_ALPHATEST_ON");
m.EnableKeyword("_ALPHABLEND_ON");
m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
m.renderQueue = 3000;
}
}
private void FadeOut()
{
for (int i = 0; i < materials.Count; i++)
{
Material m = materials[i];
Color color = m.color;
m.DOColor(new Color(color.r, color.g, color.b, 0), 3f);
}
}
private void FadeIn()
{
for (int i = 0; i < materials.Count; i++)
{
Material m = materials[i];
Color color = m.color;
m.DOColor(new Color(color.r, color.g, color.b,1), 3f);
}
}
}
效果:
四、后言
这个消融的shader看起来还是有点粗糙的,如果想要实现精细的shader效果,可以找shader程序员,不过对于虚拟仿真工业级别的显示还是可以用的。
相关文章
- solr全文检索实现原理
- 敏捷开发实现测试自动化的6个步骤
- 使用Whoosh构建自己的搜索引擎、whoosh和jieba实现中文全文检索
- PaddleHub2.0——使用动态图版预训练模型ERNIE实现文本匹配
- 使用canvas 的api 实现 图片的显示 及 压缩
- 【MATLAB教程案例33】基于高斯混合模型的视频背景提取算法的matlab仿真实现
- 基于motoharw平台的电机控制策略模型simulink仿真实现
- JavaScript - 实现点击按钮复制文本框内容到剪贴板(原生JS)
- 零代码实现接口自动化测试-RF框架实践
- 预测分析:R语言实现1.1 模型
- 大数据分析:机器学习算法实现的演化
- 10张流程图+部署图,讲透单点登录原理与简单实现
- 【玩转数据系列十二】PAI平台深度学习Caffe框架实现图像分类的模型训练
- keras搭建简单CNN模型实现kaggle比赛数字识别
- 基于C语言实现(控制台)学生管理系统【100010726】
- 用UILocalNotification实现一个闹钟(Swift)
- 《数据科学:R语言实现》——2.3 读取和写入CSV文件
- 《SQL与关系数据库理论——如何编写健壮的SQL代码》一一1.5 模型vs.实现
- php简单实现发微博动态
- 【Unity3D日常开发】Unity3D中实现手势控制模型放大缩小
- 【虚拟仿真】Unity3D中实现UI跟随3D模型旋转移动、UI一直面朝屏幕
- 【虚拟仿真】Unity3D中实现Slider控制模型的从上到下消失
- CYQ.Data 轻量数据访问层(七) 自定义数据表实现绑定常用的数据控件(上)
- Unity Shader 之 GL Mesh Shader 实现物体模型的线框效果(也适用于移动端)
- python实现排序算法
- 深度学习 Day 15——利用卷神经网络实现好莱坞明星识别
- Python第三方包aircv实现图片定位