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);
    }

转载于:https://www.cnblogs.com/c4isr/p/ue4_huge_landscape.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值