2015-01-14 40 views
3

对于模糊的标题我很抱歉,但我不确定如何问这个,而不是非常具体。如果您建议的标题更清楚,我会尽快更改。在网格中找到偏移

无论如何,我不认为我可以非常简洁地问我的问题,没有先提供一点背景资料。在2D空间中,我创建了包含“瓷砖”的“英亩”。

64 tiles

[其中64个英亩的瓷砖为清晰起见,我们假设,在这个特定的实例,有12亩,四个第一排,四在第二,四在第三。每英亩有64个瓷砖,8×8格。

Twelve acres

[十二英亩,每个具有64瓦]

我生成纹理亩的期望数量的宽度和高度,乘以瓦片的数目在每个英亩(在我们的例子中,纹理将是32像素宽[水平行中的亩数乘以每英亩{8}的瓷砖数量],并且高24像素[垂直列中的亩数{3}乘以英亩{8}]中的瓦片数量)。纹理然后充满perlin噪声,我想用它来为每个瓷砖着色。

perlin

[单英亩,64瓦,旁边的图像培林生成它(按比例扩大)。这有一个轻微随机的颜色变化应用于每个瓷砖。]

我想生成一个图像的所有亩,并从它读取每次一英亩创建,但其中存在的问题,并且我的问题的主题。如何获得偏移量,以便每个相邻的英亩继续该模式?

what I want

[我要什么(得到这个,我刚刚创建一个单一的大瓦)

我目前使用似乎没有方法来工作,但是,和最终创建如下的东西。

Strange Result http://2catstudios.github.io/images/StackOverflow/150113_Grid_Offset/Perlin_Twelve_Acres_NoSpace.png [奇怪结果]

以下是我目前使用找到的代码(不正确的,我假设)所抵消。链接指向一个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); 

Full class (Links to GitHub's Gist), the above line is at 100

我真的不知道该说些什么;我的想法有点“雾”,因此试图弄明白这一点,所以请原谅我,如果我留下了一些重要的东西。请让我知道,我会用我所需的信息更新我的帖子。

此外,我对这个问题感到抱歉,它一定很难理解。在我发表后,我会多读几遍,看看我能否改进措辞。

谢谢你的时间! 迈克尔

编辑

感谢您抽空看看这个!事实证明,问题在于我用于可视化的飞机实际上是颠倒的。我会确保在将来检查那些简单的事情,对于混淆抱歉!我已经留下了这个问题,因为我在这里得到了足够的观点来发布图片,当我试图删除它时,这些点被撤销了。当我赚取更多积分时,我会回来删除它。谢谢!

+0

您的'奇怪结果'图像链接已打破。 –

回答

0

你似乎会问这样的:

如果我有个像素,其被分为“亩”(32×32),如何从一个给定的像素图的网格(作为一个行和col英亩)到整体像素?

英亩开始在每第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.

+0

Phil H,感谢您的回应!我很抱歉写了一个模糊的问题,但我并不确定哪里出了什么问题,所以我不知道如何正确地说出它。我已经找到了一个解决方案,请参阅我的问题的更新部分的解释(我没有足够的字符粘贴在这里)。 –