插件的原型是ArtStation - Blender Addon - UVs/VCol Data Baker 原作者的插件功能非常丰富,感兴趣的话也欢迎支持原作者插件
这个插件是复刻原版插件的轴心烘焙功能的版本,因为其他功能目前我还没用到就先写到这了
插件的主要目的是解决在制作植物等多轴心物体时,合并物体后轴心丢失导致不能单独操作的问题
- 支持烘焙到uv通道和顶点色
- 支持通道压缩,通道混用
- 支持批量轴心重置
- 在release页面下载最新版本压缩包
- blender中进行安装或直接拖拽到script目录解压缩
- addon中启用插件
- 在侧栏Tool中可以找到插件面板
- Individual
可以独立操作xyz轴信息,主动选择将特定轴向信息写入到选定的通道中
如果使用了顶点色模式 vCol
, 则需要同时将自动计算出的 Pivot X Scale
值输入到解压缩的计算过程中,Blender文件里有提供一个GeometryNode作为解压缩计算的演示
- AB Pack
-
只支持轴向在
[-1,1]
范围内的情况 -
只支持写入UV
-
在
XY
XZ
YZ
中选择一个组合,按特定精度压缩后写入到选定的通道中,原作者的版本是支持自选两个通道进行组合,因为用不到XX
YY
YX
等这种非常规的情况,而且解压缩使用的时候也可以自己调整通道组合,所以压缩的时候就枚举了3种常用组合 -
AB Pack使用的压缩算法原型来自UE的
PackTwoNormalizedFloats
和UnpackTwoNormalizedFloats
不同的是压缩的时候做了[-1,1]
到[0,1]
的范围映射,解压缩的时候需要做相反的计算 -
压缩精度可选,数值越大,坐标偏差越少,但对UV通道精度要求也越大,这里给出一组随机坐标计算当作参考,其中
interval
就是实际存储在uv通道中的信息precision input output interval difference 2 (0.7202859774568633, -0.055844770385788944) (1.0, -1.0) 2 0.984718 4 (0.8508603456272517, -0.6544794505383809) (1.0, -0.33333333333333337) 13 0.354087 8 (-0.30984691836301437, 0.08626290333469866) (-0.4285714285714286, 0.1428571428571428) 20 0.131523 16 (0.10165067933280425, 0.5890218740711508) (0.06666666666666665, 0.6000000000000001) 140 0.036666 32 (0.004965980245656754, 0.5509319732597933) (0.032258064516129004, 0.5483870967741935) 536 0.027410 64 (-0.1218712886260771, -0.8792295489675745) (-0.11111111111111116, -0.873015873015873) 1796 0.012425 128 (0.4325878864928696, 0.8220580562311572) (0.4330708661417322, 0.8267716535433072) 11764 0.004738 256 (0.2637798338522055, 0.9003861702068061) (0.26274509803921564, 0.8980392156862744) 41458 0.002565 512 (-0.5983253121497414, -0.2636568232570078) (-0.5968688845401174, -0.264187866927593) 52924 0.001550 1024 (-0.2608911951791717, -0.9253242917747284) (-0.26099706744868034, -0.9257086999022482) 387110 0.000399 2048 (0.28402454782820663, 0.015105013856535843) (0.2838299951148022, 0.01514411333659016) 2692111 0.000198 4096 (0.9293613456197038, -0.3785726448157767) (0.9291819291819292, -0.37875457875457874) 16180472 0.000256 8192 (-0.5424315951472676, 0.9166846172969674) (-0.5424246123794408, 0.9167378830423636) 15359658 0.000054 -
关于解压缩,可以使用这个方法
-
def float_to_vec2(input_float, precision):
x = input_float // precision
y = input_float % precision
output = (x / (precision - 1) * 2 - 1, y / (precision - 1) * 2 - 1)
return output
用于获取当前所选物体的x轴向上的极值,作为缩放参数用于数据在顶点色通道的压缩和解压缩,这个值会在每次Bake的时候自动更新,也可以用这个按钮来手动获取更新
实现以当前选中物体的碰撞盒目标轴向从下向上从0到1赋值的操作,轴向可切换为世界坐标或者局部坐标,可以写入到顶点色或者uv通道中
会删除所选物体的名字里带有 pos_UVMap
的UV 通道
会删除所选物体的名字里带有 pos_vcolor
的顶点色通道
在输入框中输入想要激活的属性名,选择好物体后点击按钮可以批量激活对应的属性,激活的属性可以在Solid渲染状态的Attribute模式查看
可以让批量选中的物体的轴心设置到编辑模式下每个物体自身所选元素的中心位置,而不是所有选中元素的中心位置
这里提供blender源文件和GeometryNode是为了方便理解功能和调试效果,脚本本身并不需要这个blender源文件