zoukankan      html  css  js  c++  java
  • 新的毛发渲染功能

    有关注过的朋友可能会知道,我的渲染器是基于光线追踪的,虽然以前的版本也有扫描线,但后来嫌同时维护两个渲染核心很辛苦,所以暂时改成纯raytracer了,所以这里新加入的毛发功能是基于后置处理的,方法很简单,就是用Z-BUFFER,然后毛发的光照模型我是直接用3ds max里面的各向异性标准材质,大家可能知道了这是一个3ds max的插件渲染器,所以我暂时没有用别的特别的模型,毛发的自阴影效果是用基于我自己的经验模型的伪阴影,其实原理就是深层的毛发光线接受的更少一些,非常简单,但是效果还可以接受,而且关键是用这种伪的方法渲染速度非常快,不需要shadow map或者deep shadow map或者体渲染技术等额外的计算。但是这种伪技术当然有限制,并不总能近似于真实的物理光照效果。而且因为是后置处理的,我还无法对毛发进行光线追踪,所以不能产生反射和折射效果,对毛发这么细微而数量巨大的物体进行光线追踪确实是一项挑战,我记得我很早以前就提过这个问题,到现在也没找到很好的方法,希望各位知道有什么好的方法能够给予指点,谢谢了先。插件的毛发的生成是采用3ds max里的面片进行造型,然后我的插件会把面片转换为毛发,因为我自己是学画画的,所以我认为用面片造型比用曲线造型更直观,更有体积感,观察起来也更见方便,修改发型也比较精确。我这里对毛发做的是类似REYES的vertex shading,也许做pixel shading会更细腻,但是毛发覆盖率比较大,如果要做pixel shading,先要做消隐才比较有效率,而我这里是先shading后消隐,当然了,可以借助类似REYES的occlusion culling等技术解决shading的浪费,这就有待以后提高了。
     
  • 相关阅读:
    flexible.js 移动端自适应方案
    Vue为什么不能检测数组变动
    Vue 组件间通信六种方式
    训练首个神经网络:基本分类
    对seq2seq的粗浅认识
    数学模型的过拟合和欠拟合
    在二叉树中寻找值最大的节点并返回——LintCode入门
    Android 包管理机制
    自定义View的三种实现方式及自定义属性使用介绍
    Paint.setFlags中flag意义及使用方法
  • 原文地址:https://www.cnblogs.com/len3d/p/752388.html
Copyright © 2011-2022 走看看