之前经常需要在 Unity 里画贝塞尔曲线与 Catmull-Rom 曲线,当时特意封装了一个工具类,以方便使用。 二阶贝塞尔曲线 二阶贝塞尔曲线由起点、终点,再加一个控制点构成。曲线上任意一点的坐标与当前进度的关系如公式: 代码 public class BezierCurveTool { /// <……

很久之前某 VR 项目需要用手柄控制物体旋转、缩放等功能,并且要求有 MRTK 一样的控制框。简单说说我显示这个框以及计算缩放、旋转的思路。 画边框和控制点 生成的控制框分为两部分,一部分是线条,另一部分是供拖拽使用的控制点。 当物体发生缩放、旋转操作时,线条与控制点实际尺寸不变(即边框的物理大小不变),姿态……

之前需要做拓扑排布与流量展示,我研究了两种算法,其中一种是力导向图排布算法。我简单说说力导向图的思路以及为什么要使用 ComputeShader。 原理展示 我使用立方体代表节点,下面是两种算法的排布预览,本文只讨论后者。 1. 基于领域的排布图(本文不讨论) 2. 3D力导向排布图(排布中,暂未达到最优位置……

这是一个 ComputeShader 结合 Shader 实现粒子喷泉的例子。 通过 ComputeShader 计算喷泉粒子的位置,并通过 Shader 将其绘制出来。 效果 原理 生成指定数量具有随机速度的点数据,ComputeShader 中将其初速度与重力加速度叠加,并根据存活时间粗略计算其位置,之后……

这是一个 ComputeShader 结合 Shader 实现下雪的例子。我们通过 ComputeShader 并行计算每个雪粒子的位置,并通过 Shader 将其绘制出来。 效果 原理 通过 ComputeShder 并行计算每个粒子位置,并将 Buffer 与 Shader 共享,Shader 在对应位置……