世界坐标到纹理坐标

时间:2018-03-05 22:37:06

标签: c# math 3d terrain

我正在为我的游戏制作地形编辑器,目前正在使用纹理绘画部分。

我的地形被分成32块的块,每块都有一个"层"纹理尺度为128

所以我的问题是我有这些变量

public int ChunkSize = 32;
public int LayerTextureSize = 128;

我需要做的是从我从光线投射到世界的一个点转换到纹理上的点,当我将LayerTextureSize与ChunkSize相同时,这很容易,因为我可以做到

var hit = Raycast(MousePos);
var chunkX = (int) (hit.x / (TerrainGlobals.ChunkSize));
var chunkY = (int) (hit.y / (TerrainGlobals.ChunkSize));

var pixelPosX = hit.x % (TerrainGlobals.ChunkSize);
var pixelPosY = hit.y % (TerrainGlobals.ChunkSize);
ApplyTexture(chunkX, chunkY, pixelPosX, pixelPosY);

虽然当LayerTextureSize更大,然后ChunkSize它只会画在角落里。 在上面的代码中,我不使用LayerTextureSize,因为这里假设layersize与chunksize相同

0 个答案:

没有答案