VRoid群集的VRM输出,我该怎么办?


当前,VRoid Studio具有输出与群集兼容的VRM的功能,但另一方面,似乎还存在诸如"图像质量不佳"或"群集限制太严格"之类的评估。
由于它是可以在Mac和智能手机上访问的家用虚拟SNS,因此,我想以一种简单的方式解决此问题。

标准支持输出到集群

当前版本的VRoid Studio默认支持输出到集群。
从"拍摄/导出"选项卡上的"导出"中选择。

严格来说,这不是唯一的限制,但是您需要清除以下限制才能上载到群集。
*多边形数:32000以下
*材料数量:8个以下
*骨骼数量:128个以下

スクリーンショット 2021-01-08 7.42.08.png

让我们通过以4096px输出而不是以2048px输出来调整材质集成函数的大小

当Atlasing函数尝试以2048px输出时,VRoid Studio的行为有点可笑,因此建议以4096px输出,然后尽可能地调整大小。
(缩小比例不是50%时是什么意思?)

スクリーンショット 2021-01-08 7.46.08.png

由于某种原因,在两种情况下都发生了多份头发材料的奇怪行为,但我不知道原因。

如果以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

好,使用前后。脸没什么不同,但是脖子下面的那只完全不同。
边缘灯不起作用,但是您认为分辨率比这更重要吗?

aaaaaa.png

嗯,事实上,我不仅使用了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)。这是化身改变的一种机制。