在虚拟次元的世界里面,虚拟3D与真人结合的场景越来越多,虚拟数字人的发展也是一阵阵的热潮, 他们赋予人真实的情感和陪伴,时时牵动我们万千的思绪,也让我们的世界即便是在虚拟中也变得更加喧嚣和魔幻。诚然,今天小编,结伴2022年冬奥吉祥物萌娃“冰墩墩”在同一虚拟次元下欢动起来。
一、前期准备:资产集成
角色素材 :冰墩墩3D模型
抠图功能器(借鉴):
(1) Chromakey Shader(Git Hub): https://github.com/otdavies/UnityChromakey
二、概念明晰
1、 抠图基础原理 :针对一个像素点进行判断,如果是需要剔除的像素,就把该像素的透明(A)通道改为0,即变为透明的操作。其实本身的透明化操作是简单的,但是实际上抠图效果最繁琐就是,就是需要解决边缘锯齿问题,其中也有也会利用各种插值化进行优化。然而咱们这次是重点应用在Unity中,利用Unity材质的Shader,对RGBA值进行判定,例如选定目标颜色(绿色/蓝色),根据程序判定,把物体的材质区域绿色大于一定阀值,蓝色/红色小于一定阀值,那么设置该部分材质的A 透明通道位0,从而实现功能。
2、 渲染环境URP (Universal Render Pileline):URP是一种预置的可编程渲染管线,基于物理的光照和材质。
3、Video Player component:基于Unity自带的视频播放组件。 学习链接: https://docs.unity.cn/cn/current/Manual/class-VideoPlayer.html
三、实战应用
1、项目工程创建,主要包括冰墩墩角色、足球场景集成。
2、创建真人显示板
2.1 在Unity Editor中创建Plane面板,并设置合适大小和位置、角度。
2.2 引入ChromaKey Shader,设置抠图材质,关键属性说明。
KeyColor :目标颜色值(目标被抠图颜色值)
TintColor :原始颜色值(非抠图颜色值)
Cutoff 设置透明度0-1(不透明-透明)
ColorFeatering :彩色羽化(选定范围的图边缘达到朦胧的效果,羽化值越大,朦胧越大)
Sharpening :锐利度,默认0.5
DespillStrength :色彩强度,默认0.5
DespillLuminanceAdd :除雾亮度增加,默认为0
RenderQueue :渲染队列,默认3000+(透明)
2.3 附加Video Player 组件,指定抠图材质和目标视频。
3、运行预览效果。(这次是属于预置的视频结合的,后续可以直接启动摄像头的画面,把摄像机流转为Render Texture,轻松实现实时渲染真人的互动)
相关实战练习工程已直接上传在Github上,感兴趣的小伙伴可以下载一起学习哈。
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐