【问题标题】:What kind of shader should I use to render hair我应该使用什么样的着色器来渲染头发
【发布时间】:2012-12-03 02:05:56
【问题描述】:

我有一个在 3Dmax 中看起来像这样的 3D 模型:

我开发了一个程序(C# XNA/OpenGL)来读取 3D 模型并应用材质,所以它看起来像这样:

但是模型是由 facegen 创建的,头发在 facegen 中看起来像这样:

所以我的问题是我应该使用哪种着色器来渲染头发,使其看起来像 Facegen 中的那样。

欢迎评论、关键字、点击、示例、教程或代码。

我的平台

Windows 7 64 位 C# 或 C++ XNA 或 Directx 或 OPENGL

【问题讨论】:

  • 一个起点:GPU Gems 2, Chapter 23.
  • 下次我要向理发师要一个镶嵌贝塞尔曲线。
  • 谢谢,杰瑞,我去看看。

标签: opengl graphics 3d xna shader


【解决方案1】:

您可以在此处的 nVidia 示例中找到一个名为 Nalu 的 nVidia 头发演示:https://developer.nvidia.com/nvidia-graphics-sdk-11-direct3d。使用的着色器称为 Marschner 着色器,您可以在 Google 上搜索有关它的更多信息。当然,还有许多其他的头发渲染技术和许多其他着色器。

还有一个专门介绍头发渲染资源的博客http://hairrendering.wordpress.com/ 有很好的信息。

【讨论】:

  • 谢谢 Pop,我很感激。
【解决方案2】:

一个很好的技术是使用粒子来制作头发,但不是渲染点而是渲染线条。

一种方法是一次性渲染整个粒子生命周期,而不是在特定时间渲染特定点。与贝塞尔曲线一起使用,您可以获得一些非常逼真的头发。您甚至可以更进一步,模拟吹头发的风等,只需使用顶点场或类似的东西来操纵粒子的路径

【讨论】:

  • 感谢您的提示,Moore91
【解决方案3】:

乍一看,facegen 看起来只是根据纹理使用 alpha 混合放置头发多边形,而 UNLIT 则很难发现透明的排序问题。头发方法的选择取决于许多考虑因素,包括渲染器的种类(前向/延迟)、所需的性能、是否愿意对头发多边形(或块)进行排序......

Marschner 方法非常好,但也很复杂。如果您只想快速简单,请尝试按照我所描述的 alphablending。

【讨论】:

  • 是的,Marathoner 过滤器在我的 Macbook Pro 上为我提供了 14FPS。我会检查 alphablending,谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
相关资源
最近更新 更多