Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

Search Results

25 total results found

-- 严正警告 --

Avatar 与你

对任何初级开发者的严正警告      如果你想要学习如何开发一个功能强大,性能优良的 Avatar,在你透彻了解 Avatar 的运作前,不要使用任何自动脚本: 在透彻了解 Avatar 前,不要使用任何自动插件 在透彻了解 Avatar 前,不要使用任何自动插件 在透彻了解 Avatar 前,不要使用任何自动插件 自动插件指的是能够自动将符合某种规格的预制件自动安装到 Avatar 上的 Unity 插件,例如 Modular Avatar 和 VRCFury     为什么在初级阶段不应该使...

分布时间同步的基本概念

Avatar 参数分布时间同步架构:白皮书

阅读该部之前,确保你已经具备所需的前置知识,否则你将难以理解该部内容。 直接同步 现在,假设我们有4个整数需要和远端玩家同步: int_A int_B int_C int_D 如果将他们设置为同步,那么,数值将会通过网络直接抵达远端玩家的客户端。 直接同步 Parameter 的视觉展示 分布时间同步的基本概念 既然我们已知同步参数的消耗只有在一个参数被标记为Synced (同步) 时才会生效。换句话说,如果一个参数没有被标记为 Sync,那么,这个参...

分布时间同步的技术细节

Avatar 参数分布时间同步架构:白皮书

开始本部前,确保你已具备所需的前置知识,并且了解分布时间同步的基本概念 在VRChat 每隔 0.2秒会对 Avatar 的同步参数发起同步 (Sync Interval(同步间隔) = 0.2s),而同步的信息抵达远端玩家的时间大约在 0.1 - 1.0秒 (Latency = 0.1 ~ 1.0)。 同步步骤,Bit 数与延迟 (续) 上一章节提到,同步步骤决定了可节省的 bit 数,以及带来的延迟。 同步步骤可节省的 bit 数可以由以下公式计算: 计算同步参数 bit 节省的公式 ...

选读:VRChat Avatar Parameter 网络同步机制简述

Avatar 参数分布时间同步架构:白皮书

该选读部分由 AI 于受监督的环境下协助完成 如欲了解更多,可参考 Animator Parameters | VRChat Creation 参数同步 参数同步是指将 Avatar 的特定参数传递给其他远端玩家,使得远端玩家一侧的 Avatar 能够接收到这些参数更新,从而执行相应的逻辑和动画。这一机制是确保功能正常运行的基础。 参数同步的实现 要实现参数同步,首先需要将参数添加到 Avatar 的 Playable Layer 动画控制器中。接着,在 Expression Parameters...

选读:Parameter Driver 概述

Avatar 参数分布时间同步架构:白皮书

该选读部分由 AI 于受监督的环境下协助完成 如欲了解更多,可参考 Animator Parameters | VRChat Creation   Parameter Driver 概述 Parameter Driver 是一种用于修改 Avatar 动画控制器中参数的行为。该行为可以在进入状态时对参数进行多种操作,并且这些操作按从上到下的顺序依次完成。需要注意的是,只有在 VRCExpressionParameter 对象中定义的参数才会在网络中同步。   参数操作类型 Avatar Param...

前言与摘要

Avatar 参数分布时间同步架构:白皮书

前言 LIII Works 一直鼓励开发者手动进行 Avatar 的开发,而不仅仅依赖于自动化工具。 然而,令人遗憾的是,大多数开发者只能完成最基本的物体开关操作,或是利用 Modular Avatar 或 VRCFury 将其他创作者已经打包好的内容安装到自己的 Avatar 上,却缺乏调整这些内容以及在出现错误时排除问题的能力。 实际上,前述开发者中有相当一部分人并没有真正的学习心态。换言之,他们只求现成的成果,而不愿学习获取成果的方法。此外,他们对传授知识的玩家缺乏应有的耐心和态度。 鉴于此,我在...

简介

Unity/VRChat 性能基准测试

收集这些数据的主要方法不是仅仅关注单个组件的性能,而是逐步添加更多组件,并从这些数据中推导出性能消耗的数学公式。例如:如果我们想知道在FX控制器上增加一个额外的动画层会增加多少帧时间,我们可以设置1层、8层、64层和256层,绘制图表,将数据拟合成一条线,并利用这条线的公式来计算增加一个额外层所需的帧时间。 我的目标是测试VRChat中所有可用组件的性能,提供一个大致的性能比较,以帮助社区选择更优化的实现方式。 在本文中,我将以毫秒为单位提供帧时间的结果。为了更好地理解这些数据,可以这样想: 如果你的目标是达...

引入

Unity/VRChat 性能基准测试 动画控制器 Animator Controllers

为了更好地理解本节的数据,我想指出以下两点: - 所有测试都没有包括任何状态行为(State Behaviour)。如果一个控制器的任何动画层上有一个或多个状态行为,所有这些控制器的运行时间会增加50%。无论使用哪种状态行为,这种增加都是存在的。由于默认的Action & Gesture层中包含状态行为,这种额外的开销可能会出现在每个使用的Avatar上。由于这种开销总是存在的,我在测试中选择不包含它,因为我的测试目的是进行比较。然而,如果你查看原始数据,可能需要在结果上增加50%的开销,以获得实际的帧时间。- ...

参考基准:两个状态切换

Unity/VRChat 性能基准测试 动画控制器 Animator Controllers

我们的参考基准将采用简单的双状态切换作为参考。  默认的切换对比图。图中显示了两个动画,每个动画包含两个帧,数值相同。已启用“写入默认”。 在每次测试动画层数时,层数与帧时间的关系图呈二次曲线。这意味着,随着动画层数的增加,添加额外动画层的帧时间开销会显著增加。然而,由于二次曲线的性质不是很强,因此在动画层数较少时,可以用线性图来近似。对于基本的状态切换,每增加一个动画层的额外开销约为0.01毫秒。这将作为我们比较的基准。 基本切换在未被主动切换时的帧时间与动画层数关系图。 如果我们在进行层动画时重...

任意状态(AnyState) & 混合树(Direct Blend Trees)

Unity/VRChat 性能基准测试 动画控制器 Animator Controllers

AnyState 无论AnyState切换的数量多少,AnyState的性能与非AnyState切换相似。这表明,转换检查的数量对帧时间的影响并不显著,这一点也在其他测试中得到了验证。 唯一的例外是启用了“可以过渡到自身”选项的AnyState切换,这会比未启用该选项的情况多出20%的开销,即使是在持续切换的比较中也是如此。 Direct Blend Trees 当首次发现动画层的巨大开销时,很多人曾希望直接Blend Trees能够作为一种魔法般的解决方案,大幅度降低帧时间。我的测试结果表明,虽然它们并不...

杂项数据

Unity/VRChat 性能基准测试 动画控制器 Animator Controllers

以下是一些与切换不直接相关但可能对某些人有用的杂项数据: 每层的状态数量和过渡数量对性能的影响似乎不大(这可能解释了为什么AnyState的性能较好)。 唯一的例外是当单个状态有大量布尔过渡(例如1000个过渡需要1毫秒)时。浮点数和整数似乎不受此额外开销的影响。 在使用人体骨架、非人体骨架或不使用Avatar的情况下,与两状态切换设置相比,每层的帧时间减少约50%。 遮罩对帧时间的影响似乎微乎其微。 使用子状态机对帧时间的影响也似乎很小。 为了增加易读性而嵌套Blend Trees对帧...

多控制器

Unity/VRChat 性能基准测试 动画控制器 Animator Controllers

使用多个控制器的性能不会按线性比例增长(也就是说,两个每个有100层的控制器比起一个有200层的控制器会有显著更少的延迟)。 实际的关系难以精确描述,但可以通过下面的图示来帮助理解。每条线代表一个恒定的帧时间。例如,5个控制器每个有580层的开销与15个控制器每个有300层的开销是一样的。 从这个图表中,我得出两个主要结论: 大型控制器相比于多个小型控制器会使用更多帧时间。如果你有很多动画层,优化尤其重要。(一个100层的控制器的帧时间开销相当于10个30层的控制器。) 即使有很多控制器,如果将它们...

约束 Constraint

Unity/VRChat 性能基准测试

在介绍完Animator控制器之后,我很高兴能说一些一些较为简单的内容了。虽然约束的情况看似奇怪,但它们的行为实际上是可预测的。 计算启用的约束总数(类型无关),然后结合用下图来确定帧时间。你会发现帧时间开销会缓慢的上升,直到某一点后出现跳跃式增长。当VRChat设定约束的数量限制时,他们选择了681这个数字,以避免遭遇那个显著的增长。我认为这一选择非常合理,因为帧时间的消耗从1.7毫秒跃升到了2.4毫秒(图中的0点是2毫秒)。 如果你想要达到90 fps,单独的这个跃升就会占用你预算的6%,而这还不包括约束本...

音源 Audio Source

Unity/VRChat 性能基准测试

无论如何,我无法让Audio Source对性能产生任何影响,即使在Unity中,音频源的最大数量为64,而在VRChat中每个角色仅限3个。

接触发射器/接收器 Contact Senders/Receivers

Unity/VRChat 性能基准测试

首先需要说明的是,每个房间中的 Contact 数量最大限制为4096。如果一个房间中 Contact 的数量超过4096,一些 Contact 将会停止工作。 Contact Senders 和 Contact Receivers 的性能影响如下: 当 Contact Senders/Receivers 关闭时,每1000个 Contact Senders/Receivers 消耗的帧时间为0.5毫秒。 当 Contact Receivers 被开启时,每1000个 Contact Receivers ...

布料 Cloth

Unity/VRChat 性能基准测试

Cloth 组件对性能的影响非常大,应尽量谨慎使用。 对于合理数量的顶点(约20万顶点内),每增加1000个顶点,Cloth 组件会增加约0.2毫秒的帧时间。超出这个范围后,帧时间会急剧增加,然后逐渐趋于平稳,但这种情况通常只发生在顶点数量非常大的情况下。 需要注意的是,这个20万顶点的限制是针对整个房间的。Cloth 组件的数量本身对性能的影响似乎不大,主要取决于 Cloth 顶点的数量。 然而,由于 Mirror 和 Shadow Clones 的存在,本地Avatar的 Cloth 会被模拟三次,因...

后续计划

Unity/VRChat 性能基准测试

我计划继续对更多组件进行基准测试。目前我已经开始对一些组件进行测试,但由于数据尚不充分,暂时不能公布结果。 未来我打算进行基准测试的组件包括: PhysBones/PhysBone colliders Skinned mesh renderers(如材质数量与网格数量的关系) Lights Animations(如数值/引用的影响,动画属性数量的影响) 不同类型的开关 AAPs 完成测试后,我会将结果添加到文档中。 如果你有其他希望我测试的组件,或发现我有遗漏,请通过 Discord @j...

物理骨骼 PhysBones

Unity/VRChat 性能基准测试

PhysBones 的优化非常出色,在合理的使用范围内,它们的开销较低。PhysBones 的帧时间主要取决于它控制多少有顶点权重的骨头,每 1000 个骨头大约增加 2 毫秒的帧时间。 组件的层级结构(即父子关系)和组件数量对帧时间有轻微的影响,其中组件较少的情况表现较好,极端情况下差异可达 33%。 碰撞体数量对帧时间的影响非常微小,其他设置对帧时间似乎没有明显影响。 免责声明:由于 PhysBones 在 VRChat 和 Unity 中的运行情况差异较大,本文数据均来自 VRChat 内的测试结果。虽...

译者前文

Unity/VRChat 性能基准测试

本书由 LIII Works 你亲爱的酒保K 翻译。 本书翻译自 VRCLibrary 的 Unity/VRChat Performance Benchmarks 本书翻译工作截止于2024年8月8日下午11点19分。 本书在译者监督下由人工智能翻译并由译者根据自身知识审阅和调整,翻译可能出现错误,如有疑问,请参阅原文 Unity/VRChat Performance Benchmarks

译者前文

其他 Avatar 相关知识

本书由 LIII Works 你亲爱的酒保K 完成后续翻译以及由 VRCD Cocoa 及 SKP 起草。 本书翻译自 VRCLibrary 的 Miscellaneous Avatar Knowledge 本书翻译工作截止于2024年9月5日下午18点41分。 本书在译者监督下由人工智能翻译并由译者根据自身知识审阅和调整,翻译可能出现错误,如有疑问,请参阅原文 Miscellaneous Avatar Knowledge