3D Engineering

...Лучшее из общего.

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

3D моделирование

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

Подробнее...
 

Представляем вашему вниманию Making ofинтервью с победителем...

Нажмите что бы увеличить

Представляем вашему вниманию Making of-интервью с победителем мини-конкурса CG Лиги – Максимом Верёхиным, который занял первое место в 2D номинации. В этом мейкинг оф интервью Максим подробно расскажет обо всех этапах работы над своей конкурсной картиной, а также поделится откуда черпает дополнительные знания, которые помогают ему обогащать свой опыт и справляться с возникающими трудностями.


3dgo.ru: Добрый день, Максим! Вы одержали победу в конкурсе №35: "Космодром"2D и вывели свою работу на первое место. Скажите, насколько сложной для Вас была тема? Сразу ли пришла идея создания столь сложного комплекса?

Максим: Здравствуйте! Скажу честно, тема сразу не понравилась, это на все сто “не моё”, Но засиживаться в одной плоскости считаю минусом, поэтому захотел испытать себя, попробовать что-то новенького. А тут космодром! Начал думать от простого. Мне сразу представились летающие космодромы-яйца. Задачей так же было использовать mate painting элементы, решил половину рисовать, половину собирать из референсов.


Нажмите что бы увеличить

3dgo.ru: В какой последовательности шла работа над картиной? Какие этапы прошла картина, начиная с первого эскиза и заканчивая финальной реализацией?

Максим: Сначала как это обычно бывает, нашлёпал рандомных форм. В случае с космодромом, первый же эскиз пустил в дело. Не берите с меня пример! Всегда лучше сделать несколько вариантов, как правило, последующие всегда лучше первого. Затем «нагуглил» фотографий для создания базы рисунка. После того, как был готов набросок в цвете, начал детализировать, спокойно и без напрягов, т.к больших изменений рисунок не претерпевал.

3dgo.ru: Распишите поэтапно весь ход работы над картиной?

Максим: 1. Вот он, тот самый первоначальный набросок, которым непослушных детей пугать можно. Но на данном этапе важно самому не испугаться и смело работать дальше

Нажмите что бы увеличить

2. Попробовал вставить фотку, но ошибся, слишком уж рано. Ну и работа с цветом пошла. Красил либо через слой в режиме Color, либо через настройки слоёв hue/saturation или selective color. Опять же, в начале ужас, крепитесь :-).

Нажмите что бы увеличить

3. Вставил землю, уже появился контрастный тон

Нажмите что бы увеличить

4. Работа над небом, а главное поиск форм для космодрома. Всё ещё очень недоволен им, силуэт слишком прост. Кстати в работе над фотореалистичными и особенно индустриальными пейзажами не забывайте пользоваться инструментами выделения для чистоты форм.

Нажмите что бы увеличить

5. Детализирую космодром, вставляю много фотографий, а потом дорисовываю нужные вещи в нужных местах

Нажмите что бы увеличить

6. Сильно поменял форму космодрома, теперь силуэт выглядит намного круче и идея с посадкой в гнёзда стала более оправдана. Добавил летающих “объектов” для иллюзии жизни. Плюс долгие часы прорисовки самого комплекса. Работа готова.

Нажмите что бы увеличить

7. Как видите, в прошлой стадии, я оставил много чёрных мест, делал так умышленно, т.к в плане было провести ряд операций для имитации новомодных эффектов фотосъёмки. Их можно добиться разными способами, я пользуюсь adjustment layers - Selective Color, можно Curves. Можно как Чувабак учил - слой с режимом Exclusion. В общем, вариантов много. Как видите, я убил чёрное придав красноватый оттенок. Гламур. Ещё добавил эффект шума через фильтры.

Нажмите что бы увеличить

3dgo.ru: С какими трудностями Вы столкнулись при работе над картиной? Обращались ли за помощью к различным тематическим ресурсам или специалистам, а так же вели ли свой WIP на форуме?

Максим: В общем, работа шла легко, как говорил выше, только форму космодрома искал долго. WIP не вёл, работу показывал нескольким друзьям. Постоянно так делаю в надежде получить толковые советы

3dgo.ru: Опишите подробнее Ваш подход при работе с цветом и светом? На что здесь необходимо в первую очередь обратить внимание, чтобы правильно и выгодно поставить освещение?

Максим: В “Космодроме” не особо замудрёный свет, солнце с одной стороны, чистое небо с другой. Привычная природа с непривычным действием. Главное в этой работе - постобработка. Она и создала нужное настроение я считаю

3dgo.ru: Ваша работа также отличилась хорошей проработкой и детализацией. Скажите, сколько времени Вы тратите на проработку деталей и на сколько важным считаете данный этап работы?

Максим: Детализировать вредно бывает редко, чем дольше работаете над картиной, тем она становится только лучше. И это необязательно прорисовка каждой мелочи, скорее исправление и улучшение, того, что смущает. Ведь свежесть можно сохранять даже в очень длительных работах, главное сохранить ещё и интерес к процессу.
“Космодром” занял порядка 10-12 часов, обычно дольше я и не рисую одну работу, что опять же не хорошо.

3dgo.ru: Какой этап работы Вас привлекает больше всего: поиск идеи, поиск материала который будет использован в картине, создание картины?

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

3dgo.ru: Вы не первый раз участвуете в конкурсе CG Лиги. Чувствуете ли Вы от конкурса к конкурсу «прилив» определенного опыта? Как отражается участие в конкурсах Лиги на Вашем творчестве? Какие навыки улучшились, что осталось на том же уровне?

Максим: Участие в конкурсах подобного рода хорошо подготавливает к работе с заказчиками, ведь, по сути, тема конкурса и есть пресловутое ТЗ работодателя. Т.е вы не рисуете, то, что обычно, а подстраиваетесь под рамки темы. Ну и потом это всегда законченная работа со своими плюсами и минусами, которые гарантируют хороший рост

3dgo.ru: Что Вы можете порекомендовать новым участникам CG Лиги? Какие моменты в работе над конкурсной картиной следует учитывать, и как организовать свое время, что бы успеть в срок?

Максим: Организовать время это вопрос не ко мне :-). Я точно хорошему не научу т.к сам доделываю всё в последний момент. Но лучше конечно передвинуть дедлайн для себя на один день раньше, а в последний день уже иметь на руках готовую работу, посмотреть на неё свежим взглядом, может что-то поправить и со спокойной душой выкладывать, злобно посмеиваясь на тех, кто не успевает :-).
Новые участники, дорогие Вы наши, умея рисовать свинюшек, не ждите темы “Розовая свинья в аду”, пробуйте себя в новом, не бойтесь ошибаться! Анализируйте свои минусы, и рост Вам гарантирован. Удачи :-).

 

Ни для кого не секрет что для выполнения любой задачи за компьютером ...

Нажмите что бы увеличитьНи для кого не секрет, что для выполнения любой задачи за компьютером требуется много различных программ. И стоит софт зачастую дороже самого оборудования. Естественно, у начинающего фрилансера вряд ли сразу найдётся $1000 на новую версию Photoshop или $3000 на 3ds Max, да и полная функциональность таких программ может быть не нужна. Я не буду говорить об ответственности за использование нелицензионного ПО, т. к. здесь каждый сам решает, стоит ли игра свеч.
Однако если Ваша деятельность связана с извлечением коммерческой выгоды (что и происходит, в случае работы фрилансером), то использование нелицензионного ПО может уже иметь довольно серьезные негативные последствия, вплоть до уголовной ответственности (желающие могут ознакомиться с текстом части 2 и части 3 ст. 146 УК РФ).
Именно в этом случае на помощь приходят OpenSource (с открытым исходным кодом) приложения, которые распространяются по свободным лицензиям (например, GPL) совершенно бесплатно для любого пользователя. Но одной лишь бесплатностью дело, конечно, не ограничивается. Любой инструмент для работы должен быть, в первую очередь, удобен. И свободные программы, такие как GNU/Linux, Blender, GIMP, InkScape и другие, предоставляют удобство работы и большую функциональность для фрилансеров в полной мере.
Именно об этом опыте применения свободных программ для фриланса и, в частности, для создания компьютерной графики (CG), я и постараюсь рассказать на страницах своего блога в последующих статьях и уроках.

Спасибо за внимание.
С уважением, Станислав Linus.

 

Этой статьёй я открываю цикл материалов посвященных фрилансу ...

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

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

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

Договор может быть заключен в двух формах:

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

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

 

Метод EulerAngles является вероятно самым понятным и лучше всего ...

Метод EulerAngles является, вероятно, самым понятным и лучше всего соответствующим тем операциям вращения, которые можно выполнять и наблюдать в интерфейсе 3ds Max.

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

b.rotation = eulerAngles 0 45 0

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

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

ang = eulerAngles 0 45 0
b.rotation = ang

Переменная ang в действительности представляет собой объект MAXScript, имеющий тип данных вращения.

Углы вращения вокруг нескольких осей указываются следующим образом:

ang = eulerAngles 30 20 44

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

Для того чтобы повернуть объект методом eulerAngles, выполните следующее упражнение.

                       1.  Введите в приемнике команд следующий фрагмент кода, чтобы создать цилиндр и переменную euAngle:

c = cylinder height:50
euAngle = eulerAngles 0 45 0

В итоге значение угла поворота типа eulerAngles присваивается переменной euAngle.

                       2.  Введите следующую строку кода, чтобы повернуть цилиндр:

rotate c euAngle

Нажмите что бы увеличить

Когда объект поворачивается подобным методом, сначала происходит его вращение вокруг оси X, затем вокруг оси Y и наконец вокруг оси Z. Это обстоятельство очень важно иметь в виду, потому что от перестановки порядка вращения меняется результат. Иными словами, вращение вокруг оси Y после вращения вокруг оси X дает иной результат, чем вращение вокруг оси X после вращения вокруг оси Y.

Свойство вращения

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

euAngle = eulerAngles 30 45 60
rotate b euAng

можно заменить выражениями, в которых свойство вращения устанавливается непосредственно:

b.rotation.x_rotation = 30
b.rotation.y_rotation = 45
b.rotation.z_rotation = 60

При таком способе установки свойства вращения угол поворота ограничивается величиной 360°.

Для проверки ограничения угла поворота величиной 360° выполните следующее упражнение.

1.  Установите 3ds Max в исходное состояние.

                       2.  Создайте стандартный параллелепипед, введя в приемнике команд следующую строку кода:

b = box()

                       3.  Переместите ползунок временной шкалы к кадру 100, включите режим Auto Key (Автоматическая расстановка ключевых кадров), а затем введите следующую строку кода:

b.rotation.z_rotation = 720

                       4.  Выключите режим Auto Key и воспроизведите анимацию.

Объект не вращается.

                       5.  Переместите ползунок временной шкалы к кадру 100, включите режим Auto Key, а затем введите следующую строку кода:

b.rotation.z_rotation = 450

                       6.  Выключите режим Auto Key и воспроизведите анимацию.

Объект повернется только на 90°, поскольку полный его оборот на 360° игнорируется (450 – 360 = 90).

Ограничения, присущие методу EulerAngles

Выполнение эйлерова вращения вызывает особые трудности как внутри 3ds Max, так и в MAXScript. Эти трудности связаны с тем, что при вращении объекта вокруг одной оси соответствующие изменения происходят относительно остальных осей. Данный факт иллюстрирует следующее упражнение.

                       1.  Установите 3ds Max в исходное состояние.

                       2.  Откройте окно приемника команд MAXScript Listener.

                       3.  Создайте в окне вида сверху плоский и длинный параллелепипед, введя следующую строку кода:

b1 = box length:100 width:75 height:25

                       4.  Создайте копию параллелепипеда:

b2 = copy b1

                       5.  Переместите вновь созданную копию параллелепипеда в сторону от оригинала:

b2.pos.x = 100

Нажмите что бы увеличить

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

                       6.  Выберите команду Graph EditorsðTrack View - Dope Sheet (Редакторы графических представленийðВид трека — Подготовительная таблица) из главного меню 3ds Max. Разверните иерархию треков в окне Track View вплоть до треков анимации вращения объекта Box01.

В итоге должны быть видны треки X Rotation, Y Rotation и Z Rotation. В данный момент значения углов вращения данного объекта вокруг всех трех осей равны нулю.

                       7.  Выберите локальную систему опорных координат, введя в приемнике команд следующую строку кода:

set coordsys local

                       8.  Введите в приемнике команд следующую строку кода:

b1.rotation = eulerAngles 45 0 0

Нажмите что бы увеличить

Параллелепипед повернется на 45° вокруг оси X мировых координат. Соответствующее значение на треке X Rotation в окне Track View изменится до -45.

Далее вам предстоит повернуть параллелепипед вокруг его оси Y.

                       9.  Введите в приемнике команд следующую строку кода:

b1.rotation = eulerAngles 0 45 0

Нажмите что бы увеличить

Казалось бы, в результате этого вращения соответствующее значение на треке Y Rotation должно было бы измениться до 45, однако вместо этого значения на треках X Rotation, Y Rotation и Z Rotation стали равны около -54,74, -30,00 и 35,26 соответственно.

 

Здравствуйте Сергей

3dgo.ru: Здравствуйте, Сергей. В начале интервью расскажите, пожалуйста, нашим читателям немного о себе, где Вы родились, где живете сейчас и кем сейчас работаете?

Сергей: Родился в Казахстане, в городе Целинограде – сейчас это Астана, столица Казахстана. Последние три года живу в Москве. Работаю концепт-художником в компании Renovatio Entertainment.

3dgo.ru: С чего началось Ваше увлечение 3D-графикой, получали ли вы специализированное образование? Если да, то насколько полезными оказались полученные знания?

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

Нажмите что бы увеличить Нажмите что бы увеличить

3dgo.ru: Расскажите, пожалуйста, поподробнее о самых интересных проектах, в которых Вы принимали участие. Что это были за проекты? В чем выражалось Ваше участие?

Сергей: Для начала надо сказать, что интересных проектов было много разных и для разных областей применения.

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

Нажмите что бы увеличить

 Затем последовал большой период работы с компанией "Parallax Arts Studio" над целой серией игр. Уже там я пытался в работе над концептами активно использовать 3D – как мне казалось тогда, это ускоряло процесс создания и придавало более высокое качество эскизам.

Нажмите что бы увеличитьНажмите что бы увеличить

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

Нажмите что бы увеличить

Еще не могу не упомянуть очень интересный для меня опыт участия в оформлении павильона компании «Астарта» на выставке АрхМосква, которая проходила в ЦДХ в 2009 году. Мы должны были сделать нечто необычное на тему «Next». Было выработано несколько разных концепций, одна из которых основывалась на моей работе «Блуждающий город». Так неожиданно работа, которую я сделал для конкурса, получила свое материальное воплощение. Правда, в масштабе 1 : 10, но все равно получилось грандиозно. Кроме того, нам удалось создать тотальную инсталляцию, которая с помощью огромной фотопанорамы, света, звука и даже стелящегося тумана погружала посетителя в атмосферу задуманного нами будущего.

Нажмите что бы увеличить

Очень интересным для меня был и опыт работы с сингапурскими заказчиками по разработке концепции торговой улицы в тематическом парке в стиле «корейского стимпанка». Здесь мне особенно интересно было то, что это реальный проект, но при этом требовался максимальный креатив и вариативность в решении поставленной задачи.

Нажмите что бы увеличить

А самый необычный заказ был из Канады. Требовалась разработка комплексного дизайна телевизионной командно-спортивной игры.

Таким образом, я могу сказать, что диапазон областей, где требуется работа концепт-художника, необычайно широк.

3dgo.ru: Отдельное внимание хотелось бы уделить Вашей работе в кино. Вы работали над чрезвычайно интересными проектами, расскажите о них нашим читателям.

Сергей: Моя работа в кино тесно связана с кинокомпанией ZGFilm, начиная с 2006 года, и компанией Renovatio Entertainment.

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

Нажмите что бы увеличитьНажмите что бы увеличить

Сотрудничество с компанией ZGFilm – а впоследствии и с Renovatio Entertainment – предоставило мне возможность работы над очень интересными проектами. Сейчас они находятся в стадии разработки, их потенциал и художественная составляющая колоссальны. Генератором и вдохновителем всего этого является режиссер Екатерина Гроховская. У нас за эти годы сложилось плодотворное, эффективное сотрудничество и полное взаимопонимание, что очень важно для меня как художника.

Нажмите что бы увеличитьНажмите что бы увеличить

3dgo.ru: Над каким проектом Вы работаете в настоящее время?

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

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

3dgo.ru: Ваши работы заслужили признание не только в России, но и за рубежом — в частности, ряд Ваших работ был опубликован в альбомах «Elemental» и «Expose. Finest Digital Art in the known universe», на Вашем счету аварды международных CG-конкурсов. Расскажите, пожалуйста, об этих работах и авардах.

Сергей: Да, мне удалось собрать небольшую коллекцию альбомов «Expose» с моими работами, целых 4 штуки :) Постепенно образовалась целая полка из альбомов, книг, каталогов. Чаще всего, это работы, которые я делал либо на конкурсы, либо в экспериментальных и учебных целях, либо просто для души. 

Нажмите что бы увеличитьНажмите что бы увеличить

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

Нажмите что бы увеличитьНажмите что бы увеличить

3dgo.ru: Сергей, расскажите, пожалуйста, поподробнее о своих победах на международных CG-конкурсах. Что это были за конкурсы? Какие именно работы приносили Вам победы? Планируете ли Вы участие в конкурсах в будущем?

Сергей: Первая победа в международном конкурсе, - это 1 место в категории «Still» (Professional) на международном конкурсе THE ANIMAGO AWARD в 2005 году. Победила моя работа «Город-скала».

Самым ярким было мое участие в конкурсе NVArt ArtSpace: Architecture and Landscape. В этом конкурсе тема архитектурной фантазии была ключевой, и мне было легко в нем участвовать. Я сделал четыре работы. Одна из них, «Великий баян», заняла 2 место, а еще одна, «Блуждающий город», о которой я уже рассказывал, оказалась среди отмеченных (honourable mentions).

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

3dgo.ru: Какое программное обеспечение Вы используете для работы? Какие его возможности для Вас наиболее ценны? Есть ли какие-то функции, которых Вам не хватает в используемом ПО? Планируете ли Вы осваивать другие программные пакеты?

Сергей: Я в основном использую Photoshop CS3 и довольно часто 3DS Max 9. Эти программы покрывают 90% моих задач. Раньше я неплохо знал Flash и ArchiCad. Бесконечно много раз пытался подружиться с Painter, но каждый раз с облегчением возвращаюсь к любимому Photoshop’у, хотя и он до конца еще мною не изучен. Я могу открыть и сделать что-то необходимое в очень многих программах, но серьезное изучение новых программ мне пока не требуется, хотя в будущем все возможно.

3dgo.ru: Вы работаете и в 2D, и в 3D, увлекаетесь фотографией, архитектурой. Скажите, кем Вы ощущаете себя в первую очередь, художником, фотографом или архитектором?

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

Нажмите что бы увеличитьНажмите что бы увеличить

3dgo.ru: Кого из отечественных или зарубежных художников Вы могли бы назвать своим вдохновителем, примером для подражания, чьи работы больше всего повлияли на становление Вашего стиля?

Сергей: Художников, чей стиль мне нравится, работы которых меня восхищают, много. Из наших сразу вспоминаю Сергея Колесова, Виктора Титова; из иностранцев – StephanMartiniere, Светлин Велинов, а работы китайца Ruan Jia вообще невероятны и удивительны, техника их исполнения меня поражает. И это только начало огромного списка художников работы, которых мне нравятся и вдохновляют.

3dgo.ru: Чем Вы занимаетесь в свободное от работы и творчества время? Расскажите о своих хобби.

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

Нажмите что бы увеличитьНажмите что бы увеличить

3dgo.ru: А где еще Вы черпаете вдохновение? Что помогает Вам выходить из творческих кризисов – если таковые бывают, разумеется?

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

Нажмите что бы увеличитьНажмите что бы увеличить

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

3dgo.ru: В каких еще направлениях CG Вам бы хотелось попробовать себя? Есть ли направления, которые, что называется, «не пошли»?

Сергей: Видеоарт очень интересует, непременно хочется попробовать себя в этом. А из тех, что «не пошли» – флэш-анимация. Одно время я очень много этим занимался. Несколько сотен роликов мы с моим коллегой и другом Артемом Поповым сделали для одной крупной американской компании. Мне это давалось очень легко, но почему-то развития не происходило. По этой причине интерес постепенно угас. Хотя и теперь с удовольствием иногда делаю небольшие анимационные ролики.

3dgo.ru: Кем Вы хотели быть в детстве? Когда Вы впервые поняли, что хотите быть художником?

Сергей: Кем я только не хотел быть :) Рисовал я с удовольствием с раннего детства. И мне кажется, что художником я себя ощущаю уже очень давно. А желание сделать художественное творчество профессией пришло в зрелом возрасте.

3dgo.ru: Кем бы Вы хотели быть, если бы Вы не были художником?

Сергей: Сейчас точно знаю, что был бы не меньше счастлив, если бы занимался наукой. Вот где настоящие творцы будущего! Сейчас трудно сказать, какой конкретно наукой я бы занимался. Но скорее всего, это была бы какая-то прикладная наука.

3dgo.ru: Расскажите о собственных проектах, о работе над ними. Есть ли идеи для будущих проектов? Можете ли рассказать о них, хотя бы вкратце?

Сергей: Собственных проектов, идей и задумок очень много, и их количество неуклонно растет :)

Например, из реализованного:

Проект «Учимся!». Все началось с участия в конкурсе на первомайскую открытку, проводимую журналом «Фотомастерская». Работа «Учимся летать» как победитель была издана огромным тиражом в качестве открытки. И далее все переросло в серию работ, которые как художественный проект были номинированы на Премию Кандинского и экспонировались на выставке в ЦДХ.

Нажмите что бы увеличить

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

Нажмите что бы увеличить

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

Нажмите что бы увеличить

3dgo.ru: Каким Вы видите свое будущее? Хотели бы Вы работать в крупной компании? Организовать свою студию? Или же Вы предпочли бы быть высокооплачиваемым фрилансером?

Сергей: Я не исключаю все эти три варианта, только в такой последовательности: фриланс и работа с крупными компаниями, своя студия. Надо просто быть готовым к решению серьезных задач, не останавливаться на достигнутом. И тогда мечтам, даже самым дерзким, свойственно сбываться.

Нажмите что бы увеличить

3dgo.ru: Как известно, многие художники уезжают из России на Запад в поисках лучших условий для творчества. Хотели ли Вы тоже уехать? Если да, то куда?

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

3dgo.ru: Планируете ли Вы делиться с коллегами опытом, например, в форме уроков?

Сергей: Обязательно планирую, но как только буду готов.

3dgo.ru: Что Вы могли бы прямо сейчас порекомендовать начинающим художникам? На что им стоит обратить особое внимание?

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

3dgo.ru: Сергей, редакция 3dgo.ru благодарит Вас за интересное интервью и желает Вам неиссякаемого вдохновения, творческих успехов и новых достижений. И, конечно же, мы ждем Ваших новых работ в галерее 3dgo.ru.

 


Страница 1 из 41

Архив статей

 янв   Февраль 2020   мар

ВПВСЧПС
   1
  2  3  4  5  6  7  8
  9101112131415
16171819202122
23242526272829
Julianna Willis Technology

Случайная новость

Введение

Этот материал адресуется лицам, использующим или желающим использовать при работе с 3ds Max язык программирования MAXSript.
В параметрической модели имеется взаимосвязь параметров ее различных компонентов. В такой модели изменение значения одного параметра влечет изменения значений связанных с ним параметров модели. Подобные модели широко применяются в САПР. Примером такой модели в 3ds Max может служить объект Biped (двуногий).
3ds Max позволяет создавать параметрические модели посредством связывания параметров, употребления соответствующих контроллеров и модификаторов (преимущественно параметрических), а также за счет создания соответствующего MAXSript-кода, обеспечивающего пересчет модели при изменении значения управляющего параметра.
Рассмотрим параметрическую модель (рис. 1, а), в которой реализуются следующие зависимости:

R = abs(0.25 * H);

spherePosition = conePosition + [0, 0, 1.25 * H],

где
R – радиус сферы;
H – высота конуса;
spherePosition – позиция сферы (координаты ее центра);
conePosition – позиция конуса (координаты центра его основания).

а б

Рис. 1. Параметризованная модель: а – H = 50; б – H = -50

Рассматриваемую модель можно реализовать в 3ds Max несколькими способами. Приведем два из них. В первом употребим контроллеры Float Expression и Position Expression для формирования соответственно первой и второй зависимостей, а во втором – контроллеры Float Script и Position Script.
Создание модели и ее параметризацию средствами контроллеров Float Expression и Position Expression обеспечит следующий код:

delete $*
h = 50
cn = cone radius1:20 radius2:0 height:70 heightSegs:20 sides:24 wireColor:[6, 135, 113]
sph = sphere radius:(0.25 * cn.Height) segs:32 wireColor: [135, 110, 8]
sph.Pos = cn.Pos + [0, 0, 1.25 * cn.Height]
cn.Height.Controller = bezier_float()
fltX = float_expression()
fltX.AddScalarTarget "h" cn.Height.Controller
fltX.SetExpression "abs(0.25 * h)"
sph.Radius.Controller = fltX
--
pstnX = position_expression()
pstnX.AddScalarTarget "h" cn.Height.Controller
pstnX.AddVectorTarget "ps" cn.Position.Controller
pstnX.SetExpression "ps + [0, 0, 1.25 * h]"
sph.Position.Controller = pstnX
animate on (
at time 0f (cn.Height = h; cn.Pos = [0, 0, 0])
at time 50f (cn.Height = -h; cn.Pos = [0, 0, h])
at time 100f (cn.Height = h; cn.Pos = [0, 0, 0])
)
playAnimation()

Порядок действий следующий:

  1. Сцена очищается, и создаются объекты конус и сфера с именами cn и sph соответственно.
  2. После создания контроллера fltX (применяется конструктор float_expression) в контроллере создается скалярная переменная h, зависящая от высоты конуса (метод AddScalarTarget): значение переменной h будет равняться высоте конуса. Предварительно этому параметру (высоте конуса) назначается контроллер Bezier Float, ссылка на который используется в качестве второго параметра метода AddScalarTarget.
  3. Далее задается выражение (метод SetExpression), результат которого возвращает контроллер fltX.
  4. Параметру сферы Radius назначается контроллер fltX.

Теперь изменение высоты конуса, например на вкладке Modify после выбора конуса, приведет к изменению радиуса сферы.
Для управления позицией сферы используется контроллер Position Expression, программируемый в следующем порядке:

  1. После создания контроллера pstnX (применяется конструктор position_expression) в контроллере создаются скалярная переменная h, зависящая от высоты конуса (метод AddScalarTarget), и векторная переменная ps, зависящая от позиции конуса (метод AddVectorTarget). Как и в случае метода AddScalarTarget, вторым параметром метода AddVectorTarget также является ссылка на контроллер (cn.Position.Controller). Значение переменной ps после установления такой связи будет равно значению позиции конуса (величина типа Point3).
  2. Далее задается выражение (метод SetExpression), результат которого возвращает контроллер pstnX.
  3. Свойству сферы Position назначается контроллер pstnX.

Наличие такого контроллера обеспечит надлежащее перемещение сферы при изменении позиции конуса.
Для демонстрации результата в точках 0f, 50f и 100f временной шкалы создаются ключи анимации высоты и позиции конуса.
После запуска программы можно открыть диалог настройки контроллера, например Float Expression (рис. 2), выполнив следующие действия: выбрать примитив Sphere – меню Graph Editors – Track View – Curve Editor – ветвь Objects – Sphere01 – Sphere (Object) – Radius – двойной удар мышью.

Рис. 2. Диалог настройки контроллера Float Expression

Порядок запуска MAXScript-кода в 3ds Max описан ниже.
Вторая реализация рассматриваемой модели, основанная на контроллерах Float Script и Position Script, поддерживается следующим кодом:

delete $*
h = 50
cn = cone radius1:20 radius2:0 height:70 heightSegs:20 sides:24 wireColor:clr
sph = sphere radius:(0.25 * cn.Height) segs:32 wireColor:clr2
sph.Pos = cn.Pos + [0, 0, 1.25 * cn.Height]
fltS = float_script()
fltS.AddNode "cn2" cn
fltS.Script = "abs(0.25 * cn2.Height)"
sph.Radius.Controller = fltS
--
psS = position_script()
psS.AddNode "cn2" cn
psS.Script = "cn2.Pos + [0, 0, 1.25 * cn2.Height]"
sph.Position.Controller = psS
animate on (
at time 0f (cn.Height = h; cn.Pos = [0, 0, 0])
at time 50f (cn.Height = -h; cn.Pos = [0, 0, h])
at time 100f (cn.Height = h; cn.Pos = [0, 0, 0])
)
playAnimation()

В обоих контроллерах определяется переменная cn2 (метод AddNode), хранящая ссылку на объект конус. Это обеспечивает доступ к свойствам конуса, что и используется соответствующим образом в Script-выражениях контроллеров (свойство Script).
С другими возможностями программного управления моделями 3ds Max можно познакомиться, обратившись, например, к приведенным в конце урока источникам.
Рассмотренную модель можно, разумеется, реализовать интерактивно, без применения MAXScript. Следующая модель такой альтернативы не имеет.

Описание модели стула

В рассматриваемом примере регулируемым параметром является радиус скруглений R между отдельными компонентами модели стула. Изменение радиуса влечет изменение высоты ножек стула, размеров его сиденья и спинки (рис.3).

а б

Рис. 3. Параметризованный стул: а - R = 5; б - R = 15

Модель имеет следующие характеристики:

  1. Радиус всех скруглений одинаков и изменяется с шагом 1 в диапазоне 5 – 15 единиц.
  2. При пересчете модели сохраняются габариты стула, хранимые глобальными переменными wX, wY и wZ, а также размеры и положение задних ножек стула.
  3. Каркас стула воспроизводится цилиндрами и дугами (примитивы Cylinder и Arc); последние используются для отображения скруглений.
  4. Сиденье и списка стула отображаются посредством примитива Plane (плоскость).
  5. Сиденье отстоит от основания стула на 0.5 * wZ.

MAXScript-реализация модели стула

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

global rlFlt
global clr = [6, 135, 113], clr2 = [135, 110, 8]
global wX = 60.0, wY = 45.0, wZ = 120.0
global arrC = #(), arrRc = #()
--
fn Prps = (
 delete $*
 units.DisplayType = #Generic
 units.SystemType = #Inches
 viewport.SetLayout #layout_4
 viewport.ActiveViewport = 4
 max vpt persp user
 viewport.SetGridVisibility 4 false
 max tool zoomExtents
 backgroundColor = color 200 200 200
)
--
fn fndPs R wX wY wZ &arrPs = (
 x = 0.5 * wX
 y = 0.5 * wY
 vY = [0, wY, 0]
 wZ2 = 0.5 * wZ
 p1 = [-x, -y, 0]; p2 = p1 + vY
 p3 = [x, -y, 0]; p4 = p3 + vY
 p5 = [0, -y, wZ2]; p6 = p5 + vY
 p7 = [x, -y, 0.75 * wZ]; p8 = p7 + vY
 p9 = [x + 2 * R, 0, wZ]
 p10 = [-x, -y, wZ2 - R]
 p11 = [x, -y, wZ2 + R]
 arrPs = #(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)
 for k = 1 to 2 do arrC[k].Height = wZ2 - R
 for k = 5 to 6 do arrC[k].Height = wX - 2 * R
 for k = 7 to 8 do arrC[k].Height = wZ2 - 2 * R
 arrC[9].Height = wY - 2 * R
)
--
fn fndPs2 R wX wY wZ &arrPs2 = (
 x = 0.5 * wX
 y = 0.5 * wY
 vY = [0, wY, 0]
 wZ2 = wZ / 2
 pc1 = [-x + R, -y, wZ2 - R]; pc2 = pc1 + vY
 pc3 = [x - R, -y, wZ2 + R]; pc4 = pc3 + vY
 pc5 = [x + R, -y, wZ - R]; pc6 = pc5 + vY
 pc7 = [x + R, -y + R, wZ]; pc8 = pc7 + [0, wY - 2 * R, 0]
 arrPs2 = #(pc1, pc2, pc3, pc4, pc5, pc6, pc7, pc8)
)
--
fn mkChr R wX wY wZ = (
 Prps()
 arrC = for k = 1 to 11 collect cylinder wireColor:clr2 radius:2
 arrPs = #()
 arrPs2 = #()
 fndPs R wX wY wZ &arrPs
 fndPs2 R wX wY wZ &arrPs2
 arrC[3].Height = arrC[4].Height = sqrt ((0.5 * wX)^2 + (0.5 * wZ)^2)
 for k = 10 to 11 do arrC[k].Height = wY
 for k = 5 to 9 do arrC[k].Pivot = [0, 0, 0.5 * arrC[k].Height]
 for k = 1 to 11 do arrC[k].Pos = arrPs[k]
 for k = 3 to 4 do rotate arrC[k] -(atan (1.0 * wX / wZ)) [0, 1, 0]
 for k = 5 to 6 do rotate arrC[k] 90 [0, 1, 0]
 for k = 9 to 11 do rotate arrC[k] -90 [1, 0, 0]
 rc = arc radius:R from:0 to:90 pie:off reverse:off pos:[0, 0, 0] \
  rotation:(quat -0.5 0.5 -0.5 -0.5) wireColor:clr2 \
  render_renderable:on render_displayRenderMesh:on render_useViewportSettings:off \
  render_mapcoords:on render_displayRenderSettings:off render_viewport_thickness:4.0 \
  render_thickness:4.0
 arrRc = for k = 1 to 7 collect copy rc
 arrRc.WireColor = clr2
 arrRc[6].Rotation = quat 0 0 -0.707107 0.707107
 arrRc[7].Rotation = quat 0 0 0 1
 insertItem rc arrRc 1
 arrNg = #(0, 0, 180, 180, 0, 0, 0, 0)
 for k = 1 to 8 do (
  rotate arrRc[k] arrNg[k] [0, 1, 0]
  arrRc[k].Pos = arrPs2[k]
 )
 max tool zoomExtents
 global pln = plane length:wY width:(wX - R) lengthSegs:1 widthSegs:1 \
  pos:[0, 0, wZ / 2] wireColor:clr
 p = arrPs[7]; p[2] = 0
 global pln2 = plane length:wY width:(wZ / 2 - 2 * R) lengthSegs:1 widthSegs:1 \
  pos:p wireColor:clr
 rotate pln2 -90 [0, 1, 0]
)
--
fn chgChr R wX wY wZ = (
 for k = 1 to 2 do arrC[k].Height = 0.5 * wZ - R
 for k = 5 to 6 do arrC[k].Scale = [1, 1, (wX - 2 * R) / arrC[5].Height]
 for k = 7 to 8 do arrC[k].Scale = [1, 1, (0.5 * wZ - 2 * R) / arrC[7].Height]
 arrC[9].Scale = [1, 1, (wY - 2 * R) / arrC[9].Height]
 arrC[9].Pos = [0.5 * wX + 2 * R, 0, wZ]
 arrC[10].Pos = [-0.5 * wX, -0.5 * wY, 0.5 * wZ - R]
 arrC[11].Pos = [0.5 * wX, -0.5 * wY, 0.5 * wZ + R]
 arrPs2 = #()
 fndPs2 R wX wY wZ &arrPs2
 for k = 1 to 8 do arrRc[k].Pos = arrPs2[k]
 arrRc.Radius = R
 pln.Width = wX - 2 * R
 pln2.Width = 0.5 * wZ - 2 * R
)
--
rollout rChr "Chair" width:120 height:100 (
 spinner spnR "R " pos:[15,5] width:100 height:20 range:[5,15,1] type:#integer
 colorPicker theClr "Color " pos:[15,30] width:100 height:20 color:clr modal:true
 button btnNmt "Animation" pos:[15,55] width:100 height:20 toolTip:"Play animation"
 button btnCls "Close" pos:[15,80] width:100 height:20 toolTip:"Close Dialog"
 on spnR changed val do chgChr val wX wY wZ
 on theClr changed newClr do (
  clr = newClr
  pln.WireColor = newClr
  pln2.WireColor = newClr
 )
 on btnNmt pressed do (
  animationRange = interval 0f 100f
  timeConfiguration.PlaybackLoop = false
  with redraw off (
   animate on (
    at time 0f chgChr spnR.Range[1] wX wY wZ
    at time 50f chgChr spnR.Range[2] wX wY wZ
    at time 100f chgChr 10 wX wY wZ
   )
  )
  max tool zoomExtents
  playAnimation()
  with redraw off (
   sliderTime = 0f
   chgChr 10 wX wY wZ
  )
  spnR.Value = 10
 )
 on btnCls pressed do closeRolloutFloater rlFlt
)
--
function opnRlFlt = (
 if rlFlt != undefined then closeRolloutFloater rlFlt
 rlFlt = newRolloutFloater "Chair" (rChr.Width + 35) (rChr.Height + 35) 50 50
 addRollout rChr rlFlt rolledUp:false
 rChr.spnR.Value = 10
)
--
mkChr 10 wX wY wZ
opnRlFlt()

Запуск программы

Запуск программы выполняется в 3ds Max в следующем порядке:

  1. Открыть редактор кода (меню MAXScript – MAXScript Editor).
  2. Перейти в открывшийся диалог и при необходимости создать новую вкладку (Ctrl + N).
  3. Скопировать код, приведенный в уроке, в чистую вкладку редактора.
  4. Позиционироваться в любом месте скопированного кода и нажать Ctrl + E, либо воспользоваться меню редактора Tools – Evaluate All.
  5. Употребить появившийся диалог (рис. 4) для управления моделью стула, которая отобразится в сцене непосредственно перед открытием диалога.

Рис. 4. Управляющий диалог Chair

Описание программы

Построение стула обеспечивает функция mkChr, которая принимает в качестве параметров значения радиуса скруглений, длину, ширину и высоту стула – это соответственно параметры R, wX, wY и wZ. Стул состоит из 11 цилиндров (примитив Cylinder), 8 дуг (примитив Arc) и двух плоскостей (примитив Plane). Последние употребляются для отображения сиденья и спинки стула.
Переменные wX, wY и wZ объявлены как глобальные, что позволяет применять их в обработчике on btnNmt pressed управляющего диалога Chair (идентификатор rChr).
Цилиндры хранит массив arrC; номера цилиндров, то есть их индексы в массиве arrC, показаны на рис 5, а.

а б

Рис. 5. Нумерация компонентов модели стула: а – нумерация цилиндров; б – нумерация дуг

Дуги хранятся в массиве arrRc; их индексы в этом массиве показаны на рис. 5, б.
Плоскости для сиденья и спинки имеют в программе соответственно идентификаторы pln и pln2. Эти имена являются глобальными и поэтому доступны в обработчиках диалога Chair.
Перед построением модели функцией Prps удаляются все элементы сцены и устанавливаются требуемые параметры сеанса – это тип единиц измерения, число видовых портов (4), активный видовой порт (4) и его тип (Perspective). Кроме того, в этом видовом порте устраняется изображение сетки и выполняется команда max tool zoomExtents.
Координаты базовых точек цилиндров и дуг вычисляются соответственно функциями fndPs и fndPs2, принимающими вдобавок к параметрам R, wX, wY и wZ соответственно массивы arrPs и arrPs2. В эти массивы названные функции записывают необходимые для построения примитивов координаты их базовых точек. Нумерация базовых точек отвечает показанным на рис. 5 нумерациям цилиндров и дуг.
Параметризация модели обеспечивается функцией chgChr, которая вызывается обработчиком on spnR changed при изменении счетчика R (spinner spnR) диалога Chair. Также эта функция применяется при создании ключей анимации (кнопка Animation диалога Chair).
Функция принимает параметры R, wX, wY и wZ. Параметр R является изменяемым, и его значение берется равным показанию счетчика R диалога. Прочие параметры после запуска программы не изменяются.
Получив новое значение радиуса, функция chgChr:

  • изменяет высоту цилиндров 1 и 2 (свойство Height цилиндра);
  • соответствующим образом масштабирует цилиндры 5 – 9 (свойство Scale цилиндра);
  • изменяет положение цилиндров 9, 10 и 11 (свойство Pos цилиндра), смещая позицию цилиндров 10 и 11 в начало, а цилиндр 9 в конец соответствующих дуг модели;
  • изменяет координаты центра каждой дуги (свойство Pos дуги); для этой цели, как и при создании модели, выполняется обращение к функции fndPs2;
  • изменяет значение радиуса каждой дуги (свойство Radius дуги);
  • модифицирует ширину сиденья и спинки (свойство Width плоскостей pln и pln2).

В рассматриваемой модели масштабирование цилиндра будет вызывать надлежащий эффект, если базовая точка цилиндра (свойство Pivot) расположена в его центре, а не в центре основания, как это предусмотрено по умолчанию. Эта проблема решается при создании модели функцией mkChr за счет употребления следующего кода:

for k = 5 to 9 do arrC[k].Pivot = [0, 0, 0.5 * arrC[k].Height]

Таким образом, функция chgChr обеспечивает получение экземпляра модели, отвечающего принятому функцией значению радиуса скругления R. Все преобразования выполняются исходя из неизменности габаритов стула и положения его сиденья. Единственными неизменяемыми компонентами модели являются цилиндры 3 и 4, отображающие задние ножки стула.
Кроме обработчика on spnR changed, вызываемого при изменении показания счетчика R, диалог Chair (см. рис. 4) содержит обработчики on theClr changed, on btnNmt pressed и on btnCls pressed do, выполняемые соответственно при нажатии на полосу с цветом (элемент colorPicker), на кнопку Animation (элемент button btnNmt) и Close (элемент button btnCls).
Ключи анимации рассчитываются в точках 0f, 50f и 100f временной шкалы после нажатия на кнопку Animation диалога Chair: выполняется обработчик on btnCls pressed do, в котором трижды вызывается функция chgChr. После воспроизведения анимации (метод playAnimation) временная шкала устанавливается в точку 0f и вновь вызывается функция chgChr со значением параметра R, равным 10. Это обеспечивает появление начального образа стула. Это же значение радиуса скругления устанавливается и в счетчике R диалога (spnR.Value = 10).

Заключение

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

  • структуризации модели и сохранения в ней параметров, влияющих на ее геометрию;
  • поиска зависимостей между параметрами;
  • реализации этих зависимостей (как правило, с привлечением MAXScript).

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

Источники

  1. Autodesk® 3ds Max® 2009 MAXScript Reference.
  2. Бартеньев О. В. Программирование модификаторов 3ds Max. Учебно-справочное пособие. – М.:Физматкнига, 2009. – 341 с.
  3. http://100byte.ru/

далее