(本视频转载自YouTube:视频原址)
体素雕刻向来以高多边形数量的模型著称。SculptrVR的八叉树系统能够减少三角形,但其数量仍然很多。为了获得良好的体验,SculptrVR必须能够在屏幕上推送大量三角形。在Quest上,我可以实现最高350000个三角形,并且保持稳如磐石的72 fps立体帧率。不幸的是,这使得默认的UE4光照模型成本有点高了。
在SculptrVR中创建并使用本文所述的高效移动光照渲染的模型。
简单的默认光照着色器单是选择一种颜色并把它拖到底色中都要经过数百次运算。即使选中了“完全粗糙(Fully Rough)”,默认光照材质也只能满足在Quest的屏幕上渲染约50000个三角形的要求。要想得到良好的雕塑体验,这是不够的。
所以我没有使用默认的UE4光照,而是使用无光照的自发光材质构建了我自己的Phong光照。这个材质看起来成本很高,但是只需要17次运算。

让我们来了解一下这里发生了什么:
首先请注意,它支持三种不同的材质类型:粘土、金属和发光。粘土模仿的是完全粗糙材质,金属是有光泽和反光的,发光是粘土加上一个恒定的发光量。这种材质类型是在每个顶点颜色的8位环境信道中编码的。
场景由一个定向光源和一个环境天空盒照亮(其实SculptrVR中的天空盒用的是相同的环境分段代码,但常量略有不同)。我使用Blinn-Phongu光照得到有高光亮点的漫反射光照,并添加了来自解析天空盒的环境光源。
这个结果与一个顶点颜色和一个逐顶点环境光遮蔽(AO)项相乘。AO项是在CPU上使用体素锥体跟踪的自定义变体对每个顶点计算得到的。
让我们看看每个光照分量:
漫反射:

高光度:

环境:

自发光:

总体光照:

调整参数以实现动态的天空
在你移动太阳时,太阳位置、太阳颜色、天顶颜色、地平线颜色和地面颜色都会动态变化,如以下视频所示。(本视频转载自YouTube:视频原址)
颜色都是完全根据太阳方向的Z分量存储在曲线表中的。这些表格经过了手动微调,可以配合SculptrVR的调色板提供良好的亮度和对比度。
见上图:白色金属、绿色发光、和青色粘土材质。请注意,虽然物体都是纯色的,但你仍能感受到不少形状信息。
在SculptrVR中,每个材质都是自发光的,使用此材质函数在光照中做乘法。有些材质/模型使用顶点颜色,有些带纹理,但它们都可以得到一致的光照。
希望这篇文章能对大家有用,你们可以直接利用它或以此为起点制作自己的变体。感谢阅读。