В компьютерных изображениях и трехмерной компьютерной графике в реальном времени рендеринг портала представляет собой алгоритм определения видимости . Например, рассмотрим среду компьютерной 3D-игры, которая может содержать множество полигонов , только некоторые из которых могут быть видны на экране в данный момент. Определив, какие полигоны в данный момент невидимы, и не отображая эти объекты, можно добиться значительного повышения производительности.
Портальная система основана на использовании разделения пространства для формирования обобщений о видимости объектов внутри этого пространства. Области пространства карты разделены на многоугольные, обычно выпуклые области, называемые зонами , а иногда и секторами . Соседние зоны связаны друг с другом через общие разделительные полигоны, называемые порталами . [1] Подходы, которые предварительно вычисляют видимость зон, называются методами потенциально видимого набора или методами PVS . [2]
Например, в такой компьютерной игре , как «Спуск» , игровая зона может быть разделена на несколько зон. Эти зоны затем будут соединены друг с другом небольшими отверстиями, такими как двери или окна. Эти отверстия называются порталами . Когда необходимо нарисовать зону за порталом, видны только те части, которые можно увидеть через портал. Таким образом, зону можно обрезать по границам портала, чтобы удалить перерисовку. [3]
Использование порталов упрощает задачу игрового движка по определению видимых областей и объектов с любой заданной точки зрения уровня, а также упрощает рендеринг, позволяя использовать каждый портал в качестве усеченной пирамиды обзора области, к которой он ведет. В идеале порталы формируются из ограниченных областей (например, дверей или туннелей), соединяющих две сложные области сцены, где каждая из этих областей должна быть заключена в такое многоугольное тело. [4]
Порталы лучше всего подходят для внутренних сцен, таких как лабиринты. В сценах на открытом воздухе обычно нет предметов, похожих на двери, которые бы четко отделяли одну зону от другой. [5]
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )