当前,VRoid Studio具有输出与群集兼容的VRM的功能,但另一方面,似乎还存在诸如"图像质量不佳"或"群集限制太严格"之类的评估。
由于它是可以在Mac和智能手机上访问的家用虚拟SNS,因此,我想以一种简单的方式解决此问题。
标准支持输出到集群
当前版本的VRoid Studio默认支持输出到集群。
从"拍摄/导出"选项卡上的"导出"中选择。
严格来说,这不是唯一的限制,但是您需要清除以下限制才能上载到群集。
*多边形数:32000以下
*材料数量:8个以下
*骨骼数量:128个以下
让我们通过以4096px输出而不是以2048px输出来调整材质集成函数的大小
当Atlasing函数尝试以2048px输出时,VRoid Studio的行为有点可笑,因此建议以4096px输出,然后尽可能地调整大小。
(缩小比例不是50%时是什么意思?)
由于某种原因,在两种情况下都发生了多份头发材料的奇怪行为,但我不知道原因。
如果以4096px输出,则不能按原样将其上传到群集,但是如果在此处使用软件,则可以将其调整为2048px,因此建议以4096px输出并尽可能调整大小。
-
VRM纹理替换和优化工具#cluster #VRM
https://booth.pm/ja/items/2601784
但是,群集中的2048px的完整分辨率只能由事件组织者使用,即使将像素稍微压碎,也可以在不扩大细节的情况下完成此级别,因此VRoid的输出为输出,我觉得如果按原样使用它并不重要。
问题是512像素的像素被强制缩小,这导致了进一步的退化。
VReducer将成为普通集群用户的救星吗?
普通用户,移动显示或整个世界可以使用的VRM的最大分辨率有效地限制为512像素,因此我们必须对此做一些事情。
使用VRoid Atlas分配时,将其尺寸调整为512px时,皮肤或衣服的分辨率将为256x256px。这太小了。
但是,您是否不认为,如果您可以将512x512px用于整个服装,那将是一件好事吗?
这就是为什么,让我们朝着调整具有最高优先级的衣服等分辨率的方向前进。
VReducer是用python编写的可自定义软件,因此我认为它具有高度的灵活性,例如朝着尽可能多的方向调整服装分辨率。
请参阅本文,因为Tomine先生还总结了如何安装VReducer
- https://qiita.com/htomine/items/4ad53c0d4c526cd433b7
在Mac
上安装VReducer
由于Windows用户很多,因此,如果您使用Mac,请阅读文本中的pip命令(pip3)和python(python3)。如有必要,请安装Homebrew。
Rosetta 2似乎在M1机器上运行良好。打开终端
1 | % arch -x86_64 zsh |
如果键入
,它将假定它是一台Intel机器就可以工作。
使用VReducer
时导出设置
这次,我们将从VRoid中导出,设置不整合材质,但是这次我们将停止材质的整合,并调整多边形的数量和骨骼的数量,以使它们在限制范围内。导出VRM。
- 多边形数:32000以下
- 骨头数:128以下
VReducer约束
法线贴图和边缘光(球体)等材质信息将被吹走。但是现在,这没什么大不了的。
- 首先是不是意味着分辨率低的法线贴图?
- 它很受欢迎,就像"看起来不像VRoid的纹理"一样,大多数人都讨厌轮辋灯,对吗?
有些人即使您这样删除也不会伤害您,如果您不同意,请与Blender和Unity融洽相处。
VReducer
的修改
让我们立即修改VReducer。
Atlasing将服装和皮肤纹理与其他纹理结合在一起,因此您要做的就是删除Atlasing过程。
当我搜索相应的进程时,在vrm / reducer.py的第620行附近发现了类似的内容。
如您所料,这是纹理贴图的实际过程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # マテリアルを結合 print('combine materials...') # (中略) # 服の結合 if cloth_place := get_cloth_place(gltf): gltf = combine_material(gltf, cloth_place['place'], cloth_place['main'], texture_size) # 体、顔、口 gltf = combine_material(gltf, { '_Face_': {'pos': (0, 0), 'size': (512, 512)}, '_FaceMouth_': {'pos': (512, 0), 'size': (512, 512)}, '_Body_': {'pos': (0, 512), 'size': (2048, 1536)} }, '_Face_', texture_size) # レンダータイプを変更 face_mat = find_vrm_material(gltf, '_Face_') face_mat['keywordMap']['_ALPHATEST_ON'] = True face_mat['tagMap']["RenderType"] = 'TransparentCutout' # アイライン、まつ毛 gltf = combine_material(gltf, { find_eye_extra_name(gltf): {'pos': (0, 0), 'size': (1024, 512)}, '_FaceEyeline_': {'pos': (0, 512), 'size': (1024, 512)}, '_FaceEyelash_': {'pos': (0, 1024), 'size': (1024, 512)} }, '_FaceEyeline_', texture_size) # 瞳孔、ハイライト、白目 gltf = combine_material(gltf, { '_EyeIris_': {'pos': (0, 0), 'size': (1024, 512)}, '_EyeHighlight_': {'pos': (0, 512), 'size': (1024, 512)}, '_EyeWhite_': {'pos': (0, 1024), 'size': (1024, 512)} }, '_EyeHighlight_', texture_size) # 髪の毛、頭の下毛 hair_back_material = find_vrm_material(gltf, '_HairBack_') if hair_back_material: hair_resize = {'_HairBack_': {'pos': (512, 0), 'size': (1024, 1024)}} hair_material = find_near_vrm_material(gltf, '_Hair_', hair_back_material) if hair_material: hair_resize[hair_material['name']] = {'pos': (0, 0), 'size': (512, 1024)} gltf = combine_material(gltf, hair_resize, hair_material['name'], texture_size) |
分辨率的绝对真理>材质
面部部分可以减少到一定程度,因此最好推广图集并提高身体/服装的分辨率。
因此,我们重写面部部分,以便在进行集成时不会对身体和服装(上图)进行分类。
那就是这个分支。另外,我还包括对VRoid 0.12.1的支持。
https://github.com/yakumo-proj/VReducer/tree/benefit-512px
好,使用前后。脸没什么不同,但是脖子下面的那只完全不同。
边缘灯不起作用,但是您认为分辨率比这更重要吗?
嗯,事实上,我不仅使用了VReducer(修订版),而且还将基础头发更改为HairSample的基础头发,并修改了法线以匹配服装的混合形状( (导出时间)。您只需减少多边形的数量即可。)
如何使它看起来更好?
对于512像素的分辨率,您可以做的事情有一个限制,但是对于群集的数据限制,您可以做什么?
让我们看一下上面的VReducer的输出。
1 2 3 4 5 6 7 8 9 10 | (中略) vrm materials: 7 materials: 7 textures: 10 images: 10 meshes: 3 primitives: 18 Face(Clone).baked : 9 Body.baked : 6 Hair001.baked : 3 |
材料的数量是7。由于仅剩一种材料,因此不能说有足够的容量,但可以将其分层(使用Unity的Rashomon工具检查)。
由于最多可以有16种纹理,因此您可以恢复法线贴图并为服装赋予三维外观和纹理。我想知道512px是否足够好。
请尝试各种方法。
另外,请告诉我您是否可以使用Blender或Unity轻松转换为超漂亮的VRM。
如果我上载基于512px的头像,则该事件的分辨率太低,该怎么办?
请分别上传事件(2048px)和世界(512px)。这是化身改变的一种机制。