Справка DIGIMINE

Вкладка "Наложения" диалога 3D окон

Вкладка "Наложения" диалога 3D окон

Previous topic Next topic  

Вкладка "Наложения" диалога 3D окон

Previous topic Next topic  

 

На вкладке "Наложения" задаются параметры отрисовки объектов, совпадающих в пространстве (наложение объектов).

 

 

 

В 2D окнах объекты по порядку рисуются в окно и тот объект, который рисуется позже, рисуется поверх ранее отрисованного объекта, то есть закрывает его.

В 3D окнах используется другой принцип отрисовки – для каждой точки (пикселя) окна, которая участвует в формировании изображения объекта, вычисляется ее координата в направлении, перпендикулярном плоскости окна (относительно наблюдателя). Если новая точка оказывается ближе к наблюдателю, чем ранее выведенная, то производится запись новой точки в буфер, где формируется изображение, иначе новая точка пропускается.

Из-за того, что вычисления всегда имеют некоторую погрешность (сколько знаков после точки ни задавай, погрешность все равно будет), может возникнуть неоднозначность в определении того, какому объекту должна принадлежать конкретная точка окна.

Основные проблемы возникают обычно применительно к отрисовке полигонов, в том числе и треугольников.

 

Проблема первая – отрисовка ребер полигона (или других полилиний, попадающих в плоскость полигона) относительно заливки полигона:

 

 

Для того чтобы ребра полигона рисовались четче, используется "штатный" механизм OpenGL, при котором в процессе заливке полигонов производится некоторое смещение полигонов в сторону от наблюдателя, в результате чего точки заливки не конкурируют с точками, формирующими изображение ребер, и получаются более четкие ребра:

 

Включение такого механизма производится, когда в диалоге заданы ненулевые значения в элементах диалога:

- Коэффициент, задающий смещение;

- Коэффициент, учитывающий наклон.

Второй коэффициент не оказывает влияния на объекты, лежащие в плоскости, параллельной плоскости окна.

По умолчанию оба коэффициента равны 0.5. Обычно подбор коэффициентов ведется в диапазоне от 0.0 до 1.0. Если коэффициенты будут отрицательными, то произойдет смещение заливки полигонов к наблюдателю и ребра не будут видны.

Эти коэффициенты оказывают влияние на смещение заливки всех полигонов во всех файлах, но не оказывают влияния на линии и точки.

 

 

 

В ряде случаев имеет место другая проблема - когда одни полигоны лежат в той же плоскости, что и другие полигоны. Например, верхняя площадка кубиков блочной модели имеет ту же высотную отметку, что и площадка горизонта:

 

В этом случае на площадке горизонта появляются пятна – то рисуются точки из модели, то рисуются точки из файла с поверхностью.

 

Для того чтобы добиться однозначности в подобных ситуациях, предусмотрено смещение всех объектов файлов в зависимости от порядка следования файлов в списке файлов проекта. Такое смещение задается параметром диалога Абсолютное смещение, м.

 

Первый файл из списка файлов проекта отрисовывается без смещения, для каждого следующего отрисовываемого файла все объекты приближаются к наблюдателю (относительно объектов предыдущего отрисовываемого файла) на величину смещения.

Обратите внимание на то, что смещения накапливаются. Если задано смещение 0.02м, а в проекте загружено 10 файлов (и все отрисовываются), то для последнего файла смещение будет 0.18м. Поэтому с этим параметром необходимо работать очень аккуратно, чтобы не получить неприемлемых искажений.

 

Заметим, что смещения объектов при отрисовке не оказывают влияния на координаты объектов, используемые при вычислениях.

 

Если для приведенного выше примера, задать Абсолютное смещение равным 0.01м и разместить в списке файлов проекта файл с поверхностью после файла с блочной моделью, то получим:

 

 

Если упомянутые файлы поменять местами в списке файлов проекта, то будет:

 

Обратите внимание, что на последнем рисунке линия верхней бровки нижнего горизонта "просвечивает" через блочную модель. Для того чтобы с помощью рассматриваемого механизма убрать такое просвечивание, потребовалось бы большее смещение. В конкретном приведенном примере даже лучше, чтобы было видно линию верхней бровки.

 

Наложения полигонов, находящихся в одном и том же файле, специальным образом не обрабатываются, поэтому возможна "пятнистость" участков таких полигонов.

 

 

 

 

На рассматриваемой вкладке имеется один управляющий элемент, не имеющий отношения к наложению объектов друг на друга.

Просто на этой вкладке имеется свободное место, которое подошло для этого элемента.

Использовать нормали к точкам треугольников, а не к треугольникам в целом - При отрисовке треугольников моделей поверхностей освещенность каждого из треугольников рассчитывается в соответствии с задаваемыми нормалями к треугольникам.

Задается либо одна нормаль к плоскости каждого треугольника, либо 3 нормали к точкам каждого треугольника.

В том случае, когда используются нормали к точкам, скорость отрисовки существенно выше, чем в случае, когда используются нормали к треугольникам, но внешний вид получаемых треугольников зачастую предпочтителен для случая нормалей к треугольникам.

Ускорение отрисовки в случае использования нормалей к точкам заметно для моделей поверхностей с большим количеством треугольников, а для относительно небольших моделей (количество треугольников порядка нескольких сотен тысяч) разница в скорости отрисовки не особо заметна.