Це залежить від методу просторового підрозділу, який ви використовуєте, хоча всі методи підрозділу (як і будь-який метод стиснення) врешті-решт відпадають там, де подальше стиснення не може відбуватися, через структуру даних та інші логічні / математичні фактори. Приклад можна знайти в октрисах. Для кожного вузла в octree потрібно вказувати на його батьків та / або дітей (залежно від способу архітектури структури даних), щоб увімкнути значущий проїзд. Будь-яка структура дерева може містити n дітей. Чим менше співвідношення 1: n, тим ефективніше ви використовуєте простір, а отже, і більший накладний обхід у переході до дерев, оскільки у вас повинно бути більше вузлів предків, щоб містити однакову кількість листових вокселів (у вашому випадку приблизно 510 трлн. з них представляють площу поверхні).
Зважаючи на те, що у вашому випадку першочерговими проблемами є вартість зберігання та надання всієї планети (або її частин) з достатньої відстані, немає жодної структури даних, яку я рекомендував би за октрею. Mipmapping - необхідність: діаметр 12,8 мільйонів метрів при найближчій великій потужності 2 дорівнює 2 ^ 24 = 16,8 мільйона. 24 прохідні рівні для проходження буде складати загальну кількість розгалуження - це дуже дорого як для GPU, так і для процесорів. Але за умови, що ви робите все правильно, вам буде потрібно лише пройти кілька рівнів за один раз. Враховуючи кількість необхідного простору, альтернатив мало і далеко між ними (див. Нижче).
Можливості картування октрисів - це те, що робить його неймовірно потужним інструментом для великих обсягів, таких, як ви описуєте. На відміну від усіх відомих методів підрозділу (за винятком KD-дерев), octree зберігає підрозділ за рівнем мінімальним, тобто візуальні та фізичні відмінності між рівнями mipmap також залишаються мінімальними, що означає набагато більш тонкі дельти в деталізації під час прогулянки вгору та вниз по дереву.
Якщо, з іншого боку, ви хочете створити світ, де ієрархічний обхід сітки зведений до мінімуму, тоді вам потрібно буде торгувати місцем для збільшення швидкості.
Якщо говорити про ідеальне співвідношення 1: n, то в цьому відношенні немає кращої структури, ніж kd-дерево. Там, де octree ділиться на 2 для кожної осі, в результаті чого утворюється 2 ^ 3 = 8 окремих дочірніх клітин, kd дерево поділяється рівно один раз на рівень підрозділу. Проблема в цьому полягає в тому, що ви повинні вибрати гіперплан, на який слід розділити, і цей гіперплан можна було вибрати навколо будь-якої з 3 осей. Незважаючи на те, що він є оптимальним з точки зору простору, це робить 3D-траверси (наприклад, під час реймаршів, основоположний варіант використання октрисів для фізики чи візуалізації) набагато складніше, ніж в октрисі, оскільки динамічна структура портального типу повинна зберігатися для запису інтерфейси між окремими вузлами kd-дерева.
RLE - це ще один підхід до стиснення, але багато в чому складніше застосувати до такої проблеми (де база операцій сферична), оскільки стиснення RLE є одновимірним, і ви повинні вибрати вісь, в якій воно працює. планету, можна вибрати полярну вісь, але будь-який вибір з однією віссю спричинить певні проблеми з переходами для візуалізації та фізики при дії з певних неоптимальних ракурсів. Звичайно, ви також можете запустити RLE у 3-х осях одночасно, збільшивши вдвічі вартість зберігання або в 6 осях (-x, + x, -y, + y, -z, + z) для подальшої оптимізації.
Отже, щоб відповісти на ваше запитання (чи ні!)
Я не збираюся вступати безпосередньо у відповідь на те, що таке обладнання, але я думаю, що погляд на нього з точки зору octree починає давати вам уявлення про те, що насправді можливо на тому, яке обладнання. Я б закликав вас піти цим шляхом, якщо ви дійсно хочете знати, можливо, найпростіше реалізувати простий рідкий октрис(див. статтю Лайна в реф. документах) і помістіть у неї сферичну оболонку поверхневих вокселів, і подивіться, як виглядає результативне використання місця. Крок звідти. Подивіться, як далеко ви можете дійти до того, як ваша системна пам'ять почне видавати. Для цього не потрібно писати візуалізатор, якщо ви не хочете візуалізації. Також майте на увазі, що це найкраще робити на процесорі - графічні процесори за великим рахунком не мають ємності пам'яті для вирішення проблем такого масштабу. Це одна з причин, по яких Intel прагне рухатися до масово паралельних процесорів: переваги GPGPU, що краще в подібних речах, можна застосувати до далекого простору пам’яті без вузьких місць шин системи. Тут, мабуть, є й інші, або на matematika.stackexchange.com,
З точки зору вашої нескінченної вимоги до дистанційного перегляду, звичайно, але питання завжди зводиться до "скільки деталей на якій відстані". Надання нескінченних деталей вимагало б нескінченних ресурсів. Ось де починає грати міппірування зі змінною за сценою. Також майте на увазі, що всі структури даних втілюють деякий компроміс швидкості для простору або навпаки. Це означає менше / повільніше візуалізацію, якщо ви хочете отримати більший світ за ту ж кількість інженерних зусиль.