海岛大亨3(十大经典航海单机游戏)

游戏攻略 | 2024-05-09| 9

如果我需要在游戏中绘制弯曲的道路我该怎么办? 我会使用贝塞尔曲线和样条曲线。 它们是曲线的标准解决方案。 数学很简单。 他们相当灵活。 但它们也有一些缺点,你还应该将圆弧视为基元。 这是一个比较:

海岛大亨3(十大经典航海单机游戏)插图

推荐:用 NSDT设计器 快速搭建可编程3D场景。

为什么是圆弧?

当使用贝塞尔曲线和样条线进行道路绘制时,通常必须将样条线变成一系列短线段。 这在实践中很好,但也不能令人满意,并且可能会导致某些游戏中出现视觉伪影。 还有一些附带问题,例如表示地块和细分地块,贝塞尔曲线在这些问题上表现不佳。 我想知道是否有其他东西可以代替。

在尝试了一些东西之后,我向我的朋友多米尼克提到了这个问题,他建议我看看圆弧; Steffen Itterhelm 的博客文章也建议使用弧线; StackExchange 上的这个讨论也建议使用弧线。 我玩弧线的次数越多,它们对我来说就越好。

2、特性的考虑

考虑一段路,在游戏中绘制和使用道路需要什么?

海岛大亨3(十大经典航海单机游戏)插图1

1、偏移量

给定偏移量和道路中心,我们需要能够以距道路给定的偏移量绘制一条路径。 为什么?

道路的左右边缘是偏移的。多车道道路中的车道标记是偏移的。道路和与道路相邻的区域之间的边界存在偏移。 SimCity 和 Cities XL 等游戏将这些区域划分为“地块”,放置房屋、工厂、商店等。道路之间的交叉点是通过偏移量计算的。

2、距离

给定路段上的位置,我们需要计算出它沿路有多远。 给定沿路的距离,我们需要找出位置。 为什么?

将位置转换为距离可以让我们计算路段的长度,用于寻路和移动。为了使车辆沿着道路行驶,我们需要将距离转换为位置。将鼠标点击转换为距离也可能很有用。3、构建块:线段

让我们从两点之间的简单路段开始。 最简单的连接是线段。

1、偏移量

海岛大亨3(十大经典航海单机游戏)插图2

要偏移直线,请计算法线 N =rotateLeft(normalize(P2 - P1)),乘以偏移量,然后将该向量添加到端点。

请注意,偏移量可以为负值以朝另一个方向移动。 偏移量使我们能够绘制道路边缘和条纹。 对于弯曲路径,我们需要使用路径上每个点的法线进行偏移。

2、距离

海岛大亨3(十大经典航海单机游戏)插图3

要将距离转换为位置(插值),请计算正切 T = normalize(P2 - P1),乘以距离,然后将该向量添加到第一个端点。

这使我们能够沿着道路移动车辆。 对于弯曲的路径,情况会更加复杂。

要将位置转换为距离(测量值),我们按照相反的步骤操作:减去第一个端点,然后与切线 T 进行点积。

我们可以通过将第二个端点转换为距离来获得道路的总长度, length= (P2 - P1) ⋅ T。请注意,这简化为 ||P2 - P1||,因为 T = normalize(P2 - P1) = ( P2 - P1) / ‖P2 - P1‖,且 (P2 - P1) ⋅ (P2 - P1) = ‖P2 - P1‖²。

4、构建块:贝塞尔曲线

当我想画一条弯曲的道路时,我首先想到的就是贝塞尔曲线。 除了曲线的两个端点之外,贝塞尔曲线还有额外的“控制点”来控制形状。 最常见的两种形式是二次型(有一个控制点)和三次型(有两个控制点)。

这是一条沿着二次贝塞尔曲线绘制的道路:

海岛大亨3(十大经典航海单机游戏)插图4

1、偏移量

海岛大亨3(十大经典航海单机游戏)插图5

事实证明,贝塞尔曲线的偏移本身并不是贝塞尔曲线。 如果你偏移终点和控制点,最终会得到一条宽度不恒定的道路; 它看起来不对。 或者,如果你尝试保持恒定的宽度,并且道路的左/右侧不是贝塞尔曲线或任何容易描述的曲线。 解决方法是将曲线转换为一系列短线段,然后计算每个线段的偏移量。 该图在不使用解决方法的情况下移动控制点,你可以看到它的宽度并不完全恒定:

2、距离

海岛大亨3(十大经典航海单机游戏)插图6

事实证明,贝塞尔曲线的长度无法精确计算。 解决方法是使用近似值,或将曲线变成一系列短线段。

事实证明,插值法并不完全可计算。 同样的解决方法,将曲线变成短线段,也可以用于插值。 还有其他方法,但它们并不那么简单。

5、解决方法:一系列线段

尽管贝塞尔曲线很常见,受到许多图形库的支持并且易于使用,但它们对于道路绘制没有很好的属性。 对于偏移、距离和插值,你可以使用一系列线段来近似曲线,并获得贝塞尔曲线无法精确计算的属性。

你需要多少条线段? 这里有一个权衡。 使用更少但更长的线段可以使近似值对玩家可见,但相邻区域的多边形会更简单,这将使交集和其他计算更快。 Cities XL 和 SimCity 5 支持道路附近的区域(用于农场和建筑物),并且这两款游戏都使用较长的线段。 以下是《城市 XL》的屏幕截图:

海岛大亨3(十大经典航海单机游戏)插图7

如果你告诉玩家他们可以建造“弯曲的道路”,那么一系列短直的道路可能不是他们期望得到的。 如果你把这个部分做得足够短,大多数玩家就不会在意。

我还没有《模拟城市 5》的屏幕截图,但从预览来看,他们的道路比《城市 XL》中的道路要平坦一些。 路段越短,道路看起来就越弯曲。 但是,如果你需要对区域和交叉点执行计算,这些计算可能会更慢。 《海岛大亨 3》和《海岛大亨 4》的道路看起来比《城市特大》或《模拟城市 5》中的道路更加弯曲。以下是《海岛大亨 4》的屏幕截图:

海岛大亨3(十大经典航海单机游戏)插图8

《运动中的城市 2》拥有美丽的道路。 我还不确定他们是否使用贝塞尔曲线或圆弧。 如果他们使用贝塞尔曲线,他们必须创建大量线段,这样玩家就无法分辨。 无论他们在做什么,看起来都非常好。

6、构建块:圆弧

二次贝塞尔曲线的替代方法是圆弧。 两者都不是另一个的超集——贝塞尔曲线不能产生圆弧,圆弧也不能产生贝塞尔曲线。

海岛大亨3(十大经典航海单机游戏)插图9

请注意,圆弧的对称性增加了其令人愉悦的形状,但它也限制了控制点。 考虑圆弧的主要原因是它们不需要贝塞尔曲线的“一系列线段”解决方法。 请注意,你仍然需要将它们转换为多边形才能在 GPU 上渲染它们,但你可以原生的数学形式对其进行推理。

1、偏移量

海岛大亨3(十大经典航海单机游戏)插图10

为了形成一条偏移曲线,我们在每个点加上偏移量乘以法线 N。对于圆弧,法线是半径向量,因此偏移曲线是半径的变化,从而产生另一个圆弧。

我们需要处理的一件棘手的事情是非常大的半径。 直线是半径无穷大的圆弧; 零半径是你永远不想要的。 但是我们想要执行诸如半径加减之类的操作,并且对于大半径,我们可能会遇到数值精度问题。 一种想法是使用曲率(1/半径)或有符号曲率而不是半径。 直线可以表示为曲率为零的圆弧; 无限曲率是你永远不想要的。 另一种选择是检测大半径并切换到线段。

2、距离

海岛大亨3(十大经典航海单机游戏)插图11

圆弧的长度是由圆的长度推导出来的。 它是半径乘以跨度的角度(以弧度为单位)。

要沿圆弧插值,我们将位置转换为角度(除以半径),插值角度,然后转换回位置(乘以半径)

这里我们也可能遇到无限半径的问题,因为我们先除以半径,然后乘以半径。 是否有更好的表示方法可以避免这些问题? 我不知道。

7、Biarcs:两条弧粘在一起

弧线的缺点是它们不如贝塞尔曲线灵活,尤其是三次贝塞尔曲线。 增加弧灵活性的一种方法是将其中两个连接在一起形成双弧。 构建双弧需要两个端点及其切线,但它还有一个额外的自由度。

双弧的一个关键问题是在哪里连接两个弧。 我们想要两个圆弧的切线相匹配的点。 它们匹配的地方都在一个圆上。 在此图中,移动端点和切线,然后将控制点移动到彩色圆圈上的某个位置:

请注意,控制点不在彩色圆圈上会导致两条弧线连接不顺畅。 另请注意圆圈上的颜色:它们显示了生成的双弧的长度。 双弧越短通常越好,但你还需要考虑曲率以及与相邻道路的连通性。

海岛大亨3(十大经典航海单机游戏)插图12

上面的 biarc UI 演示了 biarc 的工作原理,但对于玩家修建道路来说,它并不是一个很好的 UI。 更好的 UI 会将控制点限制在圆上,或者根据一些启发式自动选择控制点。 在 biarc 文献中,没有一种所有人都同意的最佳启发式,因此你可能需要尝试几种,看看哪一种最适合你的游戏。 另外,我的猜测是你甚至不想让玩家控制切线。 你可以轻松选择产生巨大圆弧的切线。 在游戏中,你可能会将道路连接到现有道路,因此切线已经确定。

8、结束语

弯曲路径的默认选择是贝塞尔曲线/样条线。 这是一个合理的选择。 他们易于理解且易于合作。 但是,你需要将它们转换为分段线性曲线才能使用它们。 Cities XL、Tropico 4 和 SimCity 5 都使用贝塞尔曲线。

但对于道路和铁轨,我认为圆弧是一个有趣的选择。 它们在表示和模拟方面具有一些很好的特性,但可能存在半径非常大的问题。 《铁路大亨 3》和《席德梅尔的铁路》都使用它们。 赛车游戏使用它们。 我认为《火车狂热》使用了它们。 还有其他使用圆弧的建筑游戏吗?

这不仅仅是游戏。 Apple 地图和 Google 地图使用线段,而 Transit 应用程序使用圆弧。

使用哪个真的很重要吗? 大多数玩家可能不会在意。 但有些人会。 当我玩《Cities XL》时,我对道路不弯曲以及建筑物不适合形状怪异的道路留下的空间感到非常恼火。 我确实认为弧线值得考虑。

原文链接:http://www.bimant.com/blog/road-curve-selection-in-games/

相关推荐相关推荐

惩戒之箭叫什么名字(惩戒之箭外号)

惩戒之箭叫什么名字(惩戒之箭外号)

作者:NGA-gyb光惩戒之箭韦鲁斯出装推荐 韦鲁斯怎么出装。惩戒之箭韦鲁斯是一个有着超长射程的射手英雄,物理和魔法的混合百分比伤害,让韦鲁斯不管在何时都是一个有着极大威胁到的角色。那么在手游中,该如何操作韦鲁斯呢。被动:复仇之欲击杀英雄或参与 ...

游戏攻略 22 2024-05-17
率土之滨开荒文臣阵容搭配(率土之滨五星文臣推荐)

率土之滨开荒文臣阵容搭配(率土之滨五星文臣推荐)

率土之滨最近又更新了一波大改动,其中的政策系统终于上线!使得率土的玩法又更丰富多层次了!之前内测时就爆料说孙坚、赵云等政策武将异军突起,一些仓库将终于有了用武之地。内政玩法正式上线后,孙坚依旧是被称为神,其政策技能就是双倍扫荡经验,简直 ...

游戏攻略 20 2024-05-17
鬼神吕布开荒阵容搭配(吕布最强开荒阵容推荐)

鬼神吕布开荒阵容搭配(吕布最强开荒阵容推荐)

前言:本文首发于“零氪玩家花席”的公众号,然后发布至今日头条,其他平台看到这一行字就是抄袭。花席每天发一篇新文章,但你不一定收到推送,关注后打开花席的主页点击“文章栏目”就是最新文章。本期队伍推荐: 鬼神骑(弓)投稿玩家:嘤嘤嘤呐这个鬼神骑 ...

游戏攻略 18 2024-05-17
幽冥终结者(混沌终结者)

幽冥终结者(混沌终结者)

今天,我们开始推进穿越火线钢铁终结者的剧情了,本来,我是打算先更地狱终结者,但我发现地狱终结者的剧情比较好理解,反而是这个钢铁终结者的剧情相当难找,于是,作为一个优秀的小编,我决定先做难的这个剧情,因为钢铁终结者的剧情资料非常少,那么, ...

游戏攻略 17 2024-05-17
英雄分身阵容搭配图表(王者荣耀会分身的英雄叫什么)

英雄分身阵容搭配图表(王者荣耀会分身的英雄叫什么)

大家好,我是剑风。星耀钻石段的游走上ban率比起高分段上毫不逊色,依然有可能形成六Ban游走的悲惨景象,如何能在夹缝中选到自己心仪的辅助就变得尤为重要。现版本星耀段位依然强调对线强势一方占优,比起高分段的玩家们配合默契,星耀段的玩家往往并没有 ...

游戏攻略 18 2024-05-17
航空航天之翼(飞行之翼app官网)

航空航天之翼(飞行之翼app官网)

视频加载中...为进一步发挥驻宁高校的理论优势,推动大学生成为高校“思政好声音”的积极传播者和大中小学思政课一体化建设工作的主动践行者,中共南京市委教育工作委员会、南京市教育局借助扬子晚报•少年志融媒平台推出南京大学生“思政好声音”•宁听青春说 ...

游戏攻略 18 2024-05-17
阵容配对战法搭配(神法阵容)

阵容配对战法搭配(神法阵容)

一说起热门武将,相信不少萌新都会想起诸葛亮,吕布这些武将。其实这很正常,毕竟这些武将经常露脸,被人记住也是应该。然而一问到具体强在哪,相信绝大部分萌新都只会说战法强,但怎么强呢?不知道。这可不是一个好现象,毕竟战法是游戏中的重要组成部分 ...

游戏攻略 18 2024-05-17
dnf女魔法师转什么好(110版本女法师转职首选)

dnf女魔法师转什么好(110版本女法师转职首选)

日前,NEXON公开了旗下的手游《地下城与勇士Mobile》(以下称,DNF手游)的魔法师(女)角色的两款全新转职。首先,作为魔法师(女)职业的全新转职,将推出“战斗法师”和“小魔女”。开发商表示,这两款职业均在维持原作《地下城与勇士》角色特点的同时通过 ...

游戏攻略 19 2024-05-17
70级工程学侏儒还是地精(地精工程学和侏儒工程学的区别tbc)

70级工程学侏儒还是地精(地精工程学和侏儒工程学的区别tbc)

作者:NGA-jiqing3503以下工程攻略,已经覆盖所有必备的工程学用品。按照以下顺序冲工程,效率较高。基维斯的各种材料,因图纸获取复杂,不在这里描述,请直接AH购买。正文:(侏儒种族+15工程技能,冲技能过程会产生变化,请自行调整,以最低成本为主)。 ...

游戏攻略 19 2024-05-17
神奇宝贝无限金币钻石版(恐龙神奇宝贝免内购)

神奇宝贝无限金币钻石版(恐龙神奇宝贝免内购)

《神奇宝贝》是上世纪末期便开始连载的动画,成为了90后一代人的童年回忆,即使在今天,也仍然有许多喜欢并关注着它的小伙伴。动画讲述了小智一行人背上行囊一路远行,途中不断遇到敌人或朋友,打败或者收服许多的神奇宝贝的故事。在动画中更是涉及到了几 ...

游戏攻略 18 2024-05-17
游戏后期阵容搭配推荐(0氪平民咸鱼推图最强阵容)

游戏后期阵容搭配推荐(0氪平民咸鱼推图最强阵容)

阵容一:亦壁家杰周瑜+孙策+曹仁+太史慈+甄姬这套阵容如同赤壁之战的豪杰组合,强大的灼免压制能力使他们在面对各种阵容时都能游办有余。但要小心,灼免的姜维或许会成为他们的劲敌阵容二:智勇双全郭嘉+荀彧+诸葛亮+太史慈+吕布郭嘉、荀彧和诸葛亮的智谋 ...

游戏攻略 19 2024-05-17
天刀0氪玩家为什么战力高(天刀功力重要还是战力)

天刀0氪玩家为什么战力高(天刀功力重要还是战力)

你愿意为一款游戏充值多少钱?这是个很难回答的问题,毕竟每个人的情况都不同。有的人倾向于白嫖,有的人倾向于花钱买时间,只为一个“爽”。《天涯明月刀ol》作为一款国产武侠MMORPG网游来说,有着辉煌的过去,将之称之为国产网游发展的“分割线”并不为过。 ...

游戏攻略 17 2024-05-17
方舟阵容搭配推荐最新(方舟人物加点推荐)

方舟阵容搭配推荐最新(方舟人物加点推荐)

[海峡网]主流阵容搭配明日方舟最强阵容汇总 明日方舟常用阵容/主流阵容搭配大全。这里为大家推荐了一些常见阵容的搭配方法,感兴趣的小伙伴一起来看看明日方舟最强阵容汇总 明日方舟常用阵容/主流阵容搭配大全吧。主流阵容搭配本期由清狸まおう我来为大家 ...

游戏攻略 15 2024-05-17
古剑奇谭激活码可以用几次(仙剑奇缘激活码大全)

古剑奇谭激活码可以用几次(仙剑奇缘激活码大全)

就在《逆水寒》玩家热热闹闹的公测期间,曾发行《古剑奇谭》系列和《神舞幻想》的网元圣唐也终于拿出了《古剑奇谭OL》的凌云内测,经历了七次测试的玩家们终于佛系不下去了:“大家不要再提意见了,求马上公测!”《古剑OL》被吹爆?游戏中规中矩而已!删档 ...

游戏攻略 19 2024-05-17
荒海里面5个方块怎么解密(荒海地下一排5个石头怎么激活)

荒海里面5个方块怎么解密(荒海地下一排5个石头怎么激活)

hollow,大家好,这里是内敛,这篇文章说的是【荒海】地下的两次降水位方块解密。涉及到稻妻世界任务《农民的宝藏》中的石板之一(第二个解密旁)。首先是第一个方块解密:站在台阶处,面向四个方块,如图:面向方块(我已经标记上数字),首先击打一号一 ...

游戏攻略 18 2024-05-17
赛尔号能代替六界的弹伤精灵(赛尔号哪些精灵可以弹伤)

赛尔号能代替六界的弹伤精灵(赛尔号哪些精灵可以弹伤)

索比斯 消强减伤必备精灵,如果BOSS是一回合吃不住招的那么这个精灵就很强势,直接养活幻境这样需要堆回合的精灵。对于其他精灵也是比较有效,例如有的平民玩家有圣谱有索伦森,但是没有大表姐这样的高效引爆,就只能靠着撑减伤给咤克斯,然后咤克斯引爆 ...

游戏攻略 23 2024-05-17
风神组队推荐阵容搭配(火影风主后期最强阵容)

风神组队推荐阵容搭配(火影风主后期最强阵容)

哈喽,大家好,我是拾柒。导读:温迪是原神中的“万金油”角色,有没有温迪,可谓是两款游戏。无论是大世界探险,还是秘境、深境螺旋,温迪都能发挥重要的作用。尤其是,1.4版本之后,温迪返场,很多玩家都拿到了温迪,故为大家分享一下,拾柒对于温迪的一 ...

游戏攻略 16 2024-05-17
谜画之塔1攻略中文版(谜画之塔攻略大全图解)

谜画之塔1攻略中文版(谜画之塔攻略大全图解)

查看更多正文字体大小:大解密游戏谜画之塔详细图文攻略中文版——第一(2009-10-0116:19:46)转载捡起红丝巾和地上的纸(门钥匙),把门钥匙放到门上,大门开了。点击老人,他会讲述故事,捡起地面中间的罗盘右侧的椅架上点击,捡红色物体和松鼠画片点击房间 ...

游戏攻略 17 2024-05-17
攻城掠地首充一折平台(攻城掠地内部号申请)

攻城掠地首充一折平台(攻城掠地内部号申请)

智囊猛将齐聚账前,同八方诸侯逐鹿天下。已然历经三十余载的光荣《三国志》系列,凭借着三国题材中最为细致的史实&演义细节考究,历代不断推陈出新的策略游戏玩法,以及美轮美奂的美术呈现,成为了我们三国英雄梦中不可或缺的那一块拼图。如果你想在 ...

游戏攻略 15 2024-05-17
经典街机游戏合集1000电脑版(十大经典过关街机游戏)

经典街机游戏合集1000电脑版(十大经典过关街机游戏)

喜欢玩游戏的玩家一定都知道CAPCOM的大名,CAPCOM一般被国内的玩家们称为卡普空,也被玩家戏称为“卡婊”。作为日本的游戏大厂之一,在整个游戏界也非常有名的存在,旗下有着包括《生化危机》《鬼泣》和《怪物猎人》在内的多款世界闻名的IP。而卡普空真正在 ...

游戏攻略 15 2024-05-17