UE4解决大地图问题(未完待续)

Posted C4ISR

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4解决大地图问题(未完待续)相关的知识,希望对你有一定的参考价值。

解决地图过大时物体旋转时抖动问题

在大地图中物体旋转抖动是因为物体距离世界原点过远,因为float精度不足造成角度计算误差,因此需要把世界原点设置到摄像机附近或者跟随移动。

http://api.unrealengine.com/CHN/Engine/LevelStreaming/WorldBrowser/index.html

世界原点变换

世界浏览器支持以某任意数据变换世界原点。移动世界原点会导致给世界中所有注册的actor添加偏移向量。每个actor具有一个ApplyWorldOffset函数, 您可以在子类中覆盖该函数来添加额外内容。如果您已经创建了一个继承AActor的新类并在其中存储了绝对位置值 ,那么要使它同世界原点改变正确地协同工作,您必须重写ApplyWorldOffset函数 并在其中移动您的绝对值。在游戏线程中,渲染和物理资源将会同actor并行变换。

巨大的世界和多玩家

在多玩家游戏中,目前还不支持世界原点变换。事实上,没有好的解决方案来处理这个 问题。目前我们仅发现两种方法来实现提供该支持:

  1. 实现您自己的服务器解决方案。我们大部分大型多人在线游戏的授权用户都这么做。
  2. 在客户端和虚幻专用服务器之间实现某种层,它将转换客户端的变动的绝对位置,并将它们传递到正确的专用服务器,该服务器仅存放了客户端所处的世界的部分。

    FVector G = GetActorLocation();
    UWorld* World = GetWorld();
    if (FMath::Abs(G.X) > 50000 || FMath::Abs(G.Y) > 50000 || FMath::Abs(G.Z) > 50000)
    {
    World->SetNewWorldOrigin(FIntVector(G.X, G.Y, G.Z) + World->OriginLocation);
    }

以上是关于UE4解决大地图问题(未完待续)的主要内容,如果未能解决你的问题,请参考以下文章

Django 跨域请求 解决 axios 未完待续

未完待续Java---超出范围的解决方案

前端ie7的兼容问题及解决方案(未完待续)

jq+layui之table表每行的编辑按钮只能点击触发一次的问题的解决(未完待续)

漫谈回溯(未完待续)

JavaSE---反射(未完待续)