zoukankan      html  css  js  c++  java
  • 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);
      }

  • 相关阅读:
    课程总结1
    网站概要设计说明书
    数据库设计说明书
    团队项目之7天工作计划
    NABC
    敏捷开发综述
    二维数组最大子数组
    电梯调度
    输出整数数组中 最大的子数组的结果
    【自习任我行】第二阶段个人总结10
  • 原文地址:https://www.cnblogs.com/c4isr/p/ue4_huge_landscape.html
Copyright © 2011-2022 走看看