Есть массив вокселей xyz 16^3 (voxel - это short, пока так))), массив заполнен случайными short
short voxels[16][16][16]
Что хочу сделать:
Разделить массив voxels на чанки по 4*8*8, взять чанк по id и вернуть vector вокселей в этом чанке
Для voxels[16][16][16] получилось бы 16 чанков по 4*8*8, один из этих чанков хочу получить по id и вернуть его воксели
Проблема с написанием этой функции:
*В функции учитываю что voxels может быть разного размера и чанк может быть разного размера
// voxel_size = 16
// world_length = voxel_size = 16
vector<short> get_voxels_from_chunk(short (*voxels)[voxel_size][voxel_size][voxel_size], int world_length, int chunk_size_x, int chunk_size_y, int chunk_size_z, int chunk_id) {
vector<short> result;
int x_offset; // смещение чанка по x
int y_offset; // смещение чанка по y
int z_offset; // смещение чанка по z
for (int i = x_offset; i < x_offset+chunk_size_x; i++){
for (int ii = y_offset; ii < y_offset+chunk_size_y; ii++){
for (int iii = z_offset; iii < y_offset+chunk_size_z; iii++){
result.push_back(*voxels[i][ii][iii]);
}
}
}
}
В чём именно проблема:
Не могу посчитать offset, как мне его посчитать?
Если интересно для чего это всё:
Хочу попробовать написать сжатие атрибутов вокселей, по плану: воксель - id в таблице с информацией о вокселе, поэтому это массив short (кстати до этого я не писал на с++)