[英]Find Offset in Grid
我对这个模糊的标题感到抱歉,但我不确定如何在不具体的情况下问这个问题。 如果你建议一个更清楚的标题,我会尽快改变它。
无论如何,如果没有首先提供一些背景信息,我认为我不能非常简洁地提出我的问题。 在2D空间中,我正在创建“英亩”,其中包含“瓷砖”。
[一英亩64块砖]
为了清楚起见,我们假设在这个特定的例子中,有12英亩,第一行有4英亩,第二行有4英亩,第三行有4英亩。 每英亩有64个瓷砖,八个八个网格。
[十二英亩,每个有64个瓷砖]
我正在生成纹理所需数量的英亩的宽度和高度,乘以每英亩的瓦片数量(在我们的例子中,纹理将是32像素宽[水平行中的英亩数量{4}乘以通过英亩{8}]中的瓦片数量,以及24像素高[垂直列中的英亩数量{3}乘以英亩{8}中的瓦片数量])。 然后用perlin噪声填充纹理,我想用它来为每个瓷砖着色。
[单英亩,64块瓷砖,旁边为它生成的Perlin图像(按比例放大)。 这有一个轻微的随机颜色变化应用于每个瓷砖。]
我想为所有的土地生成一个图像,并在每次创建新的英亩时从中读取,但其中存在问题,以及我的问题的主题。 如何获得偏移,以便每个相邻的英亩继续模式?
[我想要的(为了得到这个,我刚创建了一个更大的瓷砖)]
然而,我目前使用的方法似乎不起作用,并最终创建如下所示的内容。
以下是我正在使用的代码,用于查找(不正确,我假设)偏移量。 该链接指向Gist,其中粘贴了perlin生成函数和acre / tile生成函数。
int xOffset = ( parentAcreXIndex * desiredWidth );
int yOffset = ( parentAcreYIndex * desiredHeight );
new Color ( 0.000f, 0.502f + ( parentWorld.worldPerlin.GetPixel ( xOffset + ( desiredWidth - tileXIndex ), yOffset + ( desiredHeight - tileYIndex )).grayscale * 0.3f ), 0.000f, 1 );
我真的不知道还有什么可说的; 试图弄清楚这一点,我的思绪有点“模糊”,所以如果我遗漏了重要的东西,请原谅我。 请告诉我,我将使用所需信息更新我的帖子。
此外,我对这个问题感到抱歉,一定很难理解。 在我发布之后,我将阅读这几次,看看我是否可以改进措辞。
感谢您的时间! 迈克尔
谢谢你看看这个! 原来问题是我用于可视化的飞机实际上是倒置的。 我将确保将来检查这样的简单事情,对不起给您带来困惑! 我已经离开了这个问题,因为我在这里给了足够的分数来发布图像,当我试图删除它时,这些点被撤销了。 当我获得更多积分时,我会回来删除它。 谢谢!
你似乎在问这个:
如果我有一个像素网格,它被分组为“英亩”(32x32),我如何从给定像素(作为一英亩的行和列)映射到整个像素?
英亩开始于每32个像素,因此对于给定的英亩(acreX,acreY)
acreOriginInTextureX = acreX * 8;
acreOriginInTextureY = acreY * 8;
因此,一英亩内的给定图块(tileX,tileY)将是:
tilePosInTextureX = acreOriginInTextureX + tileX
= acreX * 8 + tileX
tilePosInTextureY = acreY * 8 + tileY
真的是这样的:
tilePosInTextureX = acreX * tilesPerAcreX + tileX
......和Y一样
注意:我假设到处都是零索引。 如果没有,你需要从acreX,acreY,tileX,tileY中减去1,而不是从 tilesPerAcreX或Y中减去1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.