前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >VR中物理的网络同步

VR中物理的网络同步

作者头像
逍遥剑客
发布于 2018-05-09 09:04:34
发布于 2018-05-09 09:04:34
1.7K2
举报

参考: Networked Physics in Virtual Reality: Networking a stack of cubes with Unity and PhysX

之前做VR游戏时也是尝试了几种物理的同步方案, 最近看到Oculus Blog上也分享了一些, 经验, 做个笔记.

多人VR游戏中的物理交互, 有这么几个要求:

  • 玩家对物体交互不能有延迟
  • 物体能静止后稳定, 不能抖动
  • 玩家把物件扔给另一个玩家交互, 不能有延迟

通常网络模型有三种:

  • 帧同步
  • C/S
  • 分布式模拟

帧同步不适合做物理同步, 因为物理引擎一般不是确定性的, 而且有比较大的延迟 C/S会有延迟和网络带宽的问题 分布式模拟即谁交互谁有拥有控制权, 跟我们在游戏中使用的方式一样

  • 交互者自己的角色相当于Server, 所以没有延迟的问题
  • 一个物体同一时间只能受一个玩家控制, 直到释放权限

物理对象需要同步的数据有:

  • 位置(vector3)
  • 旋转(quaternion)
  • 速度(vector3)
  • 角速度(vector3)

如果要优化网络数据带宽:

  • 静止时不用同步速度和角速度
  • 旋转四元数可以使用smallest three representation
  • 为每个物理设计优先级累加器, 根据优先级排序发送有限的数量
  • 进行delta compression

相比于我们只同步交互状态的做法, 他们这种方式可以保证客户端的一致性, 但是会有更大的带宽需求, 还是比较适合网络条件较好的情况, 对于安全性也没有做校验.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年03月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
帧同步,C/S,分布式模拟,不错的文章,谢谢分享
帧同步,C/S,分布式模拟,不错的文章,谢谢分享
回复回复点赞举报
谢谢分享
谢谢分享
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
VR中对带有约束的物理对象的交互
在VR游戏中, 使用双手(控制器)直接对虚拟世界中的对象进行交互, 已经成为一种”标准化”的设计, 一切看起来能够用手去交互的物体, 都需要附合物理规则. 简单的物理对象, 通常只是一个刚体(Rigidbody), 这种只需要模拟重力和惯性运动就可以了, 最多再调节一下摩擦力, 弹性, 空气阻力等, 所以在技术上借助物理引擎的帮助是比较简单的. 稍微复杂一点儿的物理对象, 是带有约束(Constraint)关系的, 比如门, 抽屉, 转盘, 滑杆, 绳索等等. 这里以最常见的滑动和转轴约束进行一下分析,
逍遥剑客
2018/05/09
1.3K0
Unity3D游戏开发初探—3.初步了解U3D物理引擎
  四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础。牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀上。”
Edison Zhou
2018/08/20
1.6K0
Unity3D游戏开发初探—3.初步了解U3D物理引擎
游戏开发中的物理介绍
在游戏开发中,您通常需要知道游戏中的两个对象何时相交或接触。这就是所谓的碰撞检测。当检测到碰撞时,您通常希望发生某些事情。这就是所谓的碰撞响应。
海拥
2021/08/23
1.3K0
VR下双手与物体的交互
背景 Oculus的Touch, HTC Vive的Controller, PSVR的PS Move, 三家一线VR硬件都在给大家传达一个信息: VR下能够模拟双手的体感控制器是一个趋势. 在VR游戏中, 一旦有了双手, 这就意味着不光能看了…..如果说之前的VR游戏只是输出方式(显示器)发生了变化, 那现在有了个双手, 输入方式也发生了变化, 这对游戏来说是一个革命性的改变, 是完全可以改变用户体验的. 由此我们也看到了代表未来的一些VR应用开始出现: 如空间绘画Tilt Brush, VR雕塑Oculu
逍遥剑客
2018/05/09
1.3K0
VRMMO的技术挑战
又是新的一年, 2016总体不错, 前两年的坚持和积累开始产生效果, 2017不忘初心, 继续前行. 从做PC网游开始, 到2014年做主机游戏, 2015年做单机VR游戏, 2016年做多人VR游戏, 我们一直在走一条非主流的路. 不过现在回头看看, 冒似绕了一条路走在了前面, 做为一名技术人员来说, 还是挺有成就感的. 看看目前绝大数的VR游戏, 其实就是美术做个场景, 程序实现一下交互, 然后就可以拿去上线了, 难怪2016下半年VR热度开始冷却, 因为忽悠太多了. 我们也是从一开始做
逍遥剑客
2018/05/09
1.7K0
游戏开发中的物理之运动角色(2D)
是的,这个名字听起来很奇怪。“运动角色”。那是什么?该名称的原因是,当物理引擎问世时,它们被称为“动态”引擎(因为它们主要处理碰撞响应)。为了使用动态引擎创建角色控制器,已经进行了许多尝试,但是这并不像看起来那样容易。Godot是您可以找到的最佳动态角色控制器实现之一(如在2d / platformer演示中所见),但是使用它需要相当水平的技能和对物理引擎的理解(或者非常耐心尝试错误)。
海拥
2021/08/23
8260
Unity的物理系统
Unity的物理系统是游戏开发中不可或缺的一部分,它通过模拟现实世界的物理规则(如重力、碰撞、摩擦等)来增强游戏的真实感和互动性。Unity提供了两个独立的物理引擎:一个用于3D物理系统,另一个用于2D物理系统。
用户11315985
2024/10/16
1490
Unity的物理系统
Unity基础(17)-四元数与欧拉角与矩阵
Quaternion中存放了x,y,z,w四个数据成员,可以用下标来进行访问,对应的下标分别是0,1,2,3 其实最简单来说:四元数就是表示一个3D物体的旋转,它是一种全新数学数字,甚至不是复数。 四元数其实就是表示旋转。
孙寅
2020/06/02
5.3K0
Unity基础(17)-四元数与欧拉角与矩阵
【一统江湖的大前端(8)】matter.js 经典物理
在前端开发领域,物理引擎是一个相对小众的话题,它通常都是作为游戏开发引擎的附属工具而出现的,独立的功能演示作品常常给人好玩但是无处可用的感觉。仿真就是在计算机的虚拟世界中模拟物体在真实世界的表现(动力学仿真最为常见)。仿真能让画面中物体的运动表现更符合玩家对现实世界的认知,比如在《愤怒的小鸟》游戏中被弹弓发射出去小鸟或是因为被撞击而坍塌的物体堆,还有在《割绳子》小游戏中割断绳子后物体所发生的单摆或是坠落运动,都和现实世界的表现近乎相同,游戏体验通常也会更好。
大史不说话
2020/03/12
3.4K1
Unity-BattleStar丨8. 物理引擎Rigidbody组件、Collider组件、Raycast
游戏中物理引擎用于模拟真实世界物理环境效果,要实现游戏对象的物理行为,Rigidbody(刚体)组件是必不可少的,当挂载该组件之后,物体立刻受到重力等物理效果影响。如果对象身上还挂载着Collider(碰撞)组件,那么该对象还受到碰撞物理效果影响,例如游戏中的被车撞飞
星河造梦坊官方
2024/08/14
2000
Unity-BattleStar丨8. 物理引擎Rigidbody组件、Collider组件、Raycast
Unity3D之Rigidbody
Rigidbody是Unity3D游戏引擎中的一个组件,用于模拟物理行为和运动。它可以给游戏对象应用真实的物理效果,如重力、碰撞、施加力等。通过使用Rigidbody,你可以创建更加真实和交互性强的游戏体验。
叶茂林
2023/07/30
6220
GDC2015: Networking for Physics Programmers
物理模拟的问题 物理模拟需要是确定性的吗? 应该是发送物理对象的状态还是碰撞事件或者受力? 使用UCP还是TCP发送数据? 使用C/S还是P2P? 需要一个DS吗? 怎么隐藏玩家行为的延迟? 怎么防止
逍遥剑客
2018/05/21
9820
Unity基础(12)-物理系统
Unity是一款3D引擎软件,内置NVIDIA PhysX物理引擎,使3D物体具备物理属性,产生物理效果。
孙寅
2020/06/02
1.8K0
游戏开发中的物理之刚体
刚体是由物理引擎直接控制以模拟物理对象行为的刚体。为了定义主体的形状,必须为其分配一个或多个Shape对象。请注意,设置这些形状的位置会影响人体的重心。
海拥
2021/08/23
4140
手游后台PVP系统网络同步方案总结
来源:游迅网 发布者:wuyu 概述   PVP系统俨然成为现在新手游的上线标配,手游Pvp系统体验是否优秀,很大程度上决定了游戏的品质。从最近半年上线的新手游来看,越来越多的游戏把核心玩法重心已经放在pvp多人游戏中,手游朝着更重度、多人实时交互的方向发展。本文主要分为两部分介绍pvp系统,前半部分主要介绍手游后台Pvp的同步方案介绍,第二部分主要介绍天天飞车和现在正在开发当中新赛车手游pvp网络同步方案。   同步机制的一致性问题   同步问题的本质是一致性的问题,在同一局多人游戏的过程中,玩家
编程范 源代码公司
2018/04/16
2.3K0
手游后台PVP系统网络同步方案总结
unity3d:网络同步,状态同步,源码,C#服务器demo
a背后有个观察者b,b对着a运动的方向,发射一个带有宽度的轨道。a超过了轨道即发送PDU,好处是在玩家速度,方向不变时,只需要发送一次PDU,而不需要每时每刻都发送 图下两条绿线即为轨道
立羽
2023/08/24
5260
unity3d:网络同步,状态同步,源码,C#服务器demo
【笔记】《游戏编程算法与技巧》7-12
本篇是看完《游戏编程算法与技巧》后做的笔记的下半部分. 这本书可以看作是《游戏引擎架构》的入门版, 主要介绍了游戏相关的常见算法和一些基础知识, 很多知识点都在面试中会遇到, 值得一读.
ZifengHuang
2022/08/30
2.2K0
为什么在VR中投掷体验很差——怎样改善它
授权摘自游戏蛮牛 翻译cartzhang 投掷 - 当你体验VR,这是你做的第一件事之一。 你拿起那个虚拟的咖啡杯,扔掉它。 杯子,甜甜圈或球疯狂转动。 在这之前,你需要通过教程学习投掷。 这里,我试图把苏打瓶子投到我面前的空白板上。 有些投掷偏离的离谱。有的太低。其中一两个影响到NPC了。或许,我们的虚拟现实第一节,它其实很难精准的投出。当我有这样的体验,我认为是因为自己不擅长VR。我们接受熟练掌握控制方法是游戏学习曲线的一部分。但是,当投掷相同的动作但是结果非常不一样,你就会非常沮丧了。 一个大力投
大数据文摘
2018/05/25
1K0
SwiftShot:为增强现实创建游戏
了解Apple如何为WWDC18构建精选演示,并获得使用ARKit,SceneKit和Swift制作自己的多人游戏的技巧。
iOSDevLog
2018/08/22
1.8K0
SwiftShot:为增强现实创建游戏
一篇上手LayaAir的3D物理引擎
昨天,我们分享了一篇2D物理文档《LayaAirIDE的可视化2D物理使用文档》。
Layabox Charley
2021/01/12
4.8K0
一篇上手LayaAir的3D物理引擎
相关推荐
VR中对带有约束的物理对象的交互
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文