Якщо сцена не повністю вписується в пам'ять, ви входите в поле позаязового візуалізації. Тут по суті є два підходи: а) генеруйте свою сцену на вимогу; b) завантажуйте сцену на вимогу
Колишній підхід добре узгоджується з більшістю робочих процесів анімації, де моделі сильно підрозділяються за допомогою, наприклад, Catmull-Clark, і вони можуть стати дуже об'ємною пам'яттю, але самі базові сітки легко вписуються в пам'ять. Pixar має декілька робіт з цього приводу (наприклад, диференціали проміння та керування геометрією багатороздільної здатності для відстеження траєкторії променів у складних сценах ), але суть у тому, що моделі поділяються лише тоді, коли вони потрапляють під промінь, і лише підрозділяються стільки, скільки є розумний для такого променя (наприклад, дифузне взаємовідбиття потребує меншої точності, ніж дзеркальне відображення). Решта обробляється кешом геометрії, який зберігає підрозділені моделі в пам’яті і сподіваємось, що це робить процес ефективним завдяки гарній стратегії виселення.
Поки всі ваші базові сітки зручно вписуються в пам'ять, ви можете легко виходити з ядра та виводити сітки на рівні підрозділу, які ніколи не впишуться в пам'ять. Кеш-пам'ять геометрії також гарно масштабується з об’ємом пам'яті, що дозволяє вам зважувати оперативну пам'ять проти часу рендерінгу. Це було використано і в Автомобілі, які я вірю.
Другий підхід більш загальний і не покладається на велике використання підрозділу. Натомість він покладається на те, що вашу сцену, швидше за все, створив художник і вже розбивається на досить невеликі об'єкти, які вписуються в пам'ять індивідуально. Тоді ідея полягає в тому, щоб зберегти дві ієрархії (kD-дерево або обмежувальну ієрархію томів): ієрархію верхнього рівня, що зберігає лише обмежуючі поля об'єктів у вашій сцені, і ієрархію низького рівня, що зберігає фактичну геометрію. Для кожного об'єкта існує одна така ієрархія низького рівня.
При такому підході ви в ідеалі вже зберігаєте обмежувальне поле разом із кожним об'єктом на диску. Під час завантаження сцени ви спочатку будуєте лише ієрархію верхнього рівня, тобто ви повинні дивитись лише на обмежувальні поля, а не на геометрію. Потім ви починаєте відстежувати промені і проходити їх по ієрархії. Щоразу, коли промінь потрапляє у вузол листків в ієрархії верхнього рівня (тобто він потрапляє в обмежувальне поле об'єкта), цей об'єкт завантажується в пам'ять і будується його низька рівень ієрархії. Потім промінь продовжує шукати цей об’єкт. У поєднанні з об'єктом кеша, який зберігає якомога більше ієрархії низького рівня в пам'яті, це може працювати досить добре.
Перша перевага такого підходу полягає в тому, що об'єкти, які ніколи не потрапляють, ніколи не завантажуються, це означає, що він автоматично адаптується до видимості у вашій сцені. Друга перевага полягає в тому, що якщо ви відстежуєте багато променів, вам не доведеться негайно завантажувати предмет, коли він потрапляє променем; натомість ви можете утримувати цей промінь і чекати, поки достатньо променів потрапить на цей об’єкт, амортизуючи навантаження за кілька ударів променів.
Ви також можете поєднати такий підхід з алгоритмом сортування променів, таким як сортування відкладеного затінення для відстеження виробничого шляху, щоб уникнути лущення через некогерентних променів. Згаданий документ описує архітектуру рендерера Hyperion Disney, що використовується для Big Hero 6, я вважаю, тому він, швидше за все, може обробляти сцени в масштабах виробництва.