Articles of 格

导航网格和2D图片

寻找一些帮助/方向; 我正在编写一个插件来从我的游戏中的任何2D地图生成导航网格,并且遇到了障碍。 为了解释,网格的三角形正在产生: 首先,在地图的“碰撞”层上使用行进平方(Marching Squares)algorithm。 多次传递提取在此图层上find的所有块“船体”。 完成后,我在步骤1生成的边上运行约束Delaunayalgorithm。 (实际的寻路工作正常,使用星型和漏斗algorithm来获得最佳path,需要调整,但只是次要的东西) 现在,它第一次工作,技术上是完美的,除了当那些船体内有孔洞或可通行区域时。 这是国际海事组织的一个可行的scheme,地图可能会阻止其中的分区。 根据我对行进方块的理解,无论如何都不应该find内部轮廓,所以我想知道我是否在这里使用了正确的algorithm – 如果不是,我应该使用什么来计算碰撞产生的所有轮廓边瓷砖? 我进行的很多研究都是关于游行广场的,但是在这种情况下肯定是行不通的? 下面的图片希望能说明问题,如果我的解释不够: 图1显示了Marching Squares发现的“充满”的船体; 一切正常图2显示了一个类似的船体,但具有可通行区域(黑色)以及较小的碰撞区域/边缘 有什么想法吗?

如何在虚幻引擎4中制作2D世界政治版图?

有人可以解释在虚幻引擎4中制作二维世界地图的基础(例如类似于在鼠疫公司使用的文明,文明的年代等) 我已经看到它是统一的,但在虚幻引擎4中找不到任何类似的内容… 谢谢。

程序网格的拓扑结构是重要的吗?

我一直在做一个项目,涉及生成3D游戏模型,大多是硬质表面的,程序上。 我必须担心保持拓扑清洁吗? 拓扑结构会影响纹理,还是会对我没有想到的模型产生任何其他影响?

在MonoGame中确定模型的“边界框大小”(不是比例)

我正在努力把我导入到我的物理系统中的一些3D模型集成到一起,试图把它们的“尺寸”作为我的物理系统中的对象的一面。 当我说尺寸时,我主要是指我的模型周围的边框尺寸。 以下是我devise的testing级别布局示例: 下面的所有立方体在Blender中都是1×1单位(从中心测量),所以我能够在这些假设中编码。 然而,当你考虑斜坡和较小的平台时,它会变得更有趣。 对于斜坡,我发现了一个简单的黑客(只要他们的大小仍然是1×1)。 但是,这些平台正在抛弃我。 平台模型需要注意的几件事情: 模型本身以(0,0,0)为中心,在对象模式下模型本身没有缩放 我在编辑模式下缩小了模型的Z值,而模型本身保持在(1,1,1)缩放 我现在试图找出如何获得模型的某种forms的大小。 对于我正在寻找的,如果我们假设我有的立方体的边界框大小为(1,1,1),那么这个平台将是一个边界框大小(1,1,.25)。 我会假设我需要看模型的网格来确定这一点,但我不完全确定 任何帮助,将不胜感激。 谢谢!

3dsmax和Unity3d规模的问题

我改变了Blender中的单位,使它们与Unity 3d相同。 如果我在Blender中制作一个1m ^ 3的盒子,它将会和标准的立方体一样的大小。 使用3ds max时,我将单位设置更改为公制,并确保它在系统单位设置选项卡中为厘米。 但是,当我导入在Blender中制作并用于Unity的obj文件时,它非常小巧。 我必须将模型转换为导入的米,然后在导出的时候,我必须将模型尺寸设置为.01,否则在统一场景中是巨大的。 我试过把最大单位改成米,没有任何改变。 你如何改变最大单位/网格设置,所以一个网格单位是1m ^ 2,完全等于单位网格?

一次生成2D距离网格

我试图生成一个2D网格,用于导航,其中每个网格点保持到最近的障碍物的距离(如不可通行的地形或建筑物)。 因此,例如,包含障碍物的网格点将是0,其旁边的网格点将是1,远处的下一个将是2等。 到目前为止,我已经能够使用多个通行证来完成这个任务。 对每一个网格点,每一遍都从所有邻居中取出最低值,然后加一个。 如果我想测量到10个网格点的最大距离,则必须进行10次传递,缓慢递增最远距离网格点。 我的问题是,是否有一种方法来生成这种types的网格在一个单一的通行证? 这个网格会在游戏过程中定期更新,可能会非常大,所以我不想多次循环播放,如果我不需要的话。

六角网格鼠标hover

我一直在努力锻炼的代码,计算正确的行和列在鼠标结束事件以下是我用来绘制网格瓷砖的代码是64×64。 Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint Dim mDestRect As Rectangle Dim mX As Int32 = 0 Dim mY As Int32 = 0 Using mFont As New Font("Segoe UI", 7.0F, FontStyle.Bold, GraphicsUnit.Point) Using mBrush As New SolidBrush(Color.FromArgb(128, Color.Black)) For row As Int32 = 0 To 9 For column As Int32 = […]

网格切片/多平面切割

我有一个巨大的网格,我想用多架飞机切割。 为了简单起见,我想知道如何用单一平面切割网格并重复逻辑。 从等式ax+by+cz+d (1,1,0,0) = (a,b,c,d)考虑平面的(1,1,0,0) = (a,b,c,d)考虑坐标系(1,1,0,0) = (a,b,c,d)的XY平面。 我该如何使用这些信息来切割网格? 任何帮助将是非常宝贵的。

如何查找对象看不到的网格单元格

我正在写一个VB.NET程序。 我有一个网格视图,它是由多个称为网格单元的小单元组成的。 在网格视图中,我放置了一个障碍(红色框)和一个观察者(蓝色框)。 我的任务是find如何find蓝框看不到的网格单元格。 你可以参考下面的截图。 请注意,黄色方块形状不是必需的。 1)我已经考虑遍历网格视图中的所有网格单元格,并检查它们是否被蓝框看到。 但是,在网格视图中可能会有数百万个网格单元,并且循环遍历每个网格单元会花费大量时间并且效率不高。 除了在视图中的所有网格单元中循环以外,还有没有更好的方法来定位网格单元格,而不是通过蓝色框显示? 谢谢。

在2D网格上移动值或切片(1D数组)

我最近把我的练习项目变成了match3types的游戏。 游戏使用一个6×10的网格,在内部存储到一个单一的数组,每个项目是一个正整数(基于0)。 我有一个function来检测相同types的给定大小的组,但是一旦组被删除,上面的瓦片需要被下移。 每个已删除磁贴的无序索引也存储在一个单独的数组中。 我正在使用的语言是Linden脚本语言(LSL),虽然语言特定的答案是不需要的(但非常有帮助),所以即使是一般的例子也是受欢迎的。 编辑:我的recursion函数到目前为止: shift(integer i) // i == index of Grid, COLS == columns/width (6) { if( (integer)grid[i] != -1 ) return; // blocked by deleted value Grid[i] = (integer)Grid[i-COLS]; // copy value from above if(i >= COLS) // haven't reached upper limit of grid { shift(i-COLS); // recursive call up } […]