2015-01-14 36 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,感謝您的迴應!我很抱歉寫了一個模糊的問題,但我並不確定哪裏出了什麼問題,所以我不知道如何正確地說出它。我已經找到了一個解決方案,請參閱我的問題的更新部分的解釋(我沒有足夠的字符粘貼在這裏)。 –