Insider Insider
3dnchu 尚无浏览 2 分钟阅读

StrokeGen: Realtime Contour Curve Generation – 与现有离线工具相比最高快800倍!?利用GPU实时绘制轮廓线的最新技术Unity原型实现项目已在Github公开!

利用在“EGSR 2022: The 33rd Eurographics Symposium on Rendering”上发表的论文“GPU-Driven Real-Time Mesh Contour Vectorization”实现的、利用GPU的实时轮廓线绘制方法“StrokeGen: Realtime Contour Curve Generation”的Github页面已公开。

StrokeGen: Realtime Contour Curve Generation

现有基于GPU的NPR方法(逆壳、后处理等)无法生成表现场景丰富的线画所必需的笔触曲线。

这里介绍作为EGSR2022发表论文“GPU-Driven Real-Time Mesh Contour Vectorization”的原型而实现的、从3D网格轮廓生成2D曲线的实时方法“StrokeGen”。

・与基于CPU的离线替代工具(Pencil+4、Line Art、Freestyle、Active Strokes)相比,实现最高800倍的加速。
・高效率:在1920×1080的画面分辨率下,对300k三角面网格所需时间仅为1ms。
・生成的笔触曲线可媲美这些基于CPU的方法。

StrokeGen 是研究原型,使用 Unity Engine 的 Universal Render Pipeline 开发。所有运行时处理都使用 HLSL 实现于GPU上(主要是计算着色器)。

要运行此项目

请确认硬件支持 DX12 和 HLSL Shader Model 6.0。
下载并安装 Unity Editor 2021.2.11f1(通过 Unity Hub 或这里)。

打开项目需要以下包。
官方:Core RP Library、Universal RP、Unity UI、Mathematics;
第三方:Odin Inspector

打开 Assets/Scenes/SampleScene.unity。
将屏幕分辨率设置为1920×1080。
点击 Play。

GPU-Driven Real-Time Mesh Contour Vectorization

渲染三维网格的轮廓具有广泛的应用。以往基于 CPU 的轮廓线渲染算法虽然支持高度风格化效果,但无法实现实时性能。另一方面,基于GPU的实时算法由于难以将轮廓要素与笔触曲线关联起来,不得不牺牲高度风格化效果。本文提出一种基于GPU的网格轮廓渲染方法,包括以下步骤。
(1) 在渲染之前,作为预处理阶段,从3D网格模型中解析邻接关系和几何信息。
(2) 在运行时,首先作为提取阶段,从3D网格模型中选择轮廓边,并通过并行化的 Bresenham 算法将轮廓边栅格化为定向轮廓像素。
(3) 接着,并行化 Potrace,从轮廓像素中提取(像素)边环。
(4) 然后,设计一种新的分段处理流程,将边环分割为笔触。除预处理外,所有处理都在GPU上并行执行。这使得在高密度网格模型的高分辨率渲染中实现实时性能成为可能。

GPU-Driven Real-Time Mesh Contour Vectorization

这是一个有趣的项目。公开的信息不多,但从截图来看感觉相当不错。我目前没有能立即试用的环境,所以想把它介绍给拥有 Unity 开发环境的人……希望有人能试试看。怀着这样的想法进行了介绍。

链接

JiangWZW/Realtime-GPU-Contour-Curves-from-3D-Mesh: A real-time, GPU-driven method to generate 2D curves from 3D mesh’s contour.

Screenshot of github.com