Глава7. Булевские объекты и построение составных объектов



В ЭТОЙ ГЛАВЕ


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

Использование примитивов в качестве стандартных блоков для создания составных объектов


Прежде всего следует уточнить используемую здесь терминологию. Когда речь идет о создании объекта, состоящего из нескольких объектов, применяется термин "составной объект", поскольку группа имеет в Вгусе особое значение. Составной объект может быть сгруппирован или расформирован. В связи с тем что булевские объекты должны быть сгруппированы, чтобы таким образом проявились их особые булевские свойства, они называются булевскими группами, или просто группами.
Составной объект больше объектов, из которых он составлен. Примитивы Вгусе являются основными стандартными блоками, используемыми для создания составных объектов. Большинство объектов в реальном мире создается подобным образом, и лишь очень немногие из них возникают в уже готовом, сформировавшемся виде. Используя указанный выше способ, с помощью примитивов можно создавать всевозможные объекты: хозяйственные принадлежности, кирпичные стены, специальные приспособления, здания и все, на что только способно творческое воображение.
Кроме того, сложные объекты могут быть созданы в отдельных приложениях трехмерного моделирования, а затем импортированы в Вгусе. Введение в этот предмет представлено в главе 4, однако рассмотрение моделирования в отличных от Вгусе приложениях выходит за рамки этой книги. В данной главе основное внимание уделяется методам работы, которые применяются при моделировании объектов в Вгусе.

Меньше создания, больше дублирования


Для создания составного объекта существует множество кратчайших путей. В частности, для упрощения процесса построения столь сложного объекта можно дублировать составляющие его элементы. Так, для получения симметричного составного объекта следует сначала создать одну его половину, а затем сгруппировать все объекты этой половины, сдублировать их, перевернуть относительно соответствующей оси (например, по команде Flip X или Flip Z) и разместить на месте вторую половину составного объекта. Это же относится к верхней и нижней частям составного объекта, только наряду с дублированием в данном случае применяется команда Flip Y. Принцип "Меньше создания, больше дублирования" действует на всех этапах процесса построения составного объекта - от начального применения одного или двух объектов до последующего многократного дублирования всего составного объекта.
Такой метод отлично подходит для построения архитектурных объектов. Достаточно лишь поставить себя на место какого-нибудь известного архитектора и построить здания или другие сооружения, разместив их в своем мире Вгусе.
Классическим примером в данном случае может служить создание колонны. Для этого необходимо создать цилиндр и вытянуть его по высоте, а затем добавить архитектурные детали в его основании и на капителях, расположив на соответствующих местах другие примитивные объекты. После того как будет получена одна такая колонна, ее следует сгруппировать, сдублировать и создать ряд колонн для портика или аркады. Далее в этой главе будет представлен демонстрационный пример создания колонн, в котором подытожен материал основных разделов настоящей главы, посвященных булевским операциям, многократному тиражированию и объединению сцен.
Однако увлекшись дублированием объектов, не следует забывать об элементе управления Object Conversion, присущей миру Вгусе сетке и единицах измерения, которые были рассмотрены в главе 6.
После того как будут созданы колонны, можно построить на их основании все здание. На рис. 7.1. показан конечный результат процесса построения сложного объекта: начиная с колонны, затем переходя к портику, крыше, фризу и кончая парадной лестницей и другими деталями внешнего убранства древнегреческого храма, изображение которого может теперь украсить любую Web-страницу благодаря присущей Вгусе 4 возможности экспортировать изображения в виде карг изображений HTML. Таким образом, моделирование составных объектов с помощью булевских функций представляет собой интересный и универсальный процесс.

Рисунок 7.1 Древнегреческий храм.


Сложные составные объекты


Другим важным примером применения сгруппирован-ных объектов является возможность управления их нагромождением. В упражнении с башней, приведенном в предыдущей главе, для создания сложного со оружения были использованы многие примитивы. Группирование дает возможность работать без особых затруднений со всеми объектами как с единым целым.
Еще одно преимущество группирования состоит в том, что все сгруппированные объекты выделяются при выполнении щелчка на любом из них (либо в любом месте ограничивающего данную группу объема). На рис. 7.2. показаны башни, которые были созданы с помощью того же самого основного процесса, что и в упражнении, приведенном в предыдущей главе. Однако в них появились некоторые дополнительные объекты, которые невелики по размеру, так что их трудно выделить и легко упустить из виду, например, небольшой цилиндр флагштока и пирамиду флага. Благодаря группированию всех объектов, гарантируется их полное выделение, так что перемещение или изменение размера распространяется на всю выделенную группу, а не на отдельные составляющие ее объекты.

Рисунок 7.2 Две сгруппированные для удобства башни


Что означает термин "булевский"?


Этот термин не имеет никакого отношения к традиционным гимнам, распеваемым верными толпами преподавателей, студентов и выпускников старейших университетов Новой Англии. Тернии "булевский" означает алгебраическую систему описания логических операций названную так по имени ее изобретателя, математика XIX века Джорджа Буля (George Boole). В соответствии с символической логикой Буля сложные вопросы могут быть разделены на комбинации более простых двоичных предложений. В частности, если заданы условие А и условие В, то каким будет единое условие в результате? К простейшим (и наиболее часто используемым) булевским операциям относятся следующие: Булевская логика служит в качестве теоретической основы архитектуры аппаратного и программного обеспечения современных компьютеров. Булевские операторы используются также при выполнении сложного поиска в базе данных либо на Web-сайте (например, для вывода перечня всех книг о компьютерах и программах на английском языке, за исключением программного обеспечения компании Microsoft). Что же касается программного обеспечения трехмерного моделирования, то булевским называется процесс объединения двух или более накладывающихся объектов, в результате чего образуется новая, совершенно иная форма. (Результат выполнения булевской операции нередко называется для краткости булевским.)
В Вгусе могут быть выполнены следующие три булевские операции, которые соответствуют трем приведенным выше логическим операциям: Не пытайтесь найти команду объединения, поскольку для создания булевского объекта в Вгусе для объединяемых объектов назначаются булевские свойства, после чего эти объекты группируются. Именно свойства, которые назначаются для отдельных объектов, определяют тип выполняемой булевской операции.
Каждый объект существует в одном из следующих четырех состояний: нейтральном, положительном, отрицательном и пересекающем. При создании объекта он принимает нейтральное состояние. Нейтральные объекты не принимают участия в булевских операциях, поэтому прежде чем применять к ним булевские операции, такие объекты следует перевести в одно из трех других состояний (об установке этих свойств объектов речь пойдет несколько ниже). Кроме того, один из объектов, принимающих участие в булевской операции, должен быть положительным, поскольку отрицательные объекты либо отрицательный и пересекающий объекты друг с другом не объединяются.
Если все объекты в группе оказываются положительными, объединение происходит, однако получающийся в итоге объект равен общему объему всех объединенных объектов. С точки зрения булевской логики любой объем, который является частью объекта А ИЛИ объекта В, составляет также часть нового объекта. Если же в группу объединяемых объектов входит отрицательный объект, тогда происходит вычитание, причем объем отрицательного объекта вычитается из общего объема. Иными словами, сохраняется только та часть положительного объекта, которая НЕ является обшей для него и отрицательного объекта. А если ввести в группу объектов пересекающий объект, тогда произойдет пересечение. Получаемый в итоге булевский объект состоит только из тех частей исходных объектов, которые перекрываются, т.е. из объемов, являющихся общими для объекта А И объекта В.
На рис. 7.3 (слева направо) приведены примеры всех трех рассмотренных выше булевских операций:
Рисунок 7.3 Четыре булевских конструкции а). В каркасном представлении; 6). В визуализированном по умолчанию виде: в). В визуализированном виде при выключенном режиме Transfer Material of Negative Boolean (Перенос материала отрицательного булевского объекта)


Обратите внимание на небольшие пирамиды в углах ограничивающих объемов. Они указывают на то, что данная группа является булевским объектом. Если же все объекты в группе оказываются нейтральными, тогда углы ограничивающего их объема будут иметь обычный вид, поскольку это не булевский объект.
В Вгусе имеется превосходный "оперативный учебник" по булевским операциям в библиотеке предварительно заданных объектов (Object Preset Library). Для доступа к этой библиотеке следует щелкнуть на кнопке с треугольником, расположенной справа от метки Create в палитре создания объектов (Create Palette). Чтобы выбрать требуемый предварительно заданный объект, следует щелкнуть на его миниатюрном изображении и прочитать его описание. Внимательно прочитав две первые строки, можно получить представление о принципе действия булевских операций. Сначала мы вкратце повторим основы, а затем перейдем к более подробному рассмотрению последствий и методов выполнения этих операций. В конце этой главы приведен демонстрационный пример построения составного объекта.
В предыдущем издании этой книги много места было уделено пояснению отличий между выполнением булевских операций в Macintosh и в Windows. К счастью, эти отличия в версиях для Macintosh и Windows уже устранены (теперь безраздельно властвует система, внедренная в версии Вгусе 2 для Windows). Вряд ли стоит категорически утверждать, что обе версии программы ведут себя в этом отношении одинаково, однако они настолько близки друг другу, что незначительными отличиями между ними можно пренебречь.

Как образуются булевские объекты


Булевские объекты образуются довольно просто. Для этого достаточно назначить соответствующие свойства конкретному ряду объектов, сгруппировать их я выполнить визуализацию полученного результата.
Для назначения булевского свойства следует щелкнуть на кнопке А, расположенной рядом с каркасом объекта, либо нажать комбинацию клавиш Cmd+Option+E (в Macintosh) или Ctrl+AIt+E (в Windows), чтобы открыть диалоговое окно Object Attributes. При этом слева появятся четыре варианта выбора булевских свойств объекта. Напомним, что по умолчанию для новых объектов назначается нейтральное свойство. Таким образом, объекты не являются булевскими до тех пор, пока для них не будет назначено одно из трех других свойств. Если выбрать отрицательное свойство или свойство пересечения, каркасное представление объекта изменится со сплошного на точечное (для отрицательно-го объекта) или пунктирное (для пересекающего объекта). Три разных состояния каркасного представления отдельных объектов приведены на рис. 7.4.
После того как булевские свойства будут назначены для двух или более объектов, последние следует сгруппировать. Для этого необходимо выделить объекты, щелкнуть на пиктограмме G, выбрать команду Objects>Group Objects либо нажать комбинацию клавиш Cmd+G (в Macintosh) или Ctrl+G (в Windows), а затем выполнить визуализацию.

Рисунок 7.4 Каркасное представление объектов в каждом из булевских состояний: а). Сплошными линиями показан положительный (или нейтральный объект, что может ввести в заблуждение); 6).Точечной линией показан отрицательный объект; в). Пунктирной линией показано назначение для объекта свойства пересечения


СОВЕТ
Для назначения булевских свойств «южно воспользоваться соответствующими клавиатурными эквивалентами, не вызывая диалоговое окно Object Attributes. В частности, чтобы сделать объект положительным, следует нажать клавишу Р, отрицательным — клавишу N, пересекающим — клавишу I, а для выключения всех свойств объекта и возврата к его нейтральному состоянию следует нажать клавишу 0.

Все определяется применяемым средством визуализации


В более совершенных приложениях трехмерного моделирования булевские операции постоянно используются для изменения базовой геометрической формы. В частности, если имеется сфера, которая вырезает определенную часть из куба, то в результате получается новая геометрическая форма, не являющаяся ни кубом, ни сферой, но обладающая общими для них характеристиками. Булевские функции в Вгусе отличаются от тех, что имеются в более сложных приложениях трехмерного моделирования, в том отношении, что они не изменяют базовую геометрическую форму. Разумеется, с помощью сферы можно вырезать некоторую часть куба, но в итоге это не приводит к появлению новой геометрической формы. Несмотря на то что после визуализации наблюдается именно такая форма, на самом деле это лишь привлекательная имитация, ловко полученная в результате визуализации. Булевские операции не изменяют геометрическую форму получающейся щ итоге булевской группы. Они изменяют лишь способ интерпретации форм, с которыми средству визуализации приходится иметь дело во время визуализации.
Булевская операция выполняется во время визуализации, а не во время моделирования. Средство визуализации с трассировкой лучей испускает лучи в направлении стены, чтобы таким образом определить ее внешний вид. Если на пути лучей встречается группа, тогда определяется ее состав (в частности, сфера и куб), а также наличие булевских свойств у объектов этой группы (например, отрицательной сферы, вырезающей определенную часть положительного куба). После этого средство визуализации приступает к расчету положения сферы и куба, интерпретируя те части этих объектов, которые подлежат визуализации. Каковы же последствия выполнения визуализируемой с трассировкой лучей булевской операции?
Углубленное рассмотрение булевских объектов


Итак, вооружившись начальными знаниями о булевских объектах, рассмотрим специальные методы их применения в процессе построения составных объектов. В самом деле, булевские объекты могут быть использованы в качестве инструментов для построения составных объектов, как это показано выше на примере сферы и куба. Результаты применения таких объектов в качестве инструментов могут быть столь же разнообразными, как и сами объекты. Здесь невозможно рассмотреть все варианты, поэтому обратимся лишь к некоторым принципам построения составных объектов. Они послужат читателю в качестве собственного архитектора, подрядчика, прораба и мастерового.

Нейтральные объекты


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

Объединение


Объединение является одной из самых основных комбинаций объектов, которые фактически позволяют создать новый объект. При объединении положительных объектов они и образуют более сложную форму, чем каждый из них в отдельности. Это становится сразу же очевидным при объединении объектов, использующих один и тот же общий материал.
Преимущество операции объединения становится вполне очевидным во время работы с прозрачными объектами. В связи с тем что в Вгусе каждый объект считается отдельным элементом, оба перекрывающихся нейтральных объекта будут выглядеть подобно двум перекрывающимся прозрачным объектам. Если требует объединить разные объекты для создания чего-то вроде винной бутылки (рис. 7.7), в этом случае могут возникнуть определенные трудности, как показывает пример сложного объекта, приведенного слева на указанном выше рисунке. А вот сложный объект справа на этом рисунке не страдает подобным недостатком. В последнем случае для всех исходных объектов было назначено положительное свойство, в результате чего получилась отличная стеклянная бутылка.

Рисунок 7.7 Результат группирования положительных примитивных объектов в единую форму. Бутылка слева с остоит из нейтральных объектов, а бутылка справа - из положительных объектов, которые образуют в результате группирования булевское объединение


Методы вычитания отрицательных объектов


В результате группирования отрицательного и положительного объектов форма первого вычитается из второго. На наш взгляд, рассуждать о вычитании объектов будет проще, если прибегнуть, например, к формулировке "сфера вычитается из куба" вместо того, чтобы пользоваться более сложным описанием "создайте отрицательную сферу, а затем сгруппируйте ее с положительным кубом".
В результате последовательного выполнения множества операций вычитания получаются весьма интересные конструкции. На рис. 7.8 показан ряд булевских операций, начинающихся с простого куба (рис 7.8а1). (В спаренных рисунках в левом столбце один и тот же объект показан под разными углами.) Небольшой куб, представленный в каркасном виде на рис. 7.8а2, использован для вырезания куска из исходного объекта, в результате чего получается объект, приведенный на рис. 7.8б1. А теперь добавим еще один, на сей раз более крупный куб, показанный в каркасном виде на рис. 7.8б2. Если сделать его положительным и вычесть из него результат предыдущей булевской операции, тогда получится объект, показанный на рис. 7.8в1. А объект, приведенный на рис. 7.8г1, получен в результате ввода нового положительного объекта (рис. 7.8в2), превращения в отрицательный полученного ранее булевского объекта и группирования обоих объектов. И наконец, если ввести сплюснутую сферу (рис. 7.8г2), вычесть из нее объект, приведенный на рис. 7.8г1, тогда получится изящное пресс-папье.

Рисунок 7.8 Последовательное сложение и вычитание объектов


Если отрицательный объект недостаточно велик для получения требуемой формы, тогда следует создать более крупную вычитаемую группу. Для этого создайте несколько компонентов отрицательной группы. Убедитесь в том, что эти объекты положительны, затем выделите их и сделайте полученную группу отрицательной После этого расположите отрицательную группу таким образом, чтобы вычесть ее из положительного объекта. На рис. 7.9 приведена пирамида, вынимающая форму из цилиндра. Дли того чтобы углубить ее внутрь цилиндра на расстояние, превышающее ее высоту, необходимо сгруппировать положительную пирамиду и куб, сделать эту группу отрицательной, а затем сгруппировать ее с положительным цилиндром, чтобы вырезать в нем требуемую форму. Этот метод применяет ся для вырезания из объектов отдельных участков с помощью местности. Более подробно методы применения булевских видов местности приведены далее в этом разделе.
Безусловно, используя процесс, состоящий из двух и более этапов, можно применять булевские операции для создания вычитающего объекта. В частности, для создания обелиска, приведенного на рис. 7.10в и со стоящего из двух пирамидальных форм, используется длинный положительный пирамидальный объект, по казанный на рис 7.10а. Однако для получения короткого среза этого объекта с помощью еще одной пирамиды требуется сдвоенный отрицательный объект. На указанном выше рисунке показана последовательность построения верхнего булевского объекта. Прежде всего отрицательная пирамида размещается в нижней части положительного куба. Затем оба объекта группируются, в результате чего получается куб с пирамидальным отверстием внизу. После того как будет создана длинная пирамида, булевский объект, образованный из куба и пирамиды, практически готов для среза вершины длинной пирамиды, завершающий создание обелиска. Однако прежде необходимо увеличить высоту куба в соответствии с размером верхней части длинной пирамиды (рис. 7.10б). После этого куб следует выровнять относительно длинной пирамиды (применив команды Align X Center и Align Z Center), назначить для него отрицательное свойство, сгруппировать его с длинной пирамидой и выполнить визуализацию, чтобы увидеть полученный результат.

Рисунок 7.9 Пирамида и куб, объединенные для образования отрицательного объекта


Рисунок 7.10 Компоненты и процесс построения обелиска: а). Отдельные объекты; б). Создание булевских групп; в). Визуализированный обелиск


Пересечение


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

Рисунок 7.11 Обелиск с пересекающимися каркасами


Булевская группа пересечения не может быть создана только из пересекающихся объектов. В этой группе должен быть хотя бы один положительный объект, причем не важно, какой именно объект будет положительным и какой пересекающим, поскольку в результате отобразится только общий для этих объектов объем. В группу также могут входить несколько пересекающихся объектов. На рис. 7.12 показаны сходные результаты выполнения разных булевских операций пересечения. Здесь каждая группа состоит из конуса и двух пирамид, причем пирамиды смещены относительно друг друга на 45е. Слева на рис. 17.12а показан конус, для которого назначено свойство пересечения, после чего он объединяется в группу с двумя положительны ми пирамидами. А группа, показанная на рис. 17.12а справа, образована из двух положительных пирамид, и для нее назначено свойство пересечения. Группа пирамид, в свою очередь, сгруппирована с положительным конусом. Оба рассмотренных выше процесса дают один тот же результат. Кроме того, можно сгруппировать ряд положительных объектов, а затем назначить для вновь полученной группы свойство пересечения, прежде чем объединять ее с другим объектом. На рис. 7.44в, приведенном далее в этой главе, показан результат применения данного метода.

Рисунок 7.12 Два метода пересечения объектов, а). Две группы каркасных булевских объектов; б). Визуализированные результаты выполнения булевских операций


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

Булевские операции и группы


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

Булевские операции над местностями и плоскостями земли


Местность является полноправным членом совокупности булевских объектов в Вгусе. Поскольку вилы местности не относятся к простым геометрическим формам, подобно кубам, цилиндрам, сферам и т.п., при их использовании в булевских операциях следует принимать во внимание особые свойства их формы. Несмотря на то что местность имеет полый вид, с точки зрения булевских операций она считается замкнутым снизу, а следовательно, сплошным объектом. При этом нижний край местности определяется наружными краями квадрата, лежащего в основании местности. Кроме того, в редакторе местности (Terrain Editor) местность можно превратить в настоящий сплошной объект (более подробные сведения по этому вопросу приведены в главе 8). Для создания четкого разреза объекта местностью необходимо помнить, где именно находятся ее края, поскольку все они должны находиться вне краев этого объекта, иначе получится не разрез, а перекрытие. На рис 7.13 показана местность (с назначенным для нее отрицательным булевским свойством), вырезающая часть сферы. Эта местность повернута таким образом, чтобы ее нижняя часть (в которой и располагаются ее края, была обращена вверх и наружу, а верхняя часть вычиталась из объекта. На рис 7.13а показа но каркасное представление местности, а на рис 7 13б визуализированный результат данной операция. В левой половине каждого изображения показан вид местности сбоку, а в правой половине — ее вид спереди. Обратите внимание на то что нижний край местности не полностью удаляет верхнюю часть сферы, а следовательно, оставшийся кусок сферы как бы парит над этим объектом.

Рисунок 7.13 Местность, вычитаемая из сферы; а). Каркасный вид местности сбоку; б). Перспектива


Чтобы устранить подобного рода недостаток, сле дует сгруппировать местность и другой объект для образования более крупного объекта. В связи с тем, что основание местности является квадратным, имеет смысл разместить на нем куб. Ниже приведен быстрый способ такого размещения:
  1. Прежде всего убедитесь в том, что все объекты расформированы. Сдублируйте местность и превратите полученную копию в куб с помощью элемента управления Object Conversion.
  2. Перейдите в пространство объектов в палитре редактирования объектов и воспользуйтесь элементом управления Reposition для перемещения куба (вероятнее всего, по оси y) таким образом, чтобы он простирался от нижней части местности.
  3. Убедитесь в том, что оба объекта положительны, а затем сгруппируйте местность и куб. Назначьте для полученной группы отрицательное свойство. При этом ограничивающий каркас объем выделяется точечной линией.
  4. Сгруппируйте отрицательную группу, состоящую из местности и куба с положительной сферой.
  5. Выполните визуализацию.
Как видите, все довольно просто!
Информация о высоте местности также играет роль в булевских операциях. Вследствие того что местность изменяет свою форму на основании информации о полутонах (подробнее об этом сказано в главе 8), полезно знать, каким образом информация о высоте местности оказывает влияние на булевский процесс.
Нижняя часть объема, занимаемого местностью, определяется по самым нижним точкам местности, соответствующим самым темным ее участкам, определяемым информацией о полутонах. Как правило, это соответствует наружному краю местности. Если с помощью местности требуется вырезать определенную часть примитивного объекта или плоскости земли, то для этого имеются, по-видимому, два способа. В частности, можно перевернуть местность вверх дном и тем самым вырезать требуемую часть объекта, а кроме того, можно инвертировать полутоновую карту местности таким бразом, чтобы низкие ее участки стали высокими и наоборот. Однако оба указанных выше действия дают разные результаты. На рис. 7.14 показаны два вида местности, расположенные на двух кубах. На рис. 7.14а и б каркасы кажутся одинаковыми, однако местность, приведенная на рис. 7.14а, частично перевернута относительно оси у, а у местности, приведенной на рис. 7.14б, инвертирована полутоновая карта. Несмотря на то что в каркасном представлении они кажутся одинаковыми, в визуализированном виде, приведенном на рис. 7.1|4в и г, отличия между ними разительны. Местность, приведенная на рис. 7.14в, вырезает определенный объем, тогда как местность, приведенная на 7.14г, оказывается внутри куба. И здесь на помощь можно призвать аналогию из области математики: местность, приведенная на рис. 7.14в, имеет положительную форму, перевернутую вверх дном и получившую отрицательное свойство, поэтому она и вырезает отверстие в плоскости куба. А местность, приведенная на рис. 7.14г, уже представляет собой отверстие, поэтому назначение для нее отрицательного свойства оказывает на нее такое же действие, как и двойное отрицание, а следовательно, эта местность заполняет куб, а не вырезает в нем отверстие. (Режим предварительного просмотра в редакторе местности также дает ясное представление об ориентации местности, даже если она перевернута.)
Аналогичным образом может быть вырезана часть плоскости земли Приведенный на рис. 7.15 "донный" каньон получили следующим образом: сначала сдублировали несколько видов местности, которые были перевернуты относительно оси у, а затем расположены непосредственно над уровнем земли, превращены в отрицательные объекты и сгруппированы. Обратите внимание на то, что все наивысшие точки местности находятся на одном уровне, как будто их поднятие было чем-то ограничено. Это результат действия плоскости земли, из которой указанные выше виды местности были вычтены.

Рисунок 7.14 Отрицательные виды местности: а). Каркасный вид местности, перевернутой относительно своей оси у; б). Каркасный вид местности с инвертированной полутоновой картой; в). Визуализированный вид каркаса, представленного в части а данного рисунка; г). Визуализированный вид каркаса, представленного в части б данного рисунка


Рисунок 7.15 Донный каньон, полученный в результате группирования нескольких видов местности с плоскостью земли


Некоторые примеры булевских объектов


Особенностью Вгусе является большое разнообразие булевских объектов. Ниже приведен ряд примеров изображений, которые демонстрируют возможности моделирования в Вгусе. В первом изображении "Зонд межпланетного корабля" (Planetary Traveler Probe) Родни Л'оньона (Rodney L'Ongnion) (рис. 7.16) космический зонд создан практически из одних сфер и цилиндров, а также в меру добавленных кубов. Сравните завершенный визуализированный вид этого зонда с его каркасным представлением.

Рисунок 7.16 Зонд межпланетного корабля: а). Визуализированный вид; 6). Визуализированный вид сзади; в). Каркасный вид Автор: Родни Л'оньон


Изображение "Дом Эшера" (Esher House) (рис. 7.17), полученное Хилари Роудс (Hilary Rhodes), является выполненной в Вгусе реконструкцией неправдоподобной комнаты, обращенной лицевой стороной кверху, перевернутой вверх дном и вообще как попало, если рассматривать ее с разных точек наблюдения. Несмотря на множество отличных дополнений в старом стиле, в этой сцене создается иллюзия нереальной реальности благодаря разумному применению вычитания объектов.

Рисунок 7.17 Дом Эшера: а). Каркасный вид; б). Визуализированный вид Автор: Хилари Роудс


Созданный Харальдом Зивертом (Harald Seiwert) сказочный замок, приведенный на рис. 7.18, может служить в качестве учебного пособия по изучению архитектурных деталей. (Справедливости ради следует сказать, что у европейских пользователей Вгусе имеется несомненное преимущество, состоящее в том, что они могут изучать расположенные поблизости замки с натуры!) Благодаря размещению пирамид и кубов в форме ромба для образования двускатной крыши, булевскому вырезанию архитектурных деталей на стенах замка, башнях и бойницах, а также разумной детализации всей конструкции, это изображение может служить наглядным примером создания составных объектов в Вгусе.

Рисунок 7.18 Сказочный замок а). Каркасный вид; 6). Визуализированный вид, Автор: Харальд Зиверт


Связывание объектов


Когда в версии Вryce 3D была внедрена анимация, разработчики посчитали, что целесообразно предоставить и новый способ объединения нескольких объектов в более крупные структуры. Хотя группирования оказывается вполне достаточно для определенных целей, тем не менее, жесткость взаимосвязи объектов в группе препятствует созданию составного объекта, составляющие которого обладают некоторой независимостью. Представьте себе вагоны поезда, отдельные части живого организма или детали машины: во время анимации такого объекта требуется, чтобы он двигался как единое целое, и в то же время отдельные его компоненты должны проявлять разнообразие в движении. Чтобы восполнить этот пробел в Вгусе, было введено связывание объектов.

Родительские и порожденные объекты


Несмотря на то что между многими объектами могут быть организованы сложные взаимосвязи, каждая связь одновременно определяется только между двумя объектами. В этом случае один объект выбирается в качестве "ведущего" по отношению к другому объекту, причем этот ведущий объект называется родительским, а ведомый объект — порожденным. Если в реальной жизни родителей не выбирают, то в Вгусе это вполне возможно. Работая с порожденным объектом, можно выбрать его родительский объект. Хотя порожденный объект следует за родительским, тем не менее, он может действовать и независимо.

Создание связи


Файл сцены, используемый в двух следующих примерах, находится на сопровождающем книгу CD-ROM. Откройте его (он называется LINKING PRACTICE), чтобы попрактиковаться в создании связей. В данном упражнении цилиндр считается порожденным объектом, а конус его — родительским объектом. Существуют два способа связывания одного объекта с другим. В первом способе используются пиктограммы Object Control. Для создания связи достаточно выделить порожденный объект и выполнить перетаскивание от его пиктограммы Linking (Связывание) к предполагаемому родительскому объекту (рис. 7.19). После того как будет начато перетаскивание, пиктограммы Object Control исчезают, а на их месте появляется серая линия, которая пролегает от порожденного объекта к указателю мыши. Перетаскивание следует продолжить до тех пор, пока серая линия не коснется родительского объекта. В этот момент линия и родительский объект выделяются синим цветом, указывая на то, что цель создания связи достигнута. Для завершения данной операции остается лишь отпустить кнопку мыши. Чтобы разорвать связь, достаточно выделить порожденный объект и выполнить перетаскивание от пиктограммы Linking к "пустой" части сцены либо просто щелкнуть один раз на пиктограмме Linking.

Рисунок 7.19 Связывание порожденного объекта с родительским объектом. В данном случае конус - это родительский объект, а цилиндр - порожденный объект а). Порожденный объект выделен, а курсор мыши находится над пиктограммой Linking; б). Перетаскивание связи в направлении родительского объекта; в). Связь касается родительского объекта, в результате чего он выделяется синим цветом


Второй способ предполагает вызов диалогового окна Object Attributes (как уже было рассмотрено в главе 4). Начнем его рассмотрение с уже знакомой нам сцены, содержащей конус и цилиндр. Щелкните на цилиндре, который служит в качестве порожденного объекта, чтобы его выделить, а затем щелкните на пиктограмме А. Далее щелкните на закладке Linking в указан ном выше диалоговом окне, а затем вызовите всплывающее меню Object Parent Name (Наименование родительского объекта), чтобы выбрать объект, с которым требуется связать цилиндр — в данном случае конус (рис. 7.20а). При отпускании кнопки мыши в области Propagate (Распространение свойств) закладки Linking предоставляется несколько вариантов вы-бора (рис. 7.20б). Распространение свойств будет рассмотрено несколько ниже, однако сначала необходимо провести сравнительный анализ связей и групп.

Взаимное влияние объектов при связывании и группировании


В чем заключается отличие связывания от группирования? Изменения, вносимые в группу, распространяются пропорционально на всю группу в целом. При выполнении щелчка на члене группы выделяется вся группа.
Это можно представить себе следующим образом: при манипулировании группой энергия преобразования распространяется во всех направлениях в пределах группы, оказывая влияние в равной степени на каждый ее член. (Что касается способов выделения группы, то здесь, конечно, имеются очевидные исключения, о которых будет сказано несколько ниже.)

Рисунок 7.20 Применение диалогового окна Object Attributes для создания связи: а). Выбор родительского объекта для порожденного объекта из всплывающего меню Object Parent Name; 6). Свойства, которые могут распространяться вдоль связи


Взаимосвязь при связывании осуществляется иначе. В этом случае образуется взаимосвязь между родительским и порожденным объектом, благодаря которой изменения в родительском объекте оказывают влияние на порожденный объект, хотя последний может также действовать независимо. Связи всегда создаются одновременно между двумя, а не несколькими объектами, причем взаимосвязь между двумя объектами несимметрична. В частности, преобразования, выполняемые над родительским объектом, распространяются по связи на порожденный объект, но не в обратном направлении.
На рис. 7.21 приведен простой пример такого поведения объектов. Сцена в этом примере состоит из двух кубов и двух сфер. Верхняя пара кубов и сфер сгруппирована, поэтому вокруг этих объектов в каркасном виде показан ограничивающий объем (рис. 7.21а). С другой стороны, расположенные внизу сфера и куб связаны друг с другом, причем сфера является порожденным по отношению к кубу объектом. На рис. 7.216 показано, что происходит при перетаскивании обоих кубов влево: обе сферы перемещаются влево на одно и то же расстояние. А на рис. 7.21в обе сферы перемещены вправо, но на сей раз за сферой следует лишь тот куб, который находится в одной с нею группе. Как часто бывает в реальной жизни, родительский объект не обращает внимания на то, куда следует порожденный им объект.

Рисунок 7.21 Сравнение поведения связи и группы: а). Верхние объекты сгруппированы, тогда как нижние объекты связаны; 6). При перетаскивании влево обоих кубов за ними следуют обе сферы; в). При перетаскивании обеих сфер перемещается лишь сгруппированный куб


Хотя выше и были подчеркнуты существенные отличия группы от связанных объектов, на самом деле здесь имеется одна хитрость: группа является особым случаем связанного объекта. При формировании группы создается новый объект (группа), который является родительским для всех объектов, находящихся в группе. Это единственный способ одновременного связывания нескольких объектов. На рис. 7.22 показано диалоговое окно Object Attributes для куба, который входит в группу. В области Linking этого диалогового окна обращает на себя внимание тот факт, что родительский объект называется Group 1. Всплывающее меню в данном случае недоступно, и отменить связь с родительским объектом нельзя, поскольку данный объект является частью группы.

Рисунок 7.22 Диалоговое окно Object Attributes, в котором показано, что объект, входящий в группу, на самом деле является порожденным по отношению к объекту под названием Group1


Распространение свойств объектов


Как уже отмечалось выше, группирование объектов осуществляется по принципу "один ко многим" или "многие к одному", тогда как связывание объектов происходит благодаря взаимосвязи родительского и порожденного объектов и носит более избирательный характер. Группа носит более общий характер: ее свойства распространяются на всех ее членов в одинаковой степени. Любые превратности судьбы (т.е. трехмерные преобразования) одного члена группы оказывают влияние на всех остальных ее членов.
Что же касается взаимосвязи связанных объектов, то в этом случае имеется возможность выбрать те свойства родительского объекта, которые будут наследоваться порожденным объектом. Это весьма приближенно напоминает принцип, положенный в основу генной инженерии. Такой выбор свойств может быть сделан непосредственно в закладке Object Linking (Связывание объектов) (см. рис. 7.20б и 7.22). Ознакомимся поближе со следующими свойствами: Offset (Смещение), Rotation (Вращение) и Size (Размер), которые связаны с тремя параметрами в диалоговом окне 3D Transformations, а те, в свою очередь, являются производными от трех основных элементов управления в палитре редактирования объектов: Resize, Rotate и Reposition (хотя и не обязательно в таком порядке). Четвертое свойство Distance (Расстояние) носит в какой-то степени скрытый характер (который будет раскрыт несколько ниже).
При создании связи флажки всех четырех свойств по умолчанию установлены. В итоге образуется довольно устойчивая связь, а поведение связанной пары объектов мало чем отличается от группы. Достаточно переместить родительский объект в любое место, изменить его размер и исказить, и эти же изменения коснутся порожденного объекта. Подобная пара связанных объектов отличается от группы лишь тем, что сгруппированный объект вращается вокруг точки начала отсчета группы или своего рода центра притяжения совокупности объектов. А пара связанных объектов вращается вокруг точки начала отсчета родительского объекта.
Самое интересное начинается после сброса флажков соответствующих свойств. Если оставить установленным только флажок Rotate, тогда можно получить объекты, которые совершенно синхронно вращаются в противоположных концах сцены, хотя они и могут перемещаться независимо друг от друга. А если установить флажок Offset и сбросить все остальные флажки, тогда оба связанных объекта будут согласованно перемещаться по сцене, в то же время изменяя свою форму и угол поворота независимо друг от друга.
Distance не является полноправным свойством, а лишь модификатором других свойств. Если установлен флажок Distance, а все остальные флажки сброшены, то связь между объектами, по существу, не действует. Если вспомнить приведенную выше метафору распространения энергии преобразования от родительского к порожденному объекту, то свойство Distance определяет направление распространения этой энергии и то, как она себя проявляет.
Когда флажок Distance установлен, появляется прямой эффективный канал передачи энергии преобразования от родительского объекта к порожденному. В частности, если родительский объект вращается, тогда вся пара, состоящая из родительского и порожденного объектов, вращается вокруг точки начала отсчета родительского объекта. А если изменяется размер родительского объекта, то вместе с ним изменяется не только размер порожденного объекта, но и пропорционально расстояние между этими объектами. Свойство Distance (в сочетании со свойством Offset) действует подобно жесткому рычагу, изменяя размер, вращая и перемещая порожденный объект вместе с родительс ким объектом. На рис. 7.23 свойство Distance (в сочетании со свойством Offset) фактически представлено в виде такого рычага, что дает возможность получить представление о том, как свойство Distance обусловливает преобразование порожденного объекта (конуса) вместе с его родительским объектом (кубом). Когда флажки Distance и Offset сброшены, преобразования в обоих объектах происходят сходным образом, но независимо друг от друга, за исключением изменения положения, которое вообще не оказывает влияния на порожденный объект. Свойство Offset действует немного сложнее. Когда соответствующий флажок установлен, вместе с родительским объектом перемещается и порожденный объект, однако если родительский объект еще и поворачивается (в частности, при слежении за другим объектом), порожденный объект перемещается таким образом, чтобы всегда быть "привязанным" к одной и той же точке поверхности родительского объекта.

Рисунок 7.23 Свойство Distance, представленное в виде рычага, где куб является родительским объектом, а конус порожденным Левый столбец-флажок Distance установлен. Правый столбец: флажки Distance и Offset сброшены. Верхний ряд: исходное состояние до преобразования; в трех нижних рядах показаны результаты выполнения преобразования родительского объекта. Второй ряд: изменение размера. Третий ряд: изменение положения


Если флажок Rotation установлен, а флажок Distance сброшен, родительский и порожденный объекты вращаются относительно параллельных осей с одной и той же скоростью, однако каждый из них вращается вокруг собственной точки начала отсчета. В результате изменения размера родительского объекта пропорционально изменяется также и размер порожденного объекта, однако расстояние между ними не изменяется. Если родительский объект смещается, то за ним следует и порожденный объект, однако он не пытается оставаться обращенным в ту же сторону, что и родительский объект.
Все отличия в распространении рассматриваемых здесь свойств приведены на рис 7.24, где показано шесть связей родительского объекта с порожденным причем пирамида во всех случаях является родительским объектом. В каждом случае порожденный объект наследует свойства родительского объекта несколько иначе. Особенности распространения свойств показаны в каждом изображении, приведенном на рис 7.24. В левой части этого рисунка (т.е. в первых трех изображениях в каждом ряду) сфера наследует изменение размера, а в правой части — этого не происходит. За исключением изменения размера, остальные свойства устанавливаются в левой и правой половине рисунка зеркально. На рис. 7.24а показано состояние объектов до изменения размера, на рис 7.246 после изменения размера, а на рис. 7.24в состояние объектов до и после изменения размера. Это дает возможность видеть, что собственно происходит во время преобразования. Маркеры начала отсчета каждого объекта показаны, с тем чтобы можно было сравнить положение и взаимосвязь между объектами. В процессе увеличения размера положение точки начала отсчета пирамиды несколько изменяется. (Это происходит в результате пропорционального изменения размера, вызванного перетаскиванием углового управляющего маркера, благодаря которому пирамида увеличивается вверх и влево.)

Рисунок 7.24 Последствия наследования свойств. Пирамида является родительским объектом, а сфера порожденным: а) До изменения размера пирамиды; б). После изменения размера пирамиды; в). Совмещенные состояния объектов до и после изменения размера пирамиды


Обратите внимание на то, что в первом случае, когда свойства Distance и Offset не распространяются, сфера наследует изменение размера своего родительского объекта. Однако местоположение сферы вообще не меняется. Точка начала отсчета сферы находится в том же самом месте. Во втором случае, когда сфера наследует смещение пирамиды, сфера увеличивается, и изменяя свое положение в соответствии с меняющимся положением точки начала отсчета пирамиды. Взаимосвязь между точками начала отсчета родительского и порожденного объектов остается постоянной. В третьем случае распространяется также свойство Distance. При наследовании свойства Distance родительский и порожденный объекты как бы соединяет невидимый рычаг. В частности, при увеличении родительского объекта невидимый рычаг свойства Distance, существующий между обоими объектами, также увеличивается, а это, в свою очередь, приводит к увеличению порожденного объекта. Четвертый случай аналогичен третьему, только размер сферы в данном случае не изменяется. Рычаг свойства Distance увеличивается вместе с увеличением родительского объекта пирамиды, в результате чего сфера удаляется от пирамиды, не изменяя при этом свой размер.
Пятый случай аналогичен второму, за исключением того, что размер сферы в данном случае не изменяется, а наследованию подлежит смещение, так что взаимосвязь между точками начала отсчета обоих объектов остается постоянной. Шестой случай аналогичен первому, за исключением того, что в данном случае размер сферы не изменяется, а кроме того, не наследуется ни расстояние, ни смещение.
Аналогичные пары пирамид и сфер показаны на рис. 7.25, однако на сей раз наследуется вращение. Все три показанные слева сферы наследуют вращение родительского объекта. В первых двух примерах сфера вращается иа месте, А в третьем примере, где наследуется расстояние и смещение, сфера вращается вокруг точки начала отсчета родительского объекта пирамиды. В четвертом примере свойства Distance и Offset обусловливают смещение положения сферы, однако в связи с тем что сфера не наследует вращение родительского объекта, ее ориентация не изменяется. В пятом и шестом примерах никаких изменений, обусловленных вращением родительского объекта, в порожденной сфере не происходит. При внимательном анализе всех рассмотренных примеров обнаруживается, что ни в одном из них нет состояния, соответствующего установленному флажку Distance и одновременно сброшенному флажку Offset. Это весьма тонкое наблюдение. Такое состояние аналогично второму примеру. Тем не менее, не следует принимать данное утверждение на веру, а лучше убедиться в этом лично. Для этого следует обратиться к файлу DISTANCE OFFSET S1XSOME, находящемуся в папке Chapter 7 на сопровождающем книгу CD-ROM.

Рисунок 7.25 Наследование порожденным объектом (сферой) вращения родительского объекта (пирамиды) вместе со свойствам расстояния и смещения и без таковых а). До вращения; 6). После вращения; в). Совмещенные состояния объектов до и после вращения


Но и это еще не все! Что произойдет, если изменить размер и угод поворота родительского объекта? Это приведет к изменению положения порожденного объекта. На рис. 7.26 показаны условия до и после подобных преобразований, а также совмещенные состояния родительского и порожденного объектов до и после преобразований. Это позволяет тщательно проанализировать происходящее.

Рисунок 7.26 Наследование порожденным объектом (сферой) вращения и изменения размера родительского объекта (пирамиды) вместе со свойствами расстояния и смещения и без таковых: а). До вращения и изменения размера; б). После вращения и изменения размера; в). Совмещенные состояния объектов до и после вращения и изменения размера


Иерархическая структура


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

Множественное наследование


Подобно возможности иметь сгруппированные группы, можно также образовать связанные связи. В файле сцены DOUBLE-HIERARCHY, который находится в папке Chapter 15 на сопровождающем книгу CD-ROM и показан на рис. 7.27, представлен тор и связанные с ним четыре пирамиды. С каждой из этих пирамид связан более мелкий тор, который, в свою очередь, связан с четырьмя пирамидами. Если вращается самый старший в иерархии объект тор, то вместе с ним вращаются и все остальные объекты. Вместе с тем каждый порожденный объект тор вращается в противоположном направлении, создавая эффект, подобный карнавальному шествию, от которого у нас захватывало дух в юные годы! Этот эффект можно наблюдать в файле фильма DOUBLE-HIERARCHY.MOV, который находится в папке Chapter 15 на сопровождающем книгу CD-ROM.>

Рисунок 7.27 Связанные связи: верхний тор является старшим в иерархии объектом для четырех пирамид, каждая из которых связана с тором, а тот, в свою очередь, с четырьмя другими пирамидами


Двойные преобразования


Что касается групп и связей, то в этом случае следует остерегаться преобразования как родительских, так и порожденных объектов. (С этой точки зрения группа является родительским объектом, а отдельные ее члены порожденными объектами.) В том случае, если выделяются родительский и порожденный объекты, а затем над ними выполняется некоторое преобразование (в частности, перемещение, изменение размера или вращение), тогда порожденный объект подвергается двойному преобразованию. При этом преобразование порожденного объекта оказывается чрезмерным, поскольку оно происходит дважды: при наследовании преобразования от родительского объекта и в результате преобразования, выполняемого над самим порожденным объектом. Это же относится и к группам, поскольку группа является родительским объектом для всех составляющих ее (порожденных) объектов. На рис. 7.28 для сравнения приведены четыре совокупности объектов. Обе верхние совокупности объектов сгруппированы, а обе нижние совокупности объектов связаны друг с другом. В контекстных меню выделения каждой совокупности объектов показано, какие именно объекты выделены. Обратите внимание на отличия до и после преобразования. Когда выделяется группа и ее член (верхняя пара), куб перемещается в этой группе дальше самой группы, в результате чего взаимосвязь между членами группы изменяется. Аналогично, в третьей паре (верхней паре связанных объектов) выделены родительская сфера и порожденный куб. Результат получается аналогичным: порожденный объект перемещается намного дальше родительского объекта. Что же здесь происходит? Порожденный объект перемещается в два раза дальше, поскольку он наследует перемещение от своего родительского объекта, а кроме того, перемещается сам по себе.
Как видно, практические последствия двойного преобразования имеют весьма важное значение! Поэтому при внесении изменений в связанные объекты это должно быть непременно сделано только по отношению к родительскому объекту!

Рисунок 7.28 Сравнение результатов выделения и преобразования родительского и порожденного объектов при выполнении одних и тех же действий над группой и связанными объектами. Левый столбец: выделенные объекты. Средний столбец: до перемещения объектов. Правый столбец после перемещения объектов. В результате двойного выделения порожденного объекта он перемещается в два раза дальше, чём родительский объект


Как сделать иерархию более понятной


Разумеется, было бы неплохо каким-то образом четко отслеживать все эти сложные взаимосвязи между объектами, чтобы избежать описанной выше ситуации. Увы, в Вгусе не предоставляются визуальные ориентиры, позволяющие судить о связях между объектами, глядя на сцену. (По крайней мере, для групп имеется ограничивающий их каркасы объем.) Тем не менее, определенная помощь может прийти оттуда, откуда ее меньше всего приходится ожидать. Обратимся к сцене, которая уже была представлена на рис. 7.21. Эта сцена состоит из одной сферы, сгруппированной с кубом, и другой сферы, связанной с еще одним кубом.
Для просмотра всех находящихся на сцене объектов и их структурных взаимосвязей необходимо обратиться к лаборатории развитого движения (Advanced Motion Lab — AML). Для этого следует щелкнуть на пиктограмме Advanced Motion Lab, расположенной в палитре изменений во времени (Time Palette) (рис. 7.29), либо нажать комбинацию клавиш Cmd+T/Ctrl+T.

Рисунок 7.29 Щелкните на этой пиктограмме, чтобы войти в лабораторию развитого движения (AML)


Эта лаборатория (рис. 7.30а) имеет довольно внушительный вид. Подробнее она будет рассмотрена в главе 15, а здесь нас интересует лишь одно ее свойство. К сожалению, это свойство не отображается при открытии данной лаборатории в первый раз. Чтобы исправить настоящее положение, установите указатель мыши на кнопке с небольшим прямоугольником, расположенной на правом краю окна данной лаборатории и обведенной кругом на рис. 7.30а, нажмите кнопку мыши и выполните перетаскивание ко второму пункту Show Animated (Показать только подлежащие анимации объекты) всплывающего меню, чтобы таким образом включить данный режим (рис. 7.306). (Если при этом выделены какие-либо объекты, тогда необходимо выключить режим Show Selected (Показать только выделенные объекты)). Непременно выберите и третий пункт Display Hierarchy (Отобразить иерархию) данного меню.
В итоге нижняя половина лаборатории AML будет заполнена многоуровневой временной шкалой, однако нас интересует левая ее часть (рис. 7.30в). На первый взгляд она похожа на список находящихся на сцене объектов, однако при более тщательном рассмотрении оказывается, что в этом списке недостает некоторых элементов. Какие же из этих объектов следует отобразить и какие из них скрыть?
Обратите внимание на два элемента в списке, отмеченных треугольниками. Эти элементы представляют собой составные объекты: группу Group 1 (состоящую из объектов Top Cube (Верхний куб) и Top Sphere (Верхняя сфера)). Если щелкнуть на этих треугольниках, тогда список объектов будет расширен, и в нем появятся все компоненты составного объекта в определенного рода ступенчатом формате (рис. 7.30г).
Этот ступенчатый список имеет иерархический вид, поскольку он представляет иерархию находящихся на сцене объектов. В главе 4 уже упоминалось о том, что внутри Вгусе данные обо всех объектах на сцене хранятся в виде электронной таблицы. Местоположение каждого объекта в такой электронной таблице используется в Вгусе для отслеживания его иерархических связей с другими объектами, особенно с теми из них, которые сгруппированы или связаны. Обратите еще раз внимание на рис 7.30г. Крайние слева элементы ступенчатого списка находятся на вершине иерархии (это единственные элементы, которые отображаются после сворачивания иерархии, как показано на рис. 7.30в). А объекты, отображаемые с отступом вправо, находятся более глубоко в иерархии. В сцене со множеством сложных связей и групп место, выделяемое для данного списка, заполняется довольно быстро (рис. 7.31). Иерархический список объектов в Вгусе носит ограниченный характер по сравнению с аналогичными свойствами в других программах трехмерного моделирования, однако это лучше, чем отсутствие какого-либо аналогичного списка вообще, как, например, в версии Вгусе 2 (в которой также не было никаких иерархий объектов).

Рисунок 7.30 Отображение иерархий в лаборатории развитого движения: а). Вид лаборатории AML после ее открытия; б). Меню AML Options с выключенным режимом Show Animated; в).Область отображения иерархий со свернутыми иерархиями; г). Отображение иерархий объектов в развернутом виде


Рисунок 7.31 Вид части иерархического списка объектов, в котором показана сложная структура гироскопа, состоящая из множества одних групп, вложенных в другие группы


Упражнение со связыванием объектов в кран


В завершение раздела, посвященного связыванию, построим коленчатый кран. А почему, собственно, коленчатый кран? Потому что это операторский кран, который подробнее будет рассмотрен в главе 15. А здесь связывание объектов в иерархию (а также изменение их точек начала отсчета) будет использовано для создания объекта, который используется для обеспечения некоторых анимационных движений камеры, имеющих естественный вид. В этой главе применение операторского крана не рассматривается, а вместо этого будет создан сам кран с применением методов связывания объектов.
  1. Создайте новую сцену Вгусе, а в ней — куб.
  2. Разверните камеру перспективы в режиссерском виде, чтобы видеть сцену спереди. Она должна иметь вид, аналогичный рис. 7.32а.
  3. Потяните верхний управляющий маркер, чтобы увеличить куб по вертикали вдоль оси у.
    Если требуется соблюсти точность, тогда нажмите клавишу Shift и потяните вверх до тех пор, пока куб не увеличится в четыре раза. При этом верхняя часть куба окажется чуть ниже верхнего края окна сцены (при условии, что установлен используемый по умолчанию размер сцены).
    Рисунок 7.32 Создание коленчатого операторского крана: а). Вид сцены после создания куба и разворота режиссерского вида для просмотра сцены спереди; б). Изменение точки начала отсчета куба в диалоговом окне Object Attributes; в). Параметры настройки в диалоговом окне 3D Transformations, сужающие форму куба; г). Параметры настройки связывания сферы

  4. А теперь необходимо изменить точку начала отсчета куба таким образом, чтобы она оказалась в центре нижней части этого объекта. Щелкните на пиктограмме А, чтобы получить доступ к диалоговому окну Object Attributes (рис 7.326). Щелкните на опции Show Origin Handle, чтобы сделать активным режим отображения маркера начала отсчета.
    Маркер начала отсчета может быть установлен и вручную, если выйти из диалогового окна Object Attributes и перетащить зеленую точку этого маркера. С другой стороны, положение маркера начала отсчета может быть точно установлено с помощью числовых значений, вводимых в диалоговом окне Object Attributes. Именно такой подход здесь и принят.
    Щелкните на небольшой пиктограмме замка в области Absolute Coordinates, чтобы снять блокировку (замок на данной пиктограмме откроется). Это позволит разместить точку начала отсчета в другом месте. Введите значение 0 координаты Y начала отсчета. Введенные значения должны соответствовать тем, что приведены на рис. 7.326. Щелкните на кнопке с отметкой, чтобы выйти из данного диалогового окна.
  5. Далее уменьшите куб по ширине и высоте. Щелкните на кнопке, расположенной рядом со словом Edit в верхней части экрана, чтобы появилась палитра редактирования объектов (Edit Palette). Выберите пункт 3D Transformations во всплывающем меню одного из элементов управления Resize, Rotate или Reposition. Введите значение 70% в полях Size координат х и z в диалоговом окне 3D Transformations (рис. 7.32в). Щелкните на кнопке с отметкой, чтобы выйти из этого диалогового окна.
  6. Создайте сферу. Нажимайте клавишу Page Up до тех пор, пока сфера не окажется на удлиненном кубе (около 12 раз). Посмотрите на полученный объект сбоку (нажав клавишу 3) либо спереди (нажав клавишу 4) для дополнительной проверки правильности касания нижней части сферы верхней части куба. Сфера будет служить в качестве коленной части коленчатого крана. Далее необходимо связать сферу с кубом.
  7. Вернитесь в режиссерский вид (нажав клавишу ~). Сфера должна быть выделена. Вытяните линию для соединения пиктограммы Linking сферы с расположенным под ней вытянутым кубом. По мере вытягивания линия должна простираться от сферы к указателю мыши. Когда указатель мыши пересечет границу куба, линия и куб должны быть выделены синим цветом. В этот момент можно отпустить кнопку мыши. Таким образом, сфера оказывается порожденным по отношению к кубу объектом.
    А теперь необходимо изменить свойства сферы таким образом, чтобы она не наследовала все свойства, распространяемые от куба.
  8. Щелкните на пиктограмме А, чтобы открыть для сферы диалоговое окно Object Attributes. Щелкните на закладке Linking. Далее щелкните на флажке Size, чтобы его сбросить (рис. 7.32г). Затем щелкните на кнопке с отметкой, расположенной в нижней части данного диалогового окна, чтобы принять внесенные изменения.
  9. Сохраните полученную сцену. Назовите ее Camera Elbow Crane.br4.
  10. Проверьте полученный кран, выделив куб, а затем повернув его с помощью элемента управления Rotate в палитре редактирования объектов. Это лишь небольшое пробное испытание. Отмените вращение.
    А теперь можно приступать к созданию верхней части крана.
  11. бедитесь в том, что куб все еще выделен, а затем выберите команду Duplicate из меню Edit (либо нажмите комбинацию клавиш Cmd+D/Ctrl+D). Обратите внимание на то, что при дублировании родительского объекта вместе с ним дублируется и порожденный объект! В данном случае это происходит потому, что в нижней части куба уже установлена точка начала отсчета. (Примечание: если изменить любые распространяемые свойства, они не будут сдублированы. Все свойства вновь сдублированной совокупности связанных объектов будут активны.)
  12. Посмотрите на сцену сбоку (нажав клавишу 3). Как видно, над кубом и сферой имеется достаточно много места. Вновь сдублированный куб все еще должен быть выделен. Нажимайте клавишу Page Up до тех пор, пока весь сдублированный узел не расположится поверх первой сферы, как показано на рис. 7.33а.
  13. Выделите верхнюю сферу и удалите ее (связанный порожденный объект может быть удален без всякого ущерба для остальных объектов).
  14. Убедитесь в том, что палитра редактирования объектов отображается, и выделите верхний куб. Используя элемент управления Object Conversion, преобразуйте куб в пирамиду (рис. 7.33б).
  15. Свяжите пирамиду со сферой. Вытащите линию из пиктограммы Linking этой сферы, протянув ее до тех пор, пока эта линия и пирамида не станут синими. Откройте для пирамиды диалоговое окно Object Attributes и щелкните на закладке Linking. Сбросьте в этой закладке оба флажка Rotation и Size (рис. 7.ЗЗв). Щелкните на кнопке с отметкой, чтобы принять внесенные изменения, и снова сохраните данную сцену в файле.
    А теперь проверьте полученный результат!
  16. Выделите нижнюю часть крана (куб) и поверните ее. Обратите внимание на то что куб и сфера поворачиваются на один и тот же угол, и хотя пирамида остается присоединенной к этому узлу, она не изгибается подобно остальной части коленчатого узла (рис. 7.33г).
Впоследствии верхнюю пирамидальную часть узла крана можно будет сделать вращающейся независимо от нижней части узла крана. Над этим объектом еще предстоит поработать в главе 15, поэтому сохраните файл данной сцены!

Рисунок 7.33 Завершение создания коленчатого операторского крана: а). Сдублированный узел, состоящим из куба и сферы, размещен поверх исходного узла; б). Преобразование верхнего куба в пирамиду; в). Параметры настройки пирамиды в диалоговом окне Object Attributes; г). Проверка узла путем вращения нижнего куба


СОВЕТ
Если требуется вернуть полученный выше объект в режим обычного вращения, тогда выделите куб и выберите команду Unrotate из всплывающего меню элемента управления Rotate в палитре редактирования объектов. Это же относится и к пирамиде.

И последнее замечание. Если читатель не желает ждать до тех пор, пока дело дойдет до главы 15, и ему хочется перейти к кульминационному моменту приме нения операторского крана, тогда он должен переместить объект камеры в верхнюю часть пирамиды, связать его с пирамидой и назначить для него только свойства Distance и Offset. Если же установить режим слежения камеры за объектом, тогда благодаря вращению операторского крана можно добиться весьма плавного перемещения камеры. И это все, что можно узнать о применении камеры вместе с операторским краном в этой главе! Остальное станет известно из главы I5, однако прежде следует остановиться на главе 14.

Тиражирование объектов


При создании составного объекта или образовании более крупного объекта из множества сходных объектов следует непременно применять команду Multi-Replicate. Это отличный инструмент для создания объектов, располагаемых, например, по кругу.

Многократное тиражирование объектов по кругу


Несмотря на все имеющиеся в Вгусе возможности ввода числовых значений параметров полезно также знать, как и при каких обстоятельствах они используются. В данном случае будет рассмотрена формула создания ряда располагаемых по кругу объектов. Какие же числовые значения следует вводить в диалоговом окне Multi-Replicate? Прежде всего необходимо определить число объектов, которое требуется в итоге получить — скажем, 12 объектов. Вследствие того что круг составляет 360°, необходимо разделить 360 на число объектов, чтобы последние полностью располагались по кругу. А поскольку в результате деления 360 на 12 получается 30, в качестве угла поворота следует ввести значение 30° (или -30°) Что же касается числа объектов, то в поле Quantity (Количество объектов) следует ввести на один объект меньше требуемого числа объектов, поскольку один объект уже имеется. Именно он и подлежит многократному тиражированию для образования остальных (в данном случае 11) объектов. Значение, вводимое в поле смещения, определяет размер круга. На рис. 7.34 показаны три разных круга, полученных при разных значениях смещения. В частности, для конусов значение смещения составляет 10.24 (т.е. половину размера единичного элемента), а для пирамид значение смещения составляет 30.72 (т.е. полтора размера единичного элемента). Вращение вокруг оси, относительно которой происходит смещение объекта, не допустимо, поскольку в противном случае круг не получится.

Рисунок 7.34 Значение смещения оказывает влияние на общий размер круга: три круга, приведенные на этом рисунке, получены при одной и той же величине угла поворота, но при разных значениях смещения


Какую же ось вращения следует выбрать для образования круга? Если требуется, чтобы объекты располагались по кругу прямо на плоскости земли, тогда следует выбрать ось вращения у. На рис. 7.35а и в вращение происходит по оси у, а смещение относительно разных осей. Во всех изображениях, приведенных на этом рисунке, непрозрачные объекты повернуты на 30°, а прозрачные объекты — на -30°. Исходной точкой для образования круга служит обведенная кружком пирамида.
Напомним, что значение смещения, устанавливаемое в диалоговом окне Multi-Replicate, носит относительный характер, поскольку это смешение относительно предыдущего положения. Этот факт становится наиболее очевидным при наблюдении передней части объекта относительно предыдущего объекта. При этом обращает на себя внимание отличие в том, как объекты повернуты вокруг каждой из осей. В частности, при смещении относительно оси X все объекты обращены передней частью наружу, а при смещении относительно оси Z каждый объект обращен передней частью к следующему обьекту.
На рис 7.35в — е аналогичные варианты вращения объектов показаны относительно осей x и z, где форма круга образуется по вертикали подобно чертову колесу. И в этом случае непрозрачные объекты повернуты на 30°, а прозрачные объекты — на -30° относительно той же самой исходной пирамиды.

Рисунок 7.35 Многократное тиражирование объектов в форме круга, образованного в результате вращения вокруг осей х, у и z. Верхний ряд: вращение по горизонтали вокруг оси у; а). Смещение относительно оси х; б). Смещение относительно оси z. Средний ряд: вращение вокруг оси x. в). Смещение относительно оси у, г). Смещение относительно оси z. Нижний ряд: вращение вокруг оси z, д). Смещение относительно оси х, е). Смещение относительно оси у


Итак, многократное тиражирование объектов по кругу сводится к следующему:
  1. Quantity. В этом поле вводится значение, на 1 меньшее общего числа объектов.
  2. Rotate. В этом поле вводится угол поворота каждого объекта в градусах, получаемый путем деления 360 на общее число объектов.
  3. Offset. В этом поле вводится число, которое превышает размер отдельного объекта. Ось смещения не должна совпадать с осью вращения объектов. Значения смещения могут быть введены относительно одной или двух других осей, отличных от оси вращения.
Многократное тиражирование в Вгусе может быть осуществлено самыми разными способами. В частности, чтобы получить иной вариант расположения объектов по кругу, достаточно взять объект и повернуть последующие его копии вообще без всякого смещения. Именно таким образом был получен инопланетный цветок, приведенный на рис. 7.36. Сначала из двух сфер (одна из которых была вынута из другой) и двух кубов (которые были сгруппированы, сделаны отрицательными и вычтены из полой сферы)) был построен один лепесток этого цветка. А затем полученный лепесток был многократно тиражирован, причем каждая его копия повернута на месте.

Рисунок 7.36 Применение многократного тиражирования для создания инопланетного цветка: а). Создание лепестка на основе булевских операций над объектами; б). Перспектива лепестка в визуализированном виде; в). Создание трех повернутых копий лепестка с помощью команды Multi-Replicate; г). Завершенный цветок в визуализированном виде


Многократное тиражирование в макропрограммном режиме


Иногда при открытии диалогового окна Multi-Replicate в нем уже присутствуют какие-то числовые значения. Откуда они появились? В том случае, если эти значения не вводятся непосредственно, они отражают последнюю операцию, выполнявшуюся над объектом. Эти данные отслеживаются в Вгусе для каждого находящегося на сцене объекта, и когда объект выделяется, а затем выполняется команда Multi-Replicate, соответствующие числовые значения автоматически вводятся в данном диалоговом окне на тот случай, если ту же самую операцию редактирования требуется повторить еще раз. Это подобно небольшой макропрограмме выполняющейся в фоновом режиме и регистрирующей последние действия, с тем чтобы их можно было повторить одним щелчком кнопкой мыши.
Такой режим оказывается очень удобным, если требуется выполнить многократное тиражирование объекта, однако взаимосвязь между объектами предпочтительнее установить на глаз, а не расчетным путем. В этом случае следует сначала создать объект, сдублировать и преобразовать его копию (переместить, повернуть или изменить ее размер) для задания образца, которому необходимо следовать. Затем следует вызвать диалоговое окно Multi-Replicate, ввести количество тиражируемых объектов (остальные параметры в нем уже введены) и щелкнуть на кнопке с отметкой.
Вот как с помощью этого способа создается спиральная лестница. На рис. 7.37а показана первая ее ступень в виде цилиндра, сплюснутого по оси у и вытянутого по оси z. В данном случае следует непременно установить флажок Show Original Handle (Показать маркер начала отсчета) в диалоговом окне Object Attributes. Далее необходимо перетащить маркер начала отсчета в точку, вокруг которой должна быть образована спиральная лестница. Затем следует сдублировать указанную выше ступень лестницы, повернуть ее вокруг оси у и поднять вверх вдоль оси у до тех пор, пока не будет получено удовлетворительное соотношение между отдельными ступенями лестницы (рис. 7.376). А теперь наступает самый интересный момент. если вызвать диалоговое окно Multi-Replicate (нажав комбинацию клавиш Option+Shift+D/Alt+Shift+D), тогда можно увидеть, как в нем зарегистрированы преобразования, выполненные над второй ступенью лестницы. Данная ступень была повернута на 20°. Это означает, что если требуется расположить ступени по кругу, их должно быть 18, а поскольку уже имеются две ступени, то в поле Quantity следует ввести значение 16 (рис. 7.37в) и затем нажать клавишу Return/Enter. В итоге получится готовая к применению элегантная лестница. Далее следует сдублировать весь лестничный пролет и разместить полученную копию над оригиналом, в результате чего получится двухэтажная лестница. Для завершения сцены остается лишь ввести центральный опорный столб, ряд простых материалов и несколько источников света.

Рисунок 7.37 Создание спиральной лестницы с помощью многократного тиражирования: а). Первая ступень лестницы с маркером начала отсчета, смещенным в сторону оси спирали; 6). Вид лестницы после дублирования первой ее ступени, вращения и поднятия полученной копии вдоль оси у, причем выполненные преобразования автоматически вводятся в диалоговом окне Multi-Replicate; в). Ввод значения 16 в поле Quantity, что в итоге дает 18 ступеней лестницы; г). Вид завершенной лестницы сверху; д). Перспектива; е). Завершенная сцена


Разновидности многократного тиражирования тора


Вращение с помощью команды Multi-Replicate (причем без всякого смещения) отлично подходит для тора. Тор с его полым центром может быть использован для создания изящных переплетающихся форм, напоминающих корзину или моток шпагата. Подобно рассмотренному выше вращению по кругу, составной объект образуется из торов по следующей формуле: число объектов х угол поворота = 360. Ряд примеров подобных объектов приведен на рис. 7.38. На рис. 7.38а показан тор, повернутый вокруг оси х на постоянную величину 15° и тиражированный 23 раза. Это же относится и ко всем о стальным примерам, хотя в них вращение происходит не только вокруг оси х. В частности, на рис. 7.386 — г введено дополнительное вращение вокруг оси z на ту же, меньшую и большую величину соответственно (объект, приведенный на рис. 7.38г, немного развернут в пространстве, чтобы были видны детали его боковой поверхности). В двух последних случаях, показанных на рис. 7.38д и е, введено дополнительное вращение вокруг оси у. Как правило, между размером отверстия и величиной вращения вокруг второй и третьей оси имеется определенная зависимость. В частности, чем меньше величина вращения, тем меньше отверстие, и наоборот, чем больше величина вращения, тем больше отверстие. Это позволяет получить множество интересных эффектов.

Рисунок 7.38 Различные объекты, полученные из сдублированных, повернутых, но не смещенных торов


А что произойдет, если все же немного сместитъ каждую тиражируемую копию? На рис. 7.39 показаны результаты эксперимеетирований со смещением относительно оси х, а также включенным и выключенным режимом преобразования масштабированием. Радиус исходного тора составил 96 единиц, а затем его общий размер был удвоен. В четырех примерах, приведенных на этом рисунке, показаны разные параметры настройки тиражирования. В первом примере смещение относительно оси х составляет 10 единиц, а размер объекта остается без изменения. В трех остальных примерах тиражирования размер изменяется на 90%, так что каждый вновь тиражированный тор оказывается на 10% меньше предыдущего. Параметры настройки тиражирования во втором и третьем примерах практически одинаковы, за исключением того, что режим преобразования масштабированием во втором примере выключен, а в третьем включен. Величина смещения определяется также размером объекта. В четвертом примере режим преобразования масштабированием включен по всем осям со смещением по всем трем осям на 10 единиц.

Рисунок 7.39 Преобразование масштабированием и смещение объектов, составленных из торов


Отнюдь не порочные круги


В Вгусе существует старый способ создания располагаемых по кругу объектов, который не требует расчетов и ввода числовых значений в диалоговом окне Multi-Replicate. Иногда такой способ образования объектов в форме крута оказывается более предпочтительным.
Для образования объектов в форме круга, не прибегая к диалоговому окну Multi-Replicate, следует сдублировать первый объект, переместить полученную копию в другое место, а затем сгруппировать оба объекта. Теперь, когда оба объекта сгруппированы, они будут вращаться вокруг общего центра. Далее необходимо сдублировать, а затем повернуть каждую копию полученной группы объектов (рис. 7.40а), удерживая нажатой клавишу Shift и, таким образом, постепенно увеличивая угол поворота на 45°. (Следует непременно выделить группы, а не собственно цилиндры, иначе цилиндры будут лишь вращаться на месте.) Эту операцию следует продолжать до тех пор, пока круг не замкнется. Безусловно, если требуется образовать круг из 12 равномерно расположенных объектов (или любого числа объектов, не кратного степени 2), вращение с помощью клавиши Shift уже окажется невозможным после того, как будут получены 4 объекта. На рис. 7.40г показан завершающий этап образования круга из 32 объектов.

Рисунок 7.40 Образование круга путем дублирования и вращения объектов: а). После первой операции дублирования и вращения; б). После группирования двух групп объектов; в). После дублирования и вращения второй группы; г). Завершенный круг после дополнительных операций дублирования и вращения


Разновидности шестерни


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

Рисунок 7.41 Вновь созданная шестерня


Если объекты (или зубья шестерни) выделены, их можно повернуть. В верхнем ряду изображений, приведенных на рис. 7.42, показаны шестерни, зубья которых повернуты вокруг каждой из трех осей в пространстве объектов. В нижнем ряду показаны шестерни, зубья которых повернуты вокруг каждой из трех осей в мировом пространстве. А те шестерни, зубья которых повернуты по осям х и г, имеют совершенно необычный вид. После вращения зубьев шестерни только по одной оси получается еще более интересный эффект! На рис, 7,43 показаны шестерни, зубья которых повернута по всем трем осям.
И наконец, для получения еще более абстрактного вида можно создать зубья шестерни, сдублировать их, а затем заменить копии объектами другого типа, воспользовавшись элементом управления Object Conversion. Ради разнообразия можно изменить не только тип объекта, но и размер или угол его поворота. После этого следует установить отрицательное свойство вновь полученных объектов, сгруппировать все эти объекты вместе, и тогда получится совершенно новый абстрактный объект. Для установки уникального соотношения каждого последующего объекта с предыдущими можно воспользоваться элементами управления Resize, Rotate и Reposition в пространстве объектов, несмотря на то что исходно они повернуты и обращены в произвольном направлении. Некоторые примеры подобных объектов приведены на рис. 7.44. В частности, на рис. 7.44а показаны отрицательные торы, на рис. 7.446 показан более сложный объект, образованный в результате применения дополнительных булевских объектов (созданных методом дублирования и преобразования), а на рис. 7.44в показан объект, образованный из пересекающихся торов. Для получения последнего эффекта торы были сначала сгруппированы в виде положительных объектов, а затем сделаны пересекающимися.

Рисунок 7.42 Шестерни, зубья которых повернуты по каждой из трех осей. Верхний ряд: в пространстве объектов; Нижний ряд: в мировом пространстве


Рисунок 7.43 Шестерни, зубья которых повернуты по всем трем осям: а и б). В пространстве объектов; в). В мировом пространстве


Рисунок 7.44 Некоторые результаты изменений в дублированных булевских объектах: а). Отрицательные торы; 6). Дополнительно введенный ряд булевских объектов; в). Пересекающиеся торы


Формирование модели с помощью местности


Если требуется придать создаваемой модели более необычный и изысканный вид, следует в составной объект ввести виды местности и симметричные решетки (которые будут рассмотрены в следующей главе). В данном случае объекты местности выполняют роль не гористой поверхности, а компонента составного объекта. Карта преобразования полутонов в уровни высоты в сочетании с усечением местности предоставляет отличную возможность создания объектов необычной формы.
На рис. 7.45 показано широко известное изображение "Большой брайсовский трейлер" (Bryce Big Rig), созданное Джексоном Тингом (Jackson Ting) и Робертом Бэйли (Robert Baily). Хотя оно и было получено еще в версии Вгусе 1, тем не менее, служит классическим примером универсальности карт преобразования полутонов в уровни высоты. На этом рисунке показан ряд каркасных видов сцены только для того, чтобы читатель смог воочию убедиться в том, что это изображение было сформировано с использованием разных видов местности. Обратите внимание на огромное число деталей в этой модели. В ней имеется около 174 объектов и 94 видов местности. (Можно с уверенностью сказать, что эта модель не была создана на компьютере с оперативной памятью 8 Мб!) Множество различных элементов данной модели было создано в программе Adobe Illustrator и затем импортировано в Вгусе через Photoshop.
Рисунок 7.45 Большой брайсовский трейлер: модель грузовика с прицепом, созданная из разных видов местности и примитивов и в целом состоящая из 174 объектов и 94 видов местности. Авторы: Джексон Тинг и Роберт Бэйли


В следующем примере для создания архитектурных деталей использованы имеющиеся в Вгусе симметричные решетки. В изображении "Башня" (The Tower), созданном Крисом Кэседи (Chris Casady), имеются самые разные элементы, в которых информация о полутонах используется для определения формы. Приведенная на рис. 7.46 конструкция разделена на части и дополнена каркасным видом всех находящихся на сцене симметричных решеток, а также двумя примерами предоставляемой для них информации о полутонах.

Рисунок 7.46 Башня и симметричные решетки: а). Визуализированное изображение; 6). Каркасное представление; в). Каркасы симметричных решеток Нижний ряд: полутоновые карты для: г), балюстрады; д). завитушки карниза; е). звезды; ж). орнамента. Автор Крис Кэседи


Управление моделью


При создании сцены с составным объектом следует избрать стратегию разделения каждой задачи моделирования на поддающиеся управлению части. Хотя можно было бы работать с одним файлом сцены, постоянно внося в него изменения и затем сохраняя их, для каждого элемента крупной сцены с составным объектом целесообразно создать отдельный файл сцены. В частности, колонны можно сохранить в одном файле, начальную конструкцию храма в другом файле, а затем объединить и то, и другое в третьем файле сцены. Если же имеются дополнительные здания, их следует сохранить в отдельном файле сцены, а впоследствии объединить с остальной частью сцены.
Одно из преимуществ хранения различных элементов модели в разных файлах состоит в том, что во время работы над моделью не приходится манипулировать всеми объектами сразу. По мере ввода дополнительных элементов в модель Вгусе как бы провоцирует на создание новых объектов и ввод дополнительных деталей, в результате чего на сцене появляется все больше и больше объектов. Однако чем больше объектов на сцене, тем медленнее Вгусе работает. Кроме того, при большом числе объектов случайная забывчивость, которую Вгусе проявляет во время изменения размера объектов или смены осей х и z, может превратиться в довольно регулярное явление. Работая отдельно над элементами модели, можно сохранить состояние управляемости и живости реакции Вгусе вплоть до окончательного объединения всех элементов модели в файл завершающей сцены, хотя это и приводит Вгусе едва ли не в состояние оцепенения. Сцена храма, приведенная на рис. 7.1, служит ярким примером модели, состоящей почти из 1000 объектов. По мере ввода новых деталей в процессе усовершенствования храма реакция Вгусе постепенно замедлялась. (Разумеется, если для реализации замысла сцены с составным объектом используются сотни и даже тысячи объектов, как в приведенном выше примере с храмом, тогда приходится мучительно ждать реакции Вгусе на каждое действие.)

Объединение сцен


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

Теоретические основы объединения сцен


Что же происходит при объединении сцен? Ниже изложены теоретические основы этого процесса. Для объединения сиен следует открыть главную сцену, в которую будет введена другая, второстепенная сцена. Это делается с помощью команды Merge (Объединить). При этом все объекты из второстепенной сцены переносятся в главную сцену на то же самое место. В частности, местность, находящаяся в центре мирового пространства второстепенной сцены, оказывается в центре мирового пространства главной сцены,Однако параметры настройки неба, камеры, семейства объектов и визуализации из второстепенной сцены заменяются соответствующими параметрами настройки из главной сцены.

Объединение сцен на практике

  1. Для объединения двух или более сцен выберите команду Merge из меню File. Если текущая (главная) сцена не была сохранена после манипулирования объектами, Вгусе выдаст запрос на сохранение этой сцены. Щелкните на кнопке ОК, чтобы сохранить сцену, если в этом есть необходимость.
  2. Далее появляется окно Ореn. Выберите в нем второстепенную сцену и щелкните на кнопке ОК.
  3. Вгусе выполняет объединение сцен. Все объекты из второстепенной сцены выделяются красным цветом в каркасном представлении. Объекты можно сгруппировать, выделить одним цветом или отменить их выделение. Однако все главные и второстепенные объекты теперь находятся в одной сцене.
СОВЕТ
Если требуется внести коррективы во вновь объединенную сцену, активизируйте режим Solo сразу же после объединения. В этом случае второстепенная сцена будет отображена полностью. Это даст возможность выделить и удалить лишние объекты, переименовать семейства объектов и внести другие коррективы, не смешивая компоненты второстепенной и главной сцен.

Одной из не совсем приятных особенностей процесса объединения сцен является тот факт, что после этого в Вгусе осуществляется переход к режиссерскому виду независимо от того, какой вид использовался прежде. Если во второстепенной сцене были назначены специальные имена семейств объектов и цвета каркаса, после объединения сцен будут использоваться имена семейств объектов и специальные цвета из главной сцены. Кроме того, следует иметь в виду, что при объединении с главной сценой теряются все свойства анимации второстепенной сцены. Из этого можно сделать следующий вывод: при создании эпической кинокартины вся анимация должна выполняться в главной сцене.
Существует следующая удобная разновидность команды Merge: если при выборе команды Merge из меню File нажать клавишу Option/Alt, тогда из второстепенной сиены будет импортировано только небо.
Если команду Merge планируется использовать для объединения разных сцен с составными объектами в главную сцену, которая будет содержать все объекты, тогда не следует встраивать какие-либо дополнительные объекты в отдельные сцены. Ведь при объединении сцен все второстепенные объекты (в том числе и плоскости земли) будут импортированы в главную сцену. В окончательной сцене вряд ли потребуются лишние плоскости земли и другие объекты.

Практический курс по применению булевских операций и многократного тиражирования на примере создания колонн


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

Основная колонна


Итак, в начале был цилиндр. И он был длинный. Он имел основание и капитель. И был очень хорош.
  1. Начните с создания цилиндра. Увеличьте цилиндр вдоль оси y, чтобы сделать его длиннее (рис. 7.47а). Это и будет основной цилиндр.
    Чтобы сделать колонну украшенной высеченными в ней каннелюрами, ниже используется ряд более мелких цилиндров, с помощью которых будет вынута часть основного цилиндра. Для этого необходимо создать первый цилиндр каннелюры, изменить его размер, а затем тиражировать для образования равномерно расположенных по кругу цилиндров каннелюр.
  2. Сдублируйте основной цилиндр (нажав комбинацию клавиш Cmd+D/Ctrl+D). А теперь можно изменить размер этого цилиндра, чтобы превратить его в цилиндр каннелюры.
  3. Выберите команду 3D Transformations из всплывающего меню, вызываемого в области любого из элементов управления Resize, Rotate или Reposotion в палитре редактирования объектов. В диалоговом окне 3D Transformations оставьте без изменения высоту цилиндра (по оси у), но введите значение 10% в полях Size осей х и z (рис. 7.47б), чтобы сузить цилиндр. Щелкните на кнопке ОК. Каркасный вид сверху должен напоминать рис. 7.47в.

    Рисунок 7.47 Начала: а). Цилиндр, который служит основанием для создания колонны; 6). Параметры настройки в диалоговом окне 3D Transformations для дублируемого цилиндра каннелюры; в). Вид сверху после изменения размера цилиндра


  4. А теперь необходимо выполнить многократное тиражирование узкой колонны. Выберите команду Edit>Multi-Replicate либо нажмите комбинацию клавиш Option+Shift+D/Alt+Shift+D. Сколько же требуется каннелюр? В данном случае 24, поэтому следует ввести количество объектов, равное 23, а следовательно, и угол поворота 15° вокруг оси Y, (noскольку 24x15 = 360). В качестве смещения относительно оси X введите значение 2. Вид диалогового окна Multi-Replicate приведен на рис. 7.48а, а результаты многократного тиражирования (вид сверху) на рис. 7.48б.
  5. Похоже, что круг, образованный из цилиндров каннелюр, не выровнен относительно основного цилиндра. Для выравнивания этих цилиндров прежде всего щелкните, удерживая нажатой клавишу Shift, на исходном цилиндре каннелюры, чтобы присоединить его к уже выделенным объектам (вновь созданные цилиндры каннелюр все еще остаются выделенными), а затем сгруппируйте выделенные объекты. Назначьте для цилиндров каннелюр уникальный цвет и наименование семейства. После группирования цилиндров каннелюр добавьте основной цилиндр к уже выделенным объектам. Перейдя к виду сцены сверху, выполните выравнивание, щелкнув в центральных точках выравниваемых объектов с использованием элементов управления Align X и Align Y (рис. 7.48в). После выравнивания отмените выделение основного цилиндра.
    Рисунок 7.48 Создание множества каннелюр: а). Вид диалогового окна Multi-Replicate и установленных в нем значений; б). Вид полученных результатов сверху; в). Основной цилиндр колонны, выровненный относительно группы цилиндров каннелюр


  6. Круг, образованный из цилиндров каннелюр, недостаточно велик. Увеличьте равномерно все еще «группированные цилиндры каннелюр, используя элемент управления Resize (рис. 7.49а), а затем расформируйте группу и уменьшите равномерно все цилиндры. Одновременно будет уменьшен каждый цилиндр в отдельности, хотя центральная его точка останется на своем месте. Прекратите уменьшение цилиндров, как только они будут врезаны в основной цилиндр (рис. 7.496). Осталось лишь выполнить заключительный этап создания каннелюр. Назначьте отрицательное свойство для всех выделенных цилиндров каннелюр в диалоговом окне Object Attributes либо нажмите клавишу N. Кроме того, назначьте положительное свойство для основного цилиндра (выделив его и нажав клавишу Р). Сгруппируйте цилиндры каннелюр с основным цилиндром и выполните визуализацию. На рис. 7.50 показан каркасных вид сбоку и визуализированный результат. Следует заметить, что в результате увеличения и последующего уменьшения каннелюры немного не достигают общей высоты колонны. В связи с тем что концы колонны будут специально обработаны для размещения основания и капители, такой вид колонны как раз и требуется. Как следует из рис. 7.506, каннелюры получились резко, а не плавно высеченными в колонне. Ничего не поделаешь, ведь работа в Вгусе требует постоянного совершенствования. Поэтому улучшим полученный результат, сделав каннелюры плавно высеченными в колонне.
    Рисунок 7.49 Корректировка размера цилиндров каннелюр, а). Вид сверху после увеличения сгруппированных цилиндров; б). Вид сверху после расформирования и уменьшения цилиндров каннелюр


    Рисунок 7.50 Завершение первого этапа создания колонны а). Каркасный вид сбоку; 6). Визуализированный результат вырезания каннелюр с помощью цилиндров с резко обрывающимися краями на концах колонны


  7. Расформируйте группу, состоящую из колонны и каннелюр. Выделите цилиндры каннелюр и сдублируйте их. Преобразуйте сдублированные цилиндры в сферы с помощью элемента управления Object Conversion. Теперь сферы идеально выровнены относительно каннелюр, хотя они и получаются несколько растянутыми.
  8. Уменьшите сферы вдоль оси у, воспользовавшись маркером непосредственного манипулирования либо элементом управления Resize. Сделаете сферы несколько продолговатыми, а затем выровняйте их в верхней части цилиндров каннелюр таким образом, чтобы их экваториальные точки идеально совпали с верхними краями цилиндров каннелюр (рис. 7.51а).
  9. Сдублируйте созданные выше сферы и переместите вновь полученный ряд сфер вниз, как показано на рис. 7.516. (При непосредственном перетаскивании объектов не забудьте нажать клавишу Option/Alt, чтобы ограничить движение вдоль оси y).
    Рисунок 7.51 Сферы в виде каннелюр: а). Уменьшенные сферы, выровненные относительно цилиндров, 6). Основной вид колонны со сферами, высеченными сверху и снизу колонны; в). Визуализированный результат


  10. После того как сферы будут размещены сверху и снизу колонны, выделите цилиндры каннелюр и сферы, сгруппируйте их друг с другом, а затем и с основным цилиндром, после чего выполните визуализацию. Как следует из рис. 7.51 в, в каннелюрах появляются достаточно плавные выемки. (Следует заметить, что в результате дублирования объекта с назначенным отрицательным свойством полученные копии сфер также оказываются отрицательными. А в результате группирования с основным положительным цилиндром сферы благополучно сделали в нем выемки.)
Итак, первый этап создания колонны успешно завершен. Надеемся, что все эти окольные пути и отрицательные свойства объектов не сказались на настроении читателя! Сохраните эту сцену в файле и оставьте ее на некоторое время.

Основные способы создания основания колонны


Теперь, когда имеется основная колонна, можно приступать к созданию ее основания. Это может быть сделано самыми разными способами, поэтому ниже будут рассмотрены некоторые из них, а затем применен один конкретный способ.
Если вообще не применять булевские операции, то основание цилиндра можно создать из куба или цилиндра в зависимости от того, какую форму основания требуется получить — квадратную или круглую. На рис. 7.52 показан в каркасном и визуализированном виде ряд простых оснований колонн, полученных без применения булевских операций, так что по их внешнему виду можно судить, каким образом они были сделаны. (Кроме того, файл данной сцены находится на сопровождающем книгу CD-ROM.)

Рисунок 7.52 Примеры оснований колонн, полученных без применения булевских операций: а). Визуализированный вид: б). Каркасный вид


Однако булевские операции позволяют добиться большего. В частности, операции пересечения отлично подходят для объединения цилиндров с другими формами. И здесь сразу же возникает мысль о сферах и конусах (рис. 7.53).

Рисунок 7.53 Основания колонн, созданные с помощью булевского объединения объектов: а). Визуализированный вид; б). Каркасный вид


Сплющенные цилиндры и кубы образуют основную форму основания, а конусы и сферы — дополнительную форму. Остается лишь выбрать наиболее подходящую форму основания колонны.
  1. Создайте в новой сцене основную форму (цилиндр или куб). Нажмите клавишу Shift и потяните влево управляющий маркер куба, уменьшив тем самым наполовину высоту куба. Отпустите кнопку мыши и повторите эту операцию во второй и в третий раз. В итоге куб сплющится, на одну восьмую своей исходной высоты.
  2. Создайте дополннтельную форму. Сделайте эту форму шире, чем первая форма, увеличив ее по обеим осям x и z. Если это сфера, ее верхняя точка не должна быть выше верхней точки куба или цилиндра (рис, 7.54).
  3. Назначьте для одной из полученных выше форм свойство пересечения, а затем сгруппируйте их. Это послужит началом для создания основания колонны. А теперь можно ввести некоторые детали орнамента. Для этой цели отлично подойдет тор. Толщина торов, приведенных на рис. 7.54в, была сокращена в редакторе тора (Torus Editor).
    Рисунок 7.54 Создание основания колонны: а).Основная форма (в данном случае куб) пересекается со сферой, поверх которой раположен небулевский конус; б). Вид этой же формы сбоку; в). Визуализированная форма, к которой добавлены торы


  4. Создайте собственный орнамент с помощью тора, При его размещении центр трубы тора должен со впасть с точкой пересечения колонны и конуса. Если тор используется в качестве декоративного края вертикального или горизонтального объекта, тогда должна быть видна лишь четверть трубы. Это же относится и к отрицательному тору, как пока зано на рис, 7.55. На этом рисунке приведен лишь иной вариант рассмотренной выше формы, а не прямой результат выполнения предыдущих пунктов процедуры создания основания колонны. Но ведь эта часть упражнения носит произвольный характер, поэтому выберите любой походящий способ создания основания колонны.
  5. По завершении основания колонны сохраните полученную сцену в файле.
Рисунок 7.55 Торы, использованные для вычитания определенных частей из основания колонны


Объединение двух элементов конструкции колонны


А теперь самое время объединить колонну с ее основанием. Для этого используется команда Merge.
  1. Откройте при необходимости файл сцены с основанием колонны. Выберите команду Merge из меню File. Выберите сцену с колонной, отделанной каннелюрами, в появляющемся при этом диалоговом окне и щелкните на кнопке ОК (Ореn).
  2. В итоге сцена с колонной, отделанной каннелюрами, объединяется со сценой, содержащей основание колонны, причем асе элементы объединенной сцены Оказываются выделенными. Перейдитe непосредственно в режим Solo, чтобы отредактировать любые объекты во вновь импортированной сцене. Вероятно, вместе с ней была введена и плоскость земли — ее необходимо удалить, поскольку в обьединенной сцене требуется лишь одна плоскость эем ли. Выделите плоскость земли и удалите ее, а затем выйдите из режима Solo.
  3. Согласуйте положение отделанной каннелюрами колонны и основания колонны. Для этого необхо димо перейти к ортогональным видам. Вероятно, оба элемента конструкции колонны совпадают по горизонтали. Однако отделанную каннелюрами колонну, скорее всего, придется переместить вверх вдоль оси у, чтобы можно было видеть нижние края каннелюр. (Если эти элементы требуется выровнять по горизонтали, тогда сгруппируйте основание ко лонны. Отделанная каннелюрами колонна уже сгруппированаю Выделите обе группы и щелкните на опциях Center элемента управления Align для выравнивания этих групп по осям х и z.)
  4. Возможно, в основание колонны придется внести некоторые коррективы, исходя из ее положения относительно отделанной каннелюрами колонны, в частности, некоторые коррективы мoryт потребоваться для тора, что может быть сделано в виде сбо ку или спереди. На рис. 7.56 приведены некоторые примеры точной настройки, не требующие комментариев.
    Рисунок 7.56 Точное выравнивание торов в основании: а) Каркасный вис сбоку; б). Каркасный вид сбоку, совмещенный с визуализированным видом, где выделены торы, конус и цилиндр; в). Визуализированный вид сбоку


  5. Сгруппируйте объекты вместе. Выполните визуализацию (рис. 7.57а).
После создания основания колонны его можно сдублировать и разместить сверху колонны, получив таким образом ее капитель. После дублирования выберите команду Flip Y из всплывающего меню элемента управления Resize. В зависимости от формы капители колонны ее, возможно, придется уменьшить ради соблюдения пропорций (рис. 7.576).

Рисунок 7.57 Визуализированный вид колонны, ее основания и капители: а). Колонна и основание; б). Сдублированное основание с немного измененным размером, размещенное сверху колонны в виде капители


Придание колонне древнего вида


Если капитель требуется вообще удалить, чтобы придать колонне древний вид, тогда следует применить булевские операции в сочетании с местностью. С помощью местности можно вырезать куски разбитой колонны. Для того чтобы аккуратно вырезать кусок колонны, местность придется сгруппировать с кубом, а затем сделать эту группу отрицательной.
  1. Начните с колонны и ее основания. Создайте местность и переместите ее в сторону, чтобы она не перекрывала колонну. Уменьшите ее размер наполовину, нажав клавишу /.
  2. Сдублируйте местность (нажав комбинацию клавиш Cmd+D/Ctrl+D) и переместите ее вверх, нажав дважды клавишу Page Up. Выделите нижнюю местность и преобразуйте ее в куб с помощью элемента управления Object Conversion (рис. 7.58а).
  3. Внесите любые коррективы в форму местности в редакторе местности (Terrain Editor). Во время работы в режиме Terrain Canvas (Полотно местности) края полутоновой карты местности должны оставаться черными, чтобы было видно, как они соприкасаются с расположенным ниже кубическим объектом.
    Рисунок 7.58 Колонна, которой придан древний вид: а). Местность, расположенная сверху куба и сгруппированная с ним; б). Расположение группы, состоящей из местности и куба, поверх колонны; в). Основной каркасный вид колонны; г). Визуализированный вид завершенной колонны


  4. Сгруппируйте местность и куб вместе и разместите их поверх колонны. Поверните местность таким образом, чтобы она оказалась более или менее перевернутой вверх дном. Расположите полученную выше группу так, чтобы она вырезала кусок из колонны, аналогично показанному на рис. 7.58б. На данном этапе, возможно, придется внести некоторые коррективы в каждый из объектов, входящих в данную группу. В частности, куб, очевидно, придется удлинить, а местность сплюснуть. Перейдите в пространство объектов и воспользуйтесь клавишей Control/Ctrl, чтобы выделить подлежащий настройке отдельный член группы. Увеличьте или уменьшите выделенный объект до требуемого размера вдоль оси у.
  5. Выделите группу колонны и назначьте для нее положительное свойство. Сгруппируйте местность и куб снова и измените свойство этой группы на отрицательное. Затем добавьте колонну к выделенным объектам, сгруппируйте их и выполните визуализацию.
  6. Возможно, полученный результат потребует дополнительных уточнений, В частности, куб и местность вероятно, должны немного перекрываться. А может быть, придется увеличить всю группу, состоящую из куба и местности, либо изменить ее положение.
  7. По окончании настройки выполните визуализацию. На рис. 7.58в и г приведены каркасный и визуализированный виды завершенной колонны.

Переход к следующей теме


Самое замечательное в построении составных объектов с применением булевских операций состоит в том, что подобным образом может быть получено бесконечное множество объектов. Здесь читателю предоставляется возможность дать волю своему воображению! Ряд примеров, представленных в этой главе, лишь в самых общих чертах демонстрирует возможности построения составных объектов. Изучите примеры составных объектов, приведенные в папке Chapter 7 на сопровождающем книгу CD-ROM.
Hosted by uCoz