本帖最后由 鬼蟬 于 2020-4-13 13:19 编辑
增补!
原来这份法线数据不是天上掉下来的!ModEnc百科里对VPL有如下介绍
在过去,每个法线值的法线方向并不为人们所知。VXL编辑器诞生之后,大家可以改变每一个体素点的法线值,但是究竟要改成什么更多来源于经验、互相借鉴以及试错,好看的素材往往需要制作者经过非常非常长时间的对法线的盲试才能做出来。
Bglman在2004年四月28日发现了法线的数值,革命性地推动了vxl制作和对法线的理解,使得制作者们不再需要通过瞎猜来确定法线值,并且使得自动法线功能突飞猛进。
原帖在OpenRA论坛已经无法打开,但是追根溯源还是要感谢这位叫Bglman的外国网友!
一些废话不看也不影响食用
从最初接触VXL制作到现在可能已经有8年了吧,中间当然退坑了很长一段时间。近日观Mk视频有感,又开始回来做素材。由于个人的制作习惯一般默认是手动法线来着,所以做着做着觉得以前的法线计算器还是不够顺手(链接:第一版,第二版),而且界面太过粗糙了,这才萌生了要大刀阔斧改进计算器的想法。至于手动法线这个技术,向来一直都是非常冷门的东西,可以搜到的作品也寥寥无几,现在主流中的主流当然是运用色差技术,辅以杂色之类的,最多最多在需要的地方手动法线一下。这样的主流技法,做出来的素材就有一种模拟后来3D渲染引擎的环境光遮蔽之类的效果,质感也更光滑圆润,线条流畅。但是对于不是很精通的制作者来说,难免会在一些需要表现棱角分明的地方遇到困难。其实手动法线这套方法,也确实很难和今天大部分的素材相结合,所以也没指望这个东西能被多少人利用起来,也就是想借这个东西告诉大家两件事,其一是原来素材还可以这么做,其二是原来法线色是这么个意思。毕竟对于我们modder来说,把一个东西做完善自嗨就是最开心的事情了,不是么?
关于VXL法线
大家都知道法线色(normals)是在体素文件(vxl)中用来表示体素点“朝向”的,这个体素点的朝向面向越接近游戏引擎设定的光源方向一般就会越亮,某一个这个明暗变化的情况则是由voxel.vpl定义的。在RA2的引擎中体素的法线总共有244种,其中240种有用,意味着这个引擎里总共可以为体素点定义出240种互不相同的朝向,而这些朝向差不多能均匀地分布到整个球面上,这样才能使得游戏引擎能够将模型的不同块面关系用正确的明暗显示出来。手动法线技术
Voxel Section Editor自带的越来越完善的自动法线和平滑法线功能,其实已经足以满足95%的vxl制作需求了。但是这里就要提一下Iowa3在手动法线方面的开拓工作[1](图1),虽然8年过去这个坑他自己并没有填,但是也是在这篇帖子中Iowa3最先确定了法线可以手动画,而且能表现出自动法线表现不出来的一些特殊结构这样的概念,也激起了我对这个技法的探索欲望。
图1 Iowa3 在手动法线方面的开拓性工作
法线色的探索工作一开始也是很曲折的,基本只能靠取色,但是取色得来的法线到底是不是对并不得而知只能靠猜测,毕竟自动法线的程序对我们大多数人来说就是个黑箱,另一方面,通过取色所能得到的法线色也非常非常有限。为了解决这个问题,同样还是Iowa3同志,和坛友Dennis一起,用3DS MAX转了一个VXL球体,第一次探明了240种法线色在球面上的完整分布[2]。尽管如此,这样一个VXL本身还远未达到便于应用的程度,仅仅只是一个理论上的突破。在这个帖子的7#楼我将这240种法线色从vxl球上取色,建立经纬坐标系,并测算了全部240种法线的具体朝向,并新开了一个帖子发布了第一代计算器[3],对我个人而言,这是第一次让240种法线变得有意义的进展。在这里也重新介绍一下我建立的坐标系:以vxl模型自身视角出发,车头朝向为前,上下左右以此类推。通过经度定义法线方位角,正面方向是0°经度,左侧是90°,右侧是-90°,背后是180°。再以纬度定义法线俯仰角,水平就是0°,上方就是90°经度(图2)。
图2 法线方向经纬坐标系的定义
第一版计算器存在两个问题,其一是法线指向其实是手动计算的,和真实方向 存在误差,其二是每输入一个经纬方向之后,需要 手动翻找最接近方向的法线,效率低下。这两个问题是依次解决的。首先是坛友owlcity发现了 3ds2vxl里有一个神秘文件[ 4],它用 笛卡尔坐标系详细记录了全部240种法线的真实指向,并且通过一点简单的三角函数就可以和我建立的经纬坐标系 互相换算。我当天就借用了他的发现,更正了我的第一版计算器。
在此基础上,在后续三个月的实际使用中,我将计算器进一步改进,发布了2.0版本[ 5]。第二版中,只需要在查询栏输入想查询的经纬坐标,就可以在旁边的结果中看到对应 法线色号。但是实际使用中还存在另一个问题,对于正面的、侧面的装甲,我们比较容易知道它朝的经纬方向是什么,但对于一些多面体中不与坐标轴平面平行的法线方向很难确定,为此新增了一个通过 三点共面的方式,即知道在这一个块面上的3个体素点坐标就能确定法线方向的方法。
第三版法线计算器
如同前言所说的,时隔7年,我又把这个坑挖出来了,那么现在的成果是这样的:
除了将中间计算和原始数据全部移动到其他表格以确保计算器界面的整洁以外,最重要的是增加了大量的新功能:
1) 对称计算 输入一个法线方向的经纬坐标之后,不仅计算出这一个坐标对应的法线色号,还将其沿着XY、XZ、YZ三个平面分别对称处理,一次性求出8个色号,这在制作具有这些方向对称性的素材时可以大量降低重复的计算,只需要把计算器开在边上看着选色就可以。
2) 向量加权平均 在两个不同朝向块面的接缝处,我个人习惯会增加一行过渡体素,它的朝向会介于两个块面之间,因此将两个块面的法向量方向进行1:1的加权平均就可以得到准确的过渡值,算是手法中的“平滑法线”。
3) 向量后仰翻转 如果在模型中存在一些部件是通过规整的多面体沿X轴向前后翻转得到的,它们各个块面的法线方向可以通过这个功能求得。
4) 三点共面 前面已经提到过就不多说了。
5) 指向查询 这算是攻破手法弧面的第一步,至少可以做小半径的球面了。只需要知道球面上的体素到球面中心的相对坐标,就能求出它的朝向。
6) 常用法线查询表 几乎涵盖了整个法线色盘中一半的色号,X环表示每22.5°为间隔的上-前-下-后方向圆环上的法线分布,Y环为前-左-后-右,Z环为上-左-下-右。立方盒是最最常用的几个色号,上中下三层基本可以想象成三阶魔方的26个表面方块对应的朝向。另外还有D=4球体和D=5球体的法线对照表,以上这些基本可以满足大部分小型弧面的法线需求了。
那么反正也不会有什么人要用,所以附件我就直接放出,不增设任何门槛了。如果哪天心血来潮我应该会做一个手动法线制作vxl模型的教程,也让各位大佬们多一种选择。
最后我稍微水一下,这是之前公开发表过的使用全手法制作的vxl模型,和主流的风格还是不太一样的,但很重要的一点是,手动法线并不意味着大方盒子和过于锐利的边缘,它和色差(在这里的作用其实是环境光遮蔽)和杂色(增添质感)完全不冲突,可以通过更多的修饰来让模型的完成度达到新的高度。
引用链接
[1] Iowa3:【法线党】今天建党啦! (2012-8-2)
[2] Iowa3:法线取色器(2013-5-4)
[3] 鬼蟬:法線計算器exl修正版(已更正)(2013-7-4)
[4] owlcity:这是什么东西,法线?(2013-7-4)
[5] 鬼蟬:【手法新福利】exl法線計算器v2.0(2013-10-23)
|