接口在编辑器中的拓展 前言 经常会希望在Unity编辑器中有这样一种功能的实现,可以直接引用(序列化)一个实现了指定接口的组件。 面向接口可以大大降低代码的耦合,实现依赖反转,同时更加灵活,后续的修改与扩展都更加方便。 但官方就是不做,可以从这个帖子中看到官方的态度。 所以下面就列举一下自己实现这个功能的各种方法。 问题描述 假使有这样一个接口 public interface ICanGetBool & 2023-06-15 编码 #接口 #编辑器工具
悬链线与弹簧质点模拟绳索 绳索模拟 最近有这么一个需求,模拟绳子。 如果是那种铰链之类的,可以直接用unity物理。如果是软体并且要求物理碰撞,那就得考虑Obi之类的用质点弹簧模型的解算器去解算了。 考虑到webGL也要用,Obi需求的求解器依赖于Burst,所以webgl没法使用。而且Obi不可控因素太多,为了一个简单的,无需物理的绳索动画,也没有必要使用太复杂的Obi。 还一种方式就是让美术在Blender,m 2023-06-15 编码 #模拟 #悬链线 #弹簧质点 #绳索
URP下厚度图的实现 屏幕空间厚度 总有一些时候需要获取特定模型的屏幕空间厚度,如次表面散射,透明渲染,或者最近项目中要求实现的X光效果。 Unity在2023.1的HDRP中提供了这一功能,经询问,URP暂无此计划。 翻阅HDRP的实现源码后才发现这个效果并没有那么复杂,性能损耗也没有想象中那么大,实现的方式很巧妙,遂决定在URP中复刻一下。 URP中的效果 HDRP中的实现 最关键的代码是一 2023-05-10 渲染 #URP #厚度图
物理 物理 流水账的记录一下Unity中和物理相关的一点坑 碰撞 碰撞体类型 静态碰撞体 刚体碰撞体 运动刚体碰撞体 没有刚体的称为静态,反之称为动态/刚体碰撞体。 刚体碰撞体再按照有咩有勾选运动(IsKinematic)分为普通刚体碰撞体和运动刚体碰撞体 复合碰撞体 需要在父物体触发OnCollider或者OnTrigger的话,父物体需要一个刚体。 MeshCollid 2023-04-24 其他 #物理
Lighting 前言 随便记一下HDRP中打光和烘培的一些要点和坑 光的来源 大致分实时光和烘焙光。 实时光 来自于实时平行光、点光等。 烘焙 可以是光照贴图,或者光照探针。 烘焙注意点 模型的光照UV是否合理 重叠 不相邻或者角度差距多大而UV却靠在一起 注意单面 尽量防止要渲染的面可以“看到”反面 注意单面处的阴影漏光(添加额外的提供阴影的物体) 室内场景注意 2023-02-24 渲染 #烘焙
HDRP中的次表面散射 前言 今天来研读一下HDRP的屏幕空间次表面散射的实现。 次表面散射 不多介绍了,就是模拟光线在介质中传播,常用于皮肤、植被、蜡烛等半透明的材质。 双向次表面散射反射率分部函数 bidirectional subsurface scattering reflectance distribution functio简称BSSRDF 从名字大致能看出来是和BSDF类似的,但是考虑了次表面散 2023-02-13 渲染 #SSS
布料模拟方案汇总 布料模拟 总结一下常见的布料模拟的方案 K动画 最传统,同时在某些特定场景下也是最简单有效的手段了,比如固定不动的随风摆动的窗帘。 没什么好说的,存粹看美术的工作量了。 绑定+动态骨骼 基于前一种,绑定好骨骼后,用物理模拟的方式去驱动骨骼的变化,进而模拟布料。 最知名的应该就是Dynamic Bone这个插件了。 能想到的场景比如人物的头发,裙摆等,都很适合这种方案。性能需求小,多 2023-02-10 其他 #布料 #模拟
线框绘制 线框渲染 最近写代码快写吐了,写点Shader缓解一下。 今天就复刻一个线框渲染吧,顺便温习一下几何着色器的用法。 参考列在前面 在unity中实现风格化线框渲染 几何着色器(Geometry Shader)的基础介绍以及简单示例 几种方式 总结一下各种实现的方法 生成线框模型 线框贴图 写入UV 利用GL来绘制线框 几何着色器 用几何着色器的LineS 2023-02-09 渲染 #Shader #线框 #几何着色器
语音转口型 前言 之前做GPT聊天时,用Live2D的简单的通过音量大小来驱动嘴型的大小变化,这里想更精确一定,用元音来驱动。 主要就是复刻了这位大佬的这篇文章。 大致思路 初看时被一堆术语吓到了,什么频域信息、窗函数、高斯滤波器、DCT变换、共振峰等等。 耐心一点一点看就发现还是比较简单的,很多算法并不一定要从新造轮子去实现,知道其目的就好了。 获取语音数据的频域信息 这里直接用AudioSo 2023-02-08 编码 #口型 #语音
OpenAI微调模型测试 前言 之前只是使用了现成的OpenAI的模型,每次调用都要给出一大堆的重复提示词,而且效果也不是太好,这次尝试用其称为微调(fine-tuning)来训练个新的模型。可以节省token,顺便看看微调后的模型效果和之前有多大区别。 OpenAI已经给出了详尽的说明,下面就只记录下具体的步骤。 安装 直接在容器里操作吧,不想污染主机。 起一个python的环境。 version: &quo 2023-02-07 其他 #OpenAI