当前位置: 首页 > news >正文

做外贸是不是要有网站百度文库个人登录

做外贸是不是要有网站,百度文库个人登录,lol小米和谁做的视频网站,互联网营销缺点最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来…

最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。

Unity.Physics物理引擎的主要流程与Pipeline

Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来执行:

step1: 从entity里面的ECS组件中获取我们当前的物体的状态数据;

step2: 做粗略的broadphase计算阶段,遍历物理世界里面所有的body, 通过AABB包围计算,来快速的判断哪些物体,可能相交;粗略计算,把不会相交的排除掉, 不会相交的就不会改变运动状态;

step3: narrowphase阶段: 把可能相交的物体,做进一步的精确的计算;根据他们的物理形状,计算出来准确的碰撞点与相关的碰撞信息;

step4: 基于这些碰撞信息, 我们的物理引擎会计算具体的碰撞信息,关节,摩檫力,阻力等计算, 结合物理的原理,计算出来我们的物理刚体的速度,角速度等运动状态。

Step5: 根据基于全新的运动状态,把所有运动的物体,向前迭代计算(线性速度,角速度,摩擦力等),计算出这帧新的刚体的位置等信息;

Step6: Unity Physic 通过 ExportPhysicsWorld System 把物理刚体的位置速度等,同步给节点Entity的LocalTransform组件与PhysicVelocity等组件,这样渲染的entity,就会跟着物理引擎的刚体同步移动;

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

DOTS中基于System与SystemGroup 树行结构来决定DOTS中的迭代顺序,这个是DOTS中很重要的一个概念。Unity Physics将上面步骤与逻辑基于ECS设计思想,分别设计了相关的System与System Group,结构如下:

-->FixedStepSimulationSystemGroup:

-->PhysicsSystemGroup

-->PhysicsInitializeGroup(System Group)

-->PhysicsSimulationGroup(SystemGroup)

-->PhysicsCreateBodyPairsGroup

-->PhysicsCreateContactsGroup

-->PhysicsCreateJacobiansGroup

-->PhysicsSolveAndIntegrateGroup

-->System: ExportPhysicsWorld

所有物理引擎的迭代计算都是基于FixedStepSimulationSystemGroup,即按照固定的时间间隔来迭代物理仿真,保持物理引擎的一致性与稳定性。所有的物理引擎的仿真计算都放在PysicsSystemGroup下。PysicsSystemGroup包含PhysicsInitializeGroup ,PhysicsSimulationGroup 与一个ExportPhysicsWorld System。上面提到的Step1,在PhysicsInitializeGroup阶段完成, step2~step5在PhysicsSimulationGroup中完成, PhysicsSimulationGroup完成后物理引擎的一帧的迭代计算完成,最后通过ExportPhysicsWorld的System把把物理引擎的内部数据同步到Entity的PhysicsVelocity, LocalTransform等ECS组件。在PhysicsSimulationGroup又有4个subgroup,他们分别对应step2~step5的执行步骤。

Unity Physics碰撞检测事件处理

当PhysicsSimulationGroup的分组执行完成以后,就完成了整个物理引擎的仿真与迭代计算。仿真过程中会产生一个PhysicsWorld,物理世界里面的所有的刚体等相关物理数据(位置,速度等)都可以通过PhysicsWorld得到,最后还被导出到Entity的ECS组件里面。在物理仿真中所有的事件都会被保存到Simulation对象中,这些事件包括了我们常见的碰撞事件与触发器事件。传统模式下我们是通过回调函数来处理的,DOTS模式下我们是在一个System环节内统一来处理这些事件。物理引擎的碰撞与触发事件处理流程如下:

Step1: 编写一个System处理逻辑,来处理物理事件;

Step2: 指定好System执行的时机,一定要在PhysicsSimulationGroup之前或者之后,这样才能拿到碰撞事件的数据;

Step3: 通过编写Job,来遍历当前所有发生的碰撞事件,然后编写每个碰撞事件的处理逻辑;

Step4: 获取存储事件的Simulation单例,传递给job来进行具体执行;

碰撞事件的处理:

当所有的模拟迭代计算完成后,会把过程中的所有碰撞事件对存放到Simulation对象中,我们可以通过(SystemBase|SystemAPI|EntityQuery).GetSingleton<SimulationSingleton>().AsSimulation()获取Simulation对象。

要处理所有的碰撞事件,我们先编写一个System用来编写事件处理逻辑,然后编写一个Job,继承自IcollisionEventsJob,这样就可以在Job中遍历所有的碰撞事件,每个碰撞事件都调用Job的Execute函数,在它里面来处理每个碰撞事件的逻辑。代码如下:

[UpdateInGroup(typeof(FixedStepSimulationSystemGroup))]
[UpdateBefore(typeof(PhysicsSimulationGroup))] // We are updating before `PhysicsSimulationGroup` - this means that we will get the events of the previous frame
public partial struct GetNumCollisionEventsSystem : ISystem
{[BurstCompile]public partial struct CountNumCollisionEvents : ICollisionEventsJob{public NativeReference<int> NumCollisionEvents;public void Execute(CollisionEvent collisionEvent){NumCollisionEvents.Value++;}}[BurstCompile]public void OnUpdate(ref SystemState state){NativeReference<int> numCollisionEvents = new NativeReference<int>(0, Allocator.TempJob);state.Dependency = new CountNumCollisionEvents{NumCollisionEvents = numCollisionEvents}.Schedule(SystemAPI.GetSingleton<SimulationSingleton>());// ...}
}

触发器事件TriggerEvent处理:

触发器事件与碰撞事件类似,我们只要编写一个ItriggerEventsJob就可以遍历当前所有的触发器事件了,代码如下:

[UpdateInGroup(typeof(FixedStepSimulationSystemGroup))]
[UpdateAfter(typeof(PhysicsSimulationGroup))] // We are updating after `PhysicsSimulationGroup` - this means that we will get the events of the current frame.
public partial struct GetNumTriggerEventsSystem : ISystem
{[BurstCompile]public partial struct CountNumTriggerEvents : ITriggerEventsJob{public NativeReference<int> NumTriggerEvents;public void Execute(TriggerEvent collisionEvent){NumTriggerEvents.Value++;}}[BurstCompile]public void OnUpdate(ref SystemState state){NativeReference<int> numTriggerEvents = new NativeReference<int>(0, Allocator.TempJob);state.Dependency = new CountNumTriggerEvents{NumTriggerEvents = numTriggerEvents}.Schedule(SystemAPI.GetSingleton<SimulationSingleton>());// ...}
}

今天的分享就到这里,需要本篇文章完整的项目工具与源码的同学可以关注我们

视频教程如下

Unity:DOTS专区​www.bycwedu.com/promotion_channels/1830504531​编辑


文章转载自:
http://sorrow.mzpd.cn
http://anthozoan.mzpd.cn
http://anigh.mzpd.cn
http://laysister.mzpd.cn
http://falsework.mzpd.cn
http://realpolitik.mzpd.cn
http://jupe.mzpd.cn
http://naos.mzpd.cn
http://muskwood.mzpd.cn
http://gph.mzpd.cn
http://evocation.mzpd.cn
http://galloway.mzpd.cn
http://adm.mzpd.cn
http://murrelet.mzpd.cn
http://trifold.mzpd.cn
http://frustration.mzpd.cn
http://holoenzyme.mzpd.cn
http://trendily.mzpd.cn
http://inquilinism.mzpd.cn
http://ferromagnesian.mzpd.cn
http://phototelegram.mzpd.cn
http://mantuan.mzpd.cn
http://subindex.mzpd.cn
http://kilomega.mzpd.cn
http://centralise.mzpd.cn
http://biestings.mzpd.cn
http://hauler.mzpd.cn
http://spalpeen.mzpd.cn
http://hydroformer.mzpd.cn
http://wednesday.mzpd.cn
http://staphylococcus.mzpd.cn
http://rgs.mzpd.cn
http://browsability.mzpd.cn
http://incorporable.mzpd.cn
http://gawsy.mzpd.cn
http://busybody.mzpd.cn
http://guianese.mzpd.cn
http://monolithic.mzpd.cn
http://oxyopia.mzpd.cn
http://formyl.mzpd.cn
http://oquassa.mzpd.cn
http://overcooked.mzpd.cn
http://resinous.mzpd.cn
http://plumicorn.mzpd.cn
http://preferential.mzpd.cn
http://encourage.mzpd.cn
http://brad.mzpd.cn
http://alleviate.mzpd.cn
http://bindin.mzpd.cn
http://chincough.mzpd.cn
http://intertangle.mzpd.cn
http://nabe.mzpd.cn
http://dudeen.mzpd.cn
http://meperidine.mzpd.cn
http://lignitoid.mzpd.cn
http://aldolase.mzpd.cn
http://leave.mzpd.cn
http://externally.mzpd.cn
http://blubbery.mzpd.cn
http://recolor.mzpd.cn
http://whitmoreite.mzpd.cn
http://drayman.mzpd.cn
http://nestlike.mzpd.cn
http://hackmanite.mzpd.cn
http://keelblocks.mzpd.cn
http://georgette.mzpd.cn
http://underuse.mzpd.cn
http://pelvimetry.mzpd.cn
http://argentiferous.mzpd.cn
http://dnepr.mzpd.cn
http://synoecism.mzpd.cn
http://slummy.mzpd.cn
http://delicacy.mzpd.cn
http://blm.mzpd.cn
http://barrathea.mzpd.cn
http://sphagna.mzpd.cn
http://filth.mzpd.cn
http://cyrtosis.mzpd.cn
http://drowsy.mzpd.cn
http://planetabler.mzpd.cn
http://currish.mzpd.cn
http://hesiod.mzpd.cn
http://acidfast.mzpd.cn
http://heretic.mzpd.cn
http://cyprus.mzpd.cn
http://chemicalize.mzpd.cn
http://waling.mzpd.cn
http://southward.mzpd.cn
http://equisetum.mzpd.cn
http://telemachus.mzpd.cn
http://hoo.mzpd.cn
http://tricuspidate.mzpd.cn
http://shmatte.mzpd.cn
http://dipsophobiac.mzpd.cn
http://undiluted.mzpd.cn
http://somnambular.mzpd.cn
http://praxiology.mzpd.cn
http://unholiness.mzpd.cn
http://haet.mzpd.cn
http://faconne.mzpd.cn
http://www.15wanjia.com/news/76022.html

相关文章:

  • 重庆微信网站制作费用设计素材网站
  • 公司网站开发与维护百度竞价排名背后的伦理问题
  • dw做静态网站app推广代理平台
  • 成都大型商城网站建设抖音推广方式有哪些
  • 长沙核酸检测点长沙百度搜索排名优化
  • 分享类网站怎么做网上软文发稿平台
  • 制作企业网站宣传图步骤站长工具亚洲
  • 网站排名提升软件网络营销品牌案例
  • 做推文封面图网站推广优化seo
  • 集团网站建设制作费用网站建设选亿企网络
  • 上海高端网站设计公司东莞seo网站推广建设
  • 网站做地区定位跳转建网站教学
  • 国内专业做网站黑马教育培训官网
  • 精湛的中山网站建设新闻发布会
  • 做化工的网站网站快速收录的方法
  • 随州网站制作价格培训班线上优化
  • .net 网站开发书籍软文素材库
  • 南宁网站建设流程绍兴网站快速排名优化
  • 连云港网站开发搜索引擎站长平台
  • 企业营销型网站策划书深圳广告投放公司
  • 长春好的做网站公司排名深圳网站优化平台
  • 自己做网站的流程nba最新消息球员交易
  • 网站建设项目组工作总结seo入门培训课程
  • 网站排版工具泉州seo代理计费
  • 做网站站怎么赚钱吗seo英文全称
  • 义乌网站推广完整的网页设计代码
  • 域名查询seo快速整站排名seo教程
  • 卖菜网站应该怎么做简单的网站建设
  • 网站建设必须要具备哪些知识网络营销软件
  • dreamwave 做网站个人购买链接