VRC Avatar 的基本组成

旨在通过解析模型的基本组成让玩家可以理解模型的修改规则与思路

简介

image.png

本文档讲述虚拟形象的各个组成部分和原理,通过了解这些你可以来自己动手操作:

  1.  给模型穿衣服,饰品
  2. 给由模型组成的形象录制基本的动画
  3. 自定义皮肤,形象上的花纹
  4. 让形象的头发变得柔顺

“你”究竟是什么样子

模型的组成

“你”究竟是什么样子

一、虚拟形象

虚拟形象是什么?

虚拟形象是您在 VRChat 上可以使用,复制的各种“模型”,例如:

画板 1.png

而在 Unity 这边,虚拟形象是:您导入的从别处获得的标准人物模型,加上VRChat对模型的特殊组件而形成的,一个包含很多东西的物品。

下图是一个标准的,已经配置好的虚拟形象,通常长这样:

image (1).png

它拥有以下组件:

本教程使用入门包教程中所使用的模型 HAOLAN,参考以下文章:https://docs.vrcd.org.cn/books/vrchat/page/b9228

“你”究竟是什么样子

二、骨骼

在美妙和谐并狂野的大自然中,人和人的动物朋友们用骨头支撑住身体,给肌肉提供发力点。为了在游戏和影视作品中模拟自然角色的运动和动作,骨骼系统应运而生。

模型的基本骨骼架构

一般的模型遵循以下的基本骨骼构造,此构造中不含有物理骨骼:

Armature 作为骨骼的总集其只是一个载体,它不具有调控某一个骨骼区域的作用,我们模型的骨架是以 Hip 为中心的网状结构,具体架构参考上图,所以不要认为头是起点。

image.jpg

在这种架构下,我们的人物会以 Hip 为中心进行运动,也就是说我们在正常控制中Hip会相对于模型位置静止,此外在此构架下我们的模型运作形式将会以正向运动学(FK)和反向运动学(IK)两种形式实现

注:在骨骼中没有关节的概念,我们可以使用骨骼的一个端点作为关节,但它毕竟不是关节有偏差是正常的事情

物理骨骼

当我们想要在游戏中模拟头发,衣服,布料等属性时,比起真的耗费巨大性能对其进行解算,更加体面也更加被游戏业界所广泛使用的优化方法便是利用带有物理属性的骨骼带动面片运动以模拟头发,衣服,布料等属性。

目前 VRChat 使用的解决方法被叫做 物理骨骼(PhysBone),这是一个简单的基于模拟弹簧振子的算法实现树状柔体的物理模拟插件,VRChat 同时也用它来实现玩家与玩家的交互效果。

点击此处查看 VRChat 汉化文档中心 的 PhysBone 文档。

交互演示.gif

序列 01_16 00_00_00-00_00_30.gif

VRChat 在过去还使用过 动态骨骼(Dynamic Bone),动态骨骼插件可以很好的处理物体之间的碰撞问题,但它无法支持玩家与玩家之间的交互,就目前来讲 物理骨骼(Phys Bone)的使用需要很大的讲究。

“你”究竟是什么样子

三、网络

此处的网络相当于模型没有上色的皮肤,他们是由一个个小的面片拼接而成的集体

image.png

从计算机运行本身来讲在计算机图形学中实际上没有体积这一概念,有的只是点组成的不同片面根据相对于摄像机的远近距离决定的覆盖关系在光栅中的渲染结果所以设计程序的人们制作了网格系统,您可以把网格系统理解为在 3D 空间中构建物体的方式,相当于皮肤,外套,能够让我们在计算机中看见一个物体的具体特征和空间关系

image (1).jpg

为了制作这一层表皮,我们可以用到BlenderMaya3DmaxC4DZbrush

采用3d图形学,优化注意

“你”究竟是什么样子

四、材质

当我们的模型有了一层未上色的皮后,我们便需要考虑给这层皮上色。然而,我们又不能像涂颜料一样给我们的模型上色,程序只能把图片贴到皮上面。而且,我们的皮是圆圆的且不平整的,这时候我们就需要制作对应的材质来适应我们的网络。

UV

材质记录一个在 3D 世界中存在的物体拥有的纹理,颜色等表面特征,材质可以用来描述物体的纹理、质感、反射、折射等效果为了解决表面不平的问题我们把网络展开成平面,我们用 UV 投射将网络分成几个片域展平。

这样我们就可以轻松的为对应区域上色形成贴图,

image.png

贴图

提贴图有以下几个基础的样式,以一个苹果贴图为例

画板 2.png

着色器

在上完色之后,我们还不能直接将结果运用到网络上。对于程序来说,你所制作的贴图只是一张图片和一串数据。我们需要一个东西来解释这张贴图如何在网络上呈现和渲染。因此,着色器便应运而生。

着色器是一种用于控制贴图如何在显示中呈现和渲染的程序或代码。它可以让3D模型看起来更加真实或美观,也可以改变模型的光照、阴影、反射、透明等属性。它可以控制各种属性的贴图会以什么样的形式附着到模型上。

目前,VRChat 中常用的着色器有:

“你”究竟是什么样子

五、动画器

动画器是一个模型运动的来源,在Unity这个游戏引擎中,模型的一切的自身运动都是由动画控制器播放动画来完成的,在Unity中动画可以录制一个物体在任意帧的全部属性,也就是你的模型当前状态可以被记录在每一帧上,所以只要你的逻辑够好,有很多奇思妙想,都可以用动画加控制器的逻辑控制来实现。

我们一般会在我们的模型上看到Animator组件,这就是负责装载动画控制器的组件,当控制栏里存在动画控制器时,场景运行过程中我们就可以通过动画控制器控制我们的模型,下一栏Avatar指的是UnityAvatar,当你的FBX定义为人形时,Unity会生成这个UnityAvatar,Unity Avatar里面记录了有关于你模型的动画关节和实际骨骼的映射,通过这个映射,Unity可以知道如何正确的移动这个树状物体。

VM1l5lYygXjD9rRD-image.pngimage.png

在拥有了UnityAvatar后就可以用控制器控制你的模型啦,接下来就是我们该如何去编辑我们的控制器了

image.png

动画控制器分为两个主要区域,左侧有层级和参数,右侧是层级的视图区域

在动画控制器中,我们可以从视图窗口中清楚的看到某一层的逻辑路线,我们点开其中一层的设置窗口

image.png

第一条Weight是我们需要注意的,他控制了这一层与其他层的关系

image.png

再来看视图窗口的东西,我们把控制器的运行比喻成用电,绿色的方块相当于电流的输出,电会从里面出来,白色的线是电线与开关,黄色的线就是电线,黄色方块是蓄电池,黄色方块与绿色方块之间没有开关限制是直连的,运行时绿色方块的电会直接给与黄色方块,白色方块是用电器,绿色方块不能给电给白色方块,黄色方块给白色方块电需要看开关状态,红色方块就是结束电跑到这里就会停止,蓝色方块的比较特殊蓝色方块一般单独使用,不会与绿色方块相连,

 


留言板

浏览时如果有什么建议可以放进来哦

留言板

留言板(不许删别人的)