Разнообразие стилей мебели настолько велико, что даже имеющиеся в продаже обширные библиотеки готовых моделей (например, известные коллекции ArchModels и DOСSH) не в состоянии удовлетворить все потребности дизайнера при моделировании интерьера. Часто приходится прибегать к новым каталогам мебели, появляющимся буквально каждый месяц, при этом довольствоваться нередко небольшими по размеру и недостаточными по качеству фотографиями. Моделировать такие новинки приходится буквально «на глазок», без привязки к конкретным размерам. Дизайнеру важно показать, как эта модель будет смотреться в конкретном интерьере, он не занимается изготовлением рабочих чертежей для производства этой мебели на фабрике, поэтому допустимы некоторые вольности при моделировании.
Дизайнер всегда должен помнить о небезграничных возможностях компьютера и стараться изготовить модель с приемлемым качеством и максимальной экономией ресурсов. Особенно это актуально при моделировании классической мебели стилей барокко, ампир и ренессанс. Большое количество затейливой резьбы и завитушек, выполненное методом полигонального моделирования, может привести к тому, что на построение остальных элементов интерьера у компьютера просто не останется ресурсов. В данном случае уместно будет крупные детали создавать при помощи полигонального моделирования, а мелкие – используя текстуры на основе карт Displace (Смещение) и Bump (Рельефность).
Вообще при создании трехмерной графики очень важно правильно выбрать способ моделирования объекта. Не стоит простые вещи создавать сложными методами. Возьмем для примера часто применяемую цилиндрическую форму. Ее можно выполнить, например, используя примитив Cilinder (Цилиндр) или визуализируемый сплайн Line (Линия). Как вы видите на рис. 2.1, внешне это абсолютно идентичные формы. Однако Cylinder (Цилиндр), созданный с настройками по умолчанию, имеет четыре дополнительных горизонтальных сегмента, лишних для формы, которая не будет изгибаться. При этом форма уже содержит 216 полигонов. Объект, созданный с помощью визуализируемого сплайна, требует намного меньше ресурсов даже по сравнению с оптимизированной формой примитива Cylinder (Цилиндр). Я руководствуюсь таким правилом: все, что можно сделать при помощи визуализируемого сплайна, следует делать только им. При моделировании не забывайте периодически открывать окно информации о сцене File → Summary Info (Файл → Общая информация) и контролировать количество создаваемых вершин и полигонов. Вам постоянно придется балансировать между желанием сделать модель более детальной и необходимостью разумного «облегчения» объекта.
Рис. 2.1. Модели примитива Cylinder (Цилиндр) и визуализируемого сплайна
Можно добавить, что для получения изогнутой формы к цилиндру следует применить модификатор Bend (Изгиб), что тоже потребляет дополнительные ресурсы, а придать сплайну замысловатую форму можно простым добавлением вершин (кнопка Refine (Добавить) свитка Geometry (Геометрия) в режиме редактирования Vertex (Вершина)) и их последующим редактированием. Подобного принципа следует придерживаться и при выборе метода создания любых элементов модели, выбирая оптимальный как по продолжительности работы, так и по ресурсоемкости.
Теперь рассмотрим практический пример. Для начала я выбрал совсем простой стул из каталога «Интерьер-магазин» Московского ЗАО «САЛОН-ПРЕСС» (www.inmag.ru) (рис. 2.2).
Рис. 2.2. Фотография мебели из каталога «Интерьер-магазин»
Как видите, у нас нет ни размеров, ни чертежей. А изготовить модель необходимо так, чтобы по пропорциям она соответствовала масштабу построенной модели квартиры. Как же поступить в таком случае? Возьмем за основу несколько общепринятых правил эргономики, из которых следует, что комфортная высота сиденья стула от нулевой отметки пола лежит в пределах 450–460 мм, высота столешницы стола – 750, барной стойки – 1100 и т. д. Значит, высота от пола до сиденья в нашем стуле будет примерно 460 мм. Даже на глаз видно, что диаметр сиденья заметно меньше высоты от пола до сиденья и меньше диаметра основания несущей конструкции. Возможно, диаметр сиденья лежит в пределах 360 мм, а основания 410–420 мм. Причем высота от пола до сиденья примерно равна высоте спинки. Исходя из этих размеров постройте объекты-лекала в сцене. В качестве единиц измерения используйте сантиметры – ведь именно их вы применяли при моделировании стен квартиры. Тогда при переносе модели стула в эту сцену не потребуется изменять масштаб вставляемой модели (рис. 2.3).
Рис. 2.3. Объекты-лекала для построения стула
Начинайте строить объект с основания. Как вы видите, труба (диаметром примерно 20 мм) не является цельной, и вся конструкция состоит из шести элементов труб разного сечения, объединенных между собой методом электросварки. На концах основания и торцах спинки расположены полукруглые пластмассовые заглушки. Выделите все созданные объекты-лекала и зафиксируйте их командой Freeze Selection (Заморозить выделенное) контекстного меню, которое можно вызвать щелчком правой кнопкой мыши. При этом объекты останутся в сцене, но их нельзя будет трансформировать – вы сможете на них ориентироваться, не боясь, что случайно переместите их. Создайте сплайн Circle (Окружность) с радиусом 21 см на уровне основания несущей конструкции стула. В свитке Rendering (Визуализация) настроек сплайна установите флажки Enable In Renderer (Применить визуализацию) и Enable In Viewport (Увидеть на экране). Параметру Thikcness (Толщина) задайте значение 2 см. Затем создайте сплайн Rectangle (Прямоугольник) с размерами 20 x 20 см и расположите его, как показано на рис. 2.4.
Рис. 2.4. Построение основания стула
Примените к окружности модификатор Edit Spline (Правка сплайна) и присоедините к ней прямоугольник командой Attach (Присоединить) из свитка Geometry (Геометрия) настроек модификатора.
Командой CrossInsert (Вставить на пересечении) из свитка Geometry (Геометрия) добавьте две новые вершины на пересечении окружности и прямоугольника. Выделите и удалите прямоугольник и ограниченную им часть круга в режиме редактирования Segment (Сегмент) модификатора Edit Spline (Правка сплайна). Основание стула почти готово. Теперь постройте сиденье. Как вы видите, сиденье имеет характерное углубление посередине. Допустим, что оно сделано из фанеры толщиной 8 мм. Самое просто решение – это выполнить форму с помощью сплайна и применить к ней модификатор Lathe (Вращение). Однако созданная таким способом модель с приемлемым качеством содержит слишком большое количество полигонов, что для такой простой детали просто недопустимо (рис. 2.5).
Рис. 2.5. Построение сиденья стула вращением сплайна
Попробуем решить эту задачу другим способом. Постройте в окне проекции Top (Сверху) примитив Sphere (Сфера) с радиусом 15 см. Количество сегментов уменьшите до 18. Преобразуйте объект в Editable Poly (Редактируемая полигональная поверхность), выполнив команду контекстного меню Convert To → Convert to Editable Poly (Преобразовать → Преобразовать в редактируемую полигональную поверхность), которое появляется при щелчке правой кнопкой мыши на выделенном объекте. Выделите и удалите полигоны согласно рис. 2.6.
Рис. 2.6. Выделение и удаление полигонов сферы
Оставшуюся часть уменьшите до 1/4 по оси Y при помощи инструмента Select and Non-uniform Scale (Выделить и неравномерно масштабировать). Примените модификатор правки нормалей Normal (Нормаль), чтобы увидеть результат. Еще раз преобразуйте объект в Editable Poly (Редактируемая полигональная поверхность) для закрепления результата и удобства дальнейшей работы. В режиме редактирования Edge (Ребро) выделите крайние ребра и, удерживая клавишу Shift, инструментом Select and Uniform Scale (Выделить и равномерно масштабировать) растяните их до уровня объекта-лекала (рис. 2.7).
Рис. 2.7. Выдавливание ребер по объекту-лекалу
Примените инструмент Chamfer (Фаска) свитка Edit Edges (Правка ребер) к следующим от наружного края ребрам со значением 0,45 см (рис. 2.8).
Рис. 2.8. Сглаживание внутренних ребер
Снимите выделение с ребер и примените к объекту модификатор Smooth (Сглаживание). В настройках модификатора установите флажок Auto Smooth (Автосглаживание). Не перепутайте данный модификатор с модификатором MeshSmooth (Сглаженная сетка) – при похожих названиях они выполняют разные функции. Теперь осталось применить модификатор Shell (Оболочка), добавляющий регулируемую толщину любому объекту. С помощью параметра Inner Amount (Внутреннее наращивание оболочки) зададим толщину оболочки 4 см (это значение компенсирует нарушение параметрических свойств объекта после манипуляций с масштабом) и получим толщину 8 мм, то есть толщину фанеры, из которой и сделано наше сиденье. Сиденье готово. Оно имеет немного неровные края, но зато содержит всего 360 полигонов, а не 5000, которые бы получились при использовании вращения. На расстоянии неровность краев будет малозаметна. Однако при желании вы можете выделить крайние вершины и применить к ним инструмент Chamfer (Кромка). Его можно применить и к крайним ребрам – в результате получится характерный скос на торцах сиденья. Количество полигонов увеличится до 504, но и в таком случае это в 10 раз меньше, чем при моделировании с помощью вращения. Еще раз преобразуйте модель в Editable Poly (Редактируемая полигональная поверхность). При этом полностью свернется стек модификаторов, и высвободятся уже ненужные на данном этапе ресурсы. Теперь в окне Summary Info (Общая информация) видно, что модель имеет всего 252 полигона. Готовое сиденье показано на рис. 2.9.
Рис. 2.9. Готовая форма сиденья
Теперь можно приступить к изготовлению спинки стула. Наиболее очевидный метод – создание сплайновой формы с отверстиями по контурам спинки, а затем применение модификаторов
Extrude (Выдавливание) и Bend (Изгиб). Однако посмотрим, что получится в результате. Постройте сплайновую форму, показанную рис. 2.10, сверяя размеры с формой-лекалом и фотографией.
Рис. 2.10. Сплайновая форма спинки стула
Примените к форме модификаторы Bend (Изгиб) и Extrude (Выдавливание). Результат, как говорится, налицо (рис. 2.11). Не буду вдаваться в подробности, почему модель получилась такой неудачной, скажу только, что применение модификатора Shell (Оболочка) приведет к такому же печальному результату.
Рис. 2.11. Пример неудачного моделирования
Что же делать? Отказаться от такого легкого и быстрого решения и найти другие способы? Попробуем решить эту проблему, совместив сплайновое моделирование с полигональным. Удалите из стека модификаторы Extrude (Выдавливание) и Bend (Изгиб). Удалите также сплайны, образующие отверстия в спинке стула. Откорректируйте с помощью удаления лишних вершин форму так, как показано на рис. 2.12. Включите трехмерную привязку, щелкнув на кнопке Snaps Toggle (Включить привязку) на панели инструментов. Переключитесь в режим редактирования Vertex (Вершина), в свитке Geometry (Геометрия) нажмите кнопку Create Line (Создать сплайн) и добавьте на объект несколько дополнительных линий (см. рис. 2.12).
Рис. 2.12. Сплайновая форма спинки стула
Обратите внимание, что в местах пересечения сплайнов должны быть вершины. Примените модификатор Bend (Изгиб) с небольшим параметром изгиба по оси Y. Еще раз преобразуйте объект в сплайн командой Convert To → Convert to Editable Spline (Преобразовать → Преобразовать в редактируемый сплайн) контекстного меню. Переключитесь в режим редактирования Vertex (Вершина). Выделите две центральные группы вершин и щелкните на них правой кнопкой мыши. В появившемся контекстном меню измените тип вершин на Smooth (Сглаженная). Примените модификатор Surface (Оболочка) и преобразуйте полученный объект в Editable Poly (Редактируемая полигональная поверхность) (рис. 2.13).
Рис. 2.13. Преобразование модели в Editable Poly (Редактируемая полигональная поверхность)
Создайте в окне проекции Right (Справа) сплайновые формы окружностей, которые будут формировать отверстия в спинке стула, и командой Attach (Присоединить) объедините их в одну форму (рис. 2.14).
Рис. 2.14. Сплайновые формы-отверстия
Теперь выделите модель спинки стула, перейдите на вкладку Create (Создание) командной панели, выберите из раскрывающегося списка строку Compound Objects (Составные объекты) и щелкните на кнопке ShapeMerge (Присоединить форму). Оставьте все значения заданными по умолчанию, нажмите кнопку Pick Shape (Взять форму) и щелкните в окне проекции на созданной группе окружностей. Формы окружностей спроецируются на спинку стула по оси Х. Удалите ненужные больше формы окружностей и преобразуйте модель спинки в Editable Poly (Редактируемая полигональная поверхность). Перейдите на уровень Polygon (Полигон). Спроецированные окружности выделятся автоматически. Удалите их (рис. 2.15).
Рис. 2.15. Удаление лишних полигонов
Присоединенная форма отверстий имеет много лишних хаотично расположенных вершин. Перейдите в режим редактирования Vertex (Вершины) и с помощью кнопки Collapse (Разрушить) свитка Edit Geometry (Правка геометрии) удалите лишние вершины, объединяя близкорасположенные группы вершин в одну. Следите, чтобы форма окружностей не искажалась. Скопируйте полученную форму спинки стула по оси Х на 8 мм и назначьте ей модификатор Normal (Нормаль), чтобы сделать видимой обратную сторону полигонов. Преобразуйте полученный объект в Editable Poly (Редактируемая полигональная поверхность) и присоедините к предыдущей форме командой Attach (Присоединение) свитка Edit Geometry (Правка геометрии). Теперь необходимо в режиме редактирования Border (Граница) выделить обе части и объединить их командой Bridge (Мост) свитка Edit Borders (Правка границ). Для этого нужно щелкнуть на кнопке Settings (Настройка) (маленькая кнопка с изображением квадратика) рядом с кнопкой Bridge (Мост) и ввести необходимые значения в появившемся окне (рис. 2.16).
Рис. 2.16. Объединение границ формы командой Bridge (Мост)
То же самое выполните по отношению к отверстиям в спинке – поочередно выделяя взаимонаправленные границы отверстий и объединяя их командой Bridge (Мост).
Последнее, что остается сделать, – выделить ребра по периметру спинки и применить к ним инструмент Chamfer (Фаска). При выделении большого количества ребер очень поможет бесплатный подключаемый модуль Advanced Poly (рис. 2.17), который находится в папке Programs\Подключаемые модули\Advanced Poly прилагаемого к книге DVD.
Рис. 2.17. Применение подключаемого модуля Advanced Poly
Я думаю, вам не составит особого труда смоделировать несколько недостающих деталей при помощи визуализируемых сплайнов и завершить создание стула. Окончательная модель стула после текстурирования и финальной визуализации показана на рис. 2.18.
Рис. 2.18. Окончательная модель стула после визуализации
Описанные методы моделирования нельзя рассматривать как эталонные – это лишь небольшой обзор имеющегося в программе 3ds Max 2008 богатейшего набора инструментов моделирования.
К классической принято относить мебель XVII–XIX вв. преимущественно стилей ампир, барокко и ренессанс. Характерными особенностями такой мебели являются плавность форм и большое количество всевозможных резных и лепных украшений. Моделировать такую мебель достаточно непросто, и, наверное, наиболее удобным методом будет полигональное моделирование. Однако несложные образцы можно выполнять и более простыми способами. Например, на рис. 2.19 показана достаточно простая модель, взятая из каталога «Интерьер-магазин».
Рис. 2.19. Фотография стула «Барокко» из каталога «Интерьер-магазин»
Как видите, качество не очень хорошее. Однако дизайнеру в процессе работы иногда приходится прибегать и к таким не совсем качественным изображениям. В таком случае приходится «домысливать» плохо различимые детали. Правда, на этот раз мне удалось найти в Интернете размеры этого стула, что облегчит задание правильного масштаба модели (рис. 2.20).
Рис. 2.20. Размеры стула «Барокко», найденные в Интернете
Из размеров следует, что высота от пола до верхней точки сиденья 470 мм (обратите внимание, что сиденье имеет характерную выпуклость подпружиненной поверхности и под тяжестью сидящего человека вернется к каноническим 450 мм). Высота спинки от пола – 1000 мм, глубина сиденья – 470 и его ширина – 480. Этих данных достаточно, чтобы построить стул, соответствующий реальному масштабу ранее созданной сцены без приблизительного вычисления размеров, как мы делали в предыдущем разделе.
Наиболее распространенным видом моделирования при построении классической мебели является полигональное, когда работа ведется с Editable Poly (Редактируемая полигональная поверхность). Полигональное моделирование достаточно подробно рассмотрено в книгах такого известного мастера, как В. Верстак[3]. Мне не хотелось бы идти проторенным путем и повторять то, что уже неоднократно и подробно описывалось. Мне кажется, что гораздо интереснее применить в данной ситуации забытый, но весьма интересный и эффективный способ моделирования одной из дополнительных возможностей объекта Loft (Лофтинговые), который относится к группе Сompound Objects (Составные объекты), – метод подгонки по опорным сплайнам (Fit (Подгонка) из свитка Deformations (Деформации)).
Создайте новую сцену и задайте сантиметры в качестве единиц измерений. Сделайте активным окно Top (Сверху) и постройте сплайновый прямоугольник (объект-лекало) шириной 40 см и высотой 20 см. За 40 см мы примем высоту ножки стула до обечайки, на которой держится сиденье. Создайте четыре сплайновые формы, как показано на рис. 2.21. Две верхние формы (помечены на рисунке как A и B) будут линиями ножки стула в двух разных проекциях, прямая линия (C) – начальной лофтинговой формой лофт-объекта, а прямоугольник (D) – формой сечения. К лофтинговой форме можно применить более чем одну форму сечения. При этом важно помнить, что количество вершин в данных формах должно быть идентичным. Кроме того, начальные вершины и порядок нумерации также должны совпадать, чтобы не получилось перекручивание формы. Необходимо следить и за тем, чтобы длина всех линий была по возможности равной.
Рис. 2.21. Линии-сплайны формы ножки стула
Выделите сплайн-путь, перейдите на вкладку Create (Создание) командной панели, из раскрывающегося списка выберите строку Сompound Objects (Составные объекты) и нажмите кнопку Loft (Лофтинговые). Активируйте кнопку Get Shape (Взять форму) и укажите на форму сечения стула (объект D). В итоге получится форма, показанная на рис. 2.22.
Рис. 2.22. Применение инструмента лофтинга (Loft)
Перейдите на вкладку Modify (Изменение) командной панели и разверните свиток Deformations (Деформации) настроек лофт-объекта. Нажмите кнопку Fit (Подгонка), в открывшемся окне (рис. 2.23) отожмите кнопку Make Symmetrical (Применять симметрично). На панели инструментов данного окна щелкните на кнопке Get Shape (Взять форму) (на ней изображена рука, указывающая на кривую линию). В левой части панели инструментов находится несколько кнопок – Display X Axis (Показать ось X) и Display Y Axis (Показать ось Y). Нажмите кнопку (Display X Axis (Показать ось Х)) и укажите на форму, обозначенную на рис. 2.21 как B.
Рис. 2.23. Окно инструмента деформации Fit (Подгонка)
Ножка стула приняла форму первой формообразующей линии, расположенной по оси Х, и сразу же изменила свои очертания. Иногда бывает трудно сразу определить, какая форма относится к оси Х, а какая к оси Y. Если форма получилась не такой, как вы хотели, отмените одну операцию (кнопкой Undo (Отмена) на панели инструментов) и примените к лофт-объекту другую формообразующую линию-сплайн. В итоге у вас получится деталь, больше похожая на изогнутую ножку, чем предыдущая, а в окне инструмента деформации Fit (Подгонка) отобразится форма сплайна с контрольными точками, посредством которых вы можете изменять полученную форму (рис. 2.24).
Рис. 2.24. Результат применения инструмента Fit (Подгонка) к форме по оси Х
Активируйте кнопку Display Y Axis (Показать ось Y) и с помощью инструмента выбора формы Get Shape (Взять форму) выберите форму, обозначенную на рис. 2.21 как А, то есть форму по оси Y. Ножка практически готова. Дополнительно подправить и облегчить форму поможет применение модификатора Vertex Weld (Склеить вершины) со значением параметра Threshold (Порог), равным 0,25, в пределах которого вершины притягиваются и «склеиваются» друг с другом. Эта операция поможет немного упорядочить созданную сетку и в конечном счете уменьшить количество построенных полигонов. При этом форма ножки станет более сглаженной (рис. 2.25). В принципе улучшить созданную форму можно и привычными способами корректировки на уровне вершин или полигонов, преобразовав при этом форму в Editable Poly (Редактируемая полигональная поверхность). Вы можете выбрать наиболее удобный для себя вариант.