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

Рис. 1. Пример модели с текстурами

Рис. 1. Пример модели с текстурами

На рис. 1 приведен пример модели с текстурами. Как добиться подобного эффекта? На самом деле, совсем не сложно. В представленной здесь модели присутствует колонна и две балки. Всем трём элементам назначен материал «Бревно 33». Желаемый визуальный эффект достигается за счёт соответствующей настройки свойств этого материала (см. рис. 2).

Рис. 2. Настройка свойств материала

Рис. 2. Настройка свойств материала

Предполагается, что материалы используются для создания элементов конструкций. Визуальные модели элементов состоят из граней, которые образуют поверхности тел, представляющих эти конструкции. Для большинства конструктивных элементов можно рассматривать следующие основные поверхности: лицевая, тыльная, боковая или торцевая. Если выполняется сечение или разрез конструкции, то актуальной становится также поверхность сечения. Обычно в сечениях применяются штриховки. Штриховка может быть использована также и для поверхности элемента. Набор свойств материала предоставляет возможность назначить цвета для каждой из поверхностей. Цвета выбираются из текущей палитры документа.

Мы предварительно создали в палитре документа цвета «Bark 143» и «Wood 144». Затем назначили эти цвета в качестве, соответственно, цвета лицевой поверхности и цвета торцов.

Здесь важно, как настроить эти цвета. Особенно, цвет торца (см. рис. 3).

Рис. 3. Настройка цвета для торца бревна

Рис. 3. Настройка цвета для торца бревна

Ключевой момент: опцию Реальный масштаб устанавливаем в значение Нет. Это позволит использовать один и тот же материал с одними и теми же настройками для «брёвен» различных диаметров (см. рис. 4). При формировании визуальной модели программа для таких материалов, для которых не требуется привязка к реальному масштабу, генерирует текстурные координаты в диапазоне 0…1. Для балок и колонн это означает, что сэмпл изображения текстуры будет накладываться на весь габарит торца. Это упрощает моделирование, поскольку избавляет от необходимости ручной подгонки.

Рис. 4. Брёвна разных диаметров с одной текстурой

Рис. 4. Брёвна разных диаметров с одной текстурой

Для коры настройки более очевидны. Включаем опцию Реальный масштаб и задаём размеры текстурного сэмпла (см. рис. 5).

Рис. 5. Настройки цвета для изображения коры

Рис. 5. Настройки цвета для изображения коры

В качестве текстуры выбрано изображение непрерывное и бесшовное. Поскольку исходный растр имел размер 1024х512 текселей, в такой же пропорции 2:1 задаём размеры текстуры в миру модели: 800х400 мм.

Программа рассчитывает координаты для «лицевых» поверхностей колонн и балок с учётом того, что требуется реальный масштаб. Ось Х текстурных координат расположена вдоль тела балки и вдоль тела колонны. Ось Y направлена перпендикулярно и как бы оборачивает тело колонны/балки по периметру сечения в поперечном направлении (см. рис. 6). В данном случае это позволяет нам получить желаемый визуальный эффект.

Рис. 6. Система текстурных координат для колонн и балок

Рис. 6. Система текстурных координат для колонн и балок

Однако, в других случаях такое правило текстурирования колонны может нам несколько помешать. На рис. 7 показан случай, когда текстура Кирпич облицовочный, идеально подходящая для моделирования поверхности стен, очень необычно выглядит, будучи применённой к колонне.

Рис. 7. Текстурирование колонны вдоль её высоты

Рис. 7. Текстурирование колонны вдоль её высоты

Разумеется, можно создать копию цветового материала, повернуть в нём текстуру на 90 градусов и применить этот новый цвет к колонне. Но этот подход является не самым рациональным. Во-первых, это приводит к перерасходу ценного ресурса видеокарты – количество текстур. Во-вторых, настраивать и редактировать два материала вместо одного – это лишние трудозатраты.

Начиная с версии 2025, предоставляется возможность корректировать параметры текстурирования на уровне конструктивных элементов посредством диалога Свойства.

Так, для того чтобы добиться корректного изображения в приведенном примере, достаточно изменить направление расчёта текстурных координат, что может выразиться в визуальном повороте текстуры на 90 градусов. Для этого задаём значение параметра Поворот текстуры равное 1 (см. рис. 8).

Другие возможные значения этого параметра: 2 – поворот на 180 градусов, 3 – поворот на 270 градусов, 0 – не поворачивать текстуру, оставить в исходном состоянии.

Имеются также и другие параметры для управления текстурированием.

Рис.8. Параметры текстурирования как свойства элемента

Рис.8. Параметры текстурирования как свойства элемента

Параметры текстурирования поверхностей элемента:

  • Поворот текстуры – возможные значения: 0, 1, 2, 3. Обеспечивают поворот текстуры на угол 0, 90, 180, 270 градусов.
  • Симметрирование текстуры – возможные значения: 0, 1, 2, 3. Обеспечивают либо исходное состояние, либо симметрию текстуры по горизонтали, либо по вертикали, либо и по вертикали, и по горизонтали (3).
  • Смещение текстуры U – смещение текстурных координат (в системе координат текстуры UV) по условной «горизонтали».
  • Смещение текстуры V - смещение текстурных координат (в системе координат текстуры UV) по условной «вертикали».

Смещения задаются в метрах модельного пространства, если текстура представлена в реальном масштабе. Или в относительных единицах от -1.0 до 1.0, если текстура представлена без реального масштаба.

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


Где же хранится информация об используемых цветах и материалах?

На вкладке ленты Сервисы панель Настройки имеется команда Настройки программы, которая вызывает диалог Настройки программы. В окне диалога в разделе Размещение данных параметр Библиотека определяет путь в каталог где в подкаталоге, соответствующем языку локализации (RU, EN и т.д.), можно найти подкаталог Palette. Например, …\Library\RU\Palette. В этом подкаталоге имеются файлы:

LiraCAD_Colors.pal – файл палитры цветов содержит описание визуальных характеристик цветоматериалов.

LiraCAD_Materials.dat – файл справочника материалов содержит описание физико-механических, в том числе, нелинейных характеристик материалов, а также цветов, используемых в качестве цветов поверхностей элементов, сделанных из представленных в справочнике материалов. Какие-то цвета здесь могут пересекаться/дублироваться с цветами, представленными в палитре.

Также имеется каталог с именем вида …\Library\RU\Textures, в котором в тематических подкаталогах с названиями на выбранном языке представлен набор текстур.

При старте приложения программа сначала загружает файл LiraCAD_Colors.pal. Если такого файла нет, или загрузка оказалась неуспешной (сбой при чтении, файл пуст, файл повреждён или не того формата), то происходит автоматическая инициализация палитры уровня приложения набором цветов по умолчанию.

При этом цвета снабжаются нужными текстурами из папки …\Library\RU\Textures, если они там есть.

Затем выполняется загрузка справочника материалов и его палитры цветов. Цвета из палитры справочника материалов дополняют или переопределяют цвета в палитре уровня приложения. Таким образом, в палитре могут появиться дополнительные цвета, нужные для визуализации определённых материалов.

Когда приложение уже запущено, но ещё не открыт ни один документ, можно воспользоваться командами Материалы или Палитра цветов на вкладке ленты Сервис, чтобы изучить содержимое справочника материалов и палитры уровня приложения.

Теперь открываем документ.

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

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

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

Часто может возникнуть ситуация, когда цвет, созданный в рамках текущего документа, требуется поместить в палитру уровня приложения. Это позволяет использовать данный цвет в новых проектах повторно, без необходимости заново создавать. Это легко сделать, используя команду контекстного меню Скопировать в общую палитру.

Скопировать в общую палитру – команда контекстного меню, доступного по нажатию правой кнопки мыши на названии нужного цвета в списке цветов в диалоге Палитра (см. рис. 9). По этой команде цветовой материал (попросту говоря, «цвет») со всеми своими характеристиками копируется из палитры документа в общую палитру уровня приложения.

При этом важное значение имеет GUID цветоматериала. Каждый раз, когда мы создаём новый материал, совсем новый или как дубль старого, он получает новый глобально уникальный идентификатор. Если же мы просто модифицируем свойства существующего материала, у него сохраняется прежний GUID. Для программы это значит, что мы не описываем какой-то новый материал, а корректируем/уточняем свойства известного существующего.

При копировании цвета из палитры документа в палитру уровня приложения сначала выполняется поиск цвета с таким GUID-ом в палитре приложения. Если такой есть, то программа обновляет/перетирает его свойства в глобальной палитре на основе настроек, сделанных в текущем документе. Если же это новый материал (нет такого GUID), то он копируется в общую палитру со своим GUID-ом и всеми прочими свойствами (текстура, карта нормалей и т.п.).

Рис.9. Команда «Скопировать в общую палитру»

Рис.9. Команда «Скопировать в общую палитру»

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

Существует альтернативный способ применить в новом документе удачный цвет, ранее созданный в другом проекте. Можно выделить «брёвнышко» в нашем проекте, а затем скопировать через клипбоард в новый документ (Copy/Paste). Элемент балка или колонна, «переезжая» на новое место, прихватит с собой свой материал, а материал подтянет за собой нужные цвета прямо в палитру нового документа, минуя этап хранения в общей палитре уровня приложения.

Когда программа будет сохранять новый документ, она впишет в его файл и характеристики материала, и свойства цветов. Это поможет увидеть проект в другом месте (на другом компьютере) или в другое время в том же виде, как он выглядел в момент сохранения на нашем компьютере. Когда говорим «в другое время», мы полагаем, что палитра уровня приложения может быть существенно модифицирована уже после сохранения документа. Но, когда мы будем его вновь вычитывать из файла, приоритетность палитры документа сослужит нам хорошую службу, и мы увидим проект именно таким, каким видели его в момент записи.

Заметили ошибку? Выделите ее и нажмите Ctrl+Enter, чтобы сообщить нам.

  • 289
Поделиться публикацией:

Олег Палиенко

Ведущий инженер-программист компании «ЛИРА САПР».
Разработка программных комплексов

Другие публикации этого автора


Комментарии

Написать