Я делаю игру unity3d, которая требует использования воксельного движка для создания структур, за исключением того, что я планирую включить больше моделей, чем простые кубы, и некоторые из них довольно маленькие. Поэтому мне нужно, чтобы воксели были меньше 1 единичной единицы каждый (3 на единицу). Проблема в том, что у меня проблемы с преобразованием между мировым пространством и координатами вокселей из-за неравных размеров (если бы они были одинакового размера, это не было бы проблемой). Это то, что я пробовал до сих пор:
public Vector3 GetIndexFromWorld(Vector3 worldPos, Vector3 normals) {
float half = ((1f / (float)VoxelsPerMeter) / 2f); // VoxelsPerMeter equals 3
Vector3 point = worldPos + normals * -half;
return new Vector3(Mathf.RoundToInt(point.x) * VoxelsPerMeter, Mathf.RoundToInt(point.y) * VoxelsPerMeter, Mathf.RoundToInt(point.z) * VoxelsPerMeter);
}
Заранее благодарю за любую помощь.