Link:INB Home|INB English| INB русский язык|INB العربية|INB Türkiye|INB فارسی|INB Español|INB Français|INB Português|INB Deutsch|INB 國語|INB 中文|INB 日本语|INB 한국어|INB ภาษาไทย|INB tiếng Việt||Уроки 3ds Max Способы анимации замка "молнии"2
INB русский язык Форум
Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com
INB русский язык Форум
Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com
INB русский язык Форум

Добро пожаловать! inbforum.COM Интернет без границ Форум Здесь вы можете обсудить с друзьями по всему миру прений, приходите и присоединяйтесь к нам! Постоянный имя: Ruinbforum.forumotion.com


Вы не подключены. Войдите или зарегистрируйтесь

《《《《《《《上一页INBforum   Перейти вниз

上一页INBforum》》》》》》》Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

1Уроки 3ds Max Способы анимации замка "молнии"2 Empty Уроки 3ds Max Способы анимации замка "молнии"2 Вс Окт 03, 2010 7:36 am

Admin

Admin
Admin
Ну, вот и все, собственно. Если сейчас включить в Cloth режим Simulate Local и подвигать слайдер отвечающий за застегивание молнии, то мы уже, в реальном времени, сможем увидеть довольно приемлемый результат.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Осталось только подстроить настройки ткани, и сделать тестовую симуляцию. Практика показала, что лоскутки лучше всего работают, если их материалу загрузить присеет резины (Rubber). Зайдите в подобъект Group, и выделяя по очереди группы с лоскутками, которым мы назначили собственный материал, загружайте присеет Rubber, только проделать это нужно для каждой группы:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Можно так же покрутить sm/unit в пределах 1-3 и добавить Subsample до 4-6, для увеличения точности расчета.
Осталась одна маленькая деталь - это собственно замок, который ездит по молнии вверх-вниз. Если вы думаете, что сделать его проще простого, то я гомерически рассмеюсь вам в лицо три раза, когда вы с удивлением обнаружите что ни галочка Folow, ни прочие настройки Path контроллера не помогают задать замку правильную ориентацию в пространстве. Но мы и не ищем легких путей, так что, берем и строим систему для правильной ориентации замка в пространстве, а заодно, вы узнаете ответ на вопрос, который вероятно, мучает вас с самого начала урока – зачем же мы построили те две лишние линии по краям от молнии?
Перед тем как начать построение системы для ориентирования замка я постараюсь концептуально объяснить, как она работает. Объяснение пойдет по рисунку ниже. Первым делом обратите внимание на хелперы в разноцветных кружках. Они, как и все остальные элементы данной системы, посажены на путь через Path конроллер и управляются отдельным слайдером, который мы специально для этого поострим. Служат они LookAt целями для еще двух хелперов, на рисунке они показаны в виде осевых стрелок. И наконец, светло зеленый поинт в виде куба это и есть правильно ориентированный замок, а свою чудесно-правильную ориентацию он берет с этих самых двух «стрелочных» хэлперов. Он вычисляет среднее положение ориентации между стрелками и занимает промежуточное положение между ними.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Надеюсь концепт ясен, приступим к построению. Итак спрячете все кроме линий. Постройте поинт в произвольном месте экрана и назначьте ему Path контроллер чтобы «направить его на путь истинный» и в качестве пути укажите одну из линий. После этого создайте еще два таких же поинта и назначьте оставшиеся пути.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Примечание: Если получилось так, что когда вы посадили хелпер на путь он оказался не внизу, а вверху, это значит что вверху находится первая точка сплайна. Для того, чтобы это исправить, выделите сплайн, зайдите в подобъект Vertex, выделите точку которая должна быть первой (то есть нижнюю точку) и нажмите кнопку MakeFirst. Правда, если на линии применен модификатор Skin Wrap, его придется удалить (иначе он будет удерживать сплайн в прежнем положении), затем временно отключить на цилиндре модификатор Cloth и по новой «приврапить» сплайн к цилиндру.
Теперь нам надо, чтобы эти хелперы перемещались по пути вверх-вниз. Вообще замок мы сделаем отдельной системой. Просто, время стягивания ткани бывает трудно проконтролировать, и может получиться так, то шов еще не стянулся, а замок уже уехал вверх. Поэтому, я думаю, никакая не проблема, сделать анимацию замка отдельной системой. Для этого скопируйте имеющийся слайдер, настройте и удобно разместите его. Если решили создать слайдер по новой, то не забудьте в Curve Editor назначить ему на параметр Value, контроллер Besier Float.
Теперь привяжем поинты к слайдеру. Выделяем первый, крайний поинт, и в Curve Editor, на параметр Percent назначаем скрипт-контроллер:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
и пишем в нем:
dependsOn $Slider03.value.controller
$Slider03.value
Нажимаем Evolute закрываем окно контроллера. Тоже самое, повторяем для второго крайнего поинта. И теперь, то же самое проделываем со средним поинтом, но в скрипт-контроллере пишем:
dependsOn $Slider03.value.controller
$Slider03.value+0.1
Таким образом, мы прибавляем к положению поинта на пути значение 0.1, это заставит его всегда быть чуть выше на пути, и мы сможем настроить на него систему ориентации замка с помощью Look At контроллера. Из этих же соображений, область работы слайдера (Slider03) поставьте от 0 до 0.99, чтобы не допустить выравнивания построенных поинтов в одну линию.
Примечание: в данном случае на самом деле можно использовать и меньшее значение, например 0.01, а большее значение я использовал просто для наглядности.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь строим два хелпера, которые будут смотреть каждый на свой, из двух боковых поинтов. Создаем точку, для удобства отображение ее устанавливаем в виде осевых стрелок, и назначаем ей Path контроллер и указываем в качестве пути среднюю линию. А также, на вращение, назначаем Look At контроллер. В качестве цели, в контроллере указываем поинт на средней линии, тот чье положение мы чуть поднимали. Настройки Look At контроллера оставляем по умолчанию, НО в качестве Upnode куазываем один из боковых поинтов. После чего его ориентация берет равнение на этот боковой поинт и приобретает искомое положение в пространстве:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
А чтобы задвигать этот поинт по пути, привычным движением в Curve Editor назначаем на Precent скрипт-контроллер с выражением:
dependsOn $Slider03.value.controller
$Slider03.value
Опять же, создаем точно такой же поинт, так же на Percent назначаем скрипт-контроллер, также садим его на путь, также назначаем Look At, так же цель указываем средний поинт, НО в Upnode указываем другой боковой поинт, а в Source Axis ставим галку Flip, чтобы ориентация обоих хелперов была смежной.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]:
Вот мы и построили систему орентирования для замка, осталось поострить сам замок. Что мы незамедлительно и сделаем. Итак, создаем последний поинт, это и будет наш замок, садим его на средний путь, и задаем ему, наконец-то правильную ориентацию. Для этого открываем его в Curve Editor, на Percent садим скрипт контроллер, чтобы привязать к слайдеру как остальные поинты, а на Rotation назначаем контроллер Orientation Constraint. В качестве целей для него указываем те самые последние два поинта, которые у нас в виде стрелок, а вес ставим по 100% на каждую цель:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Ура! Вот мы и построили замок. А теперь, специально для тех, кто сумел до сюда дочитать, подложим последнюю «мину». Прилепим на замок еще один «наворот». А смысл «наворота» вот в чем: сейчас мы посторили систему, которая выравнивает нам ориентацию замка усреднено, между сшиваемыми половинами ткани, но когда половинки не соединены, нам не нужно чтобы замок «глядел» на отделенную половину, а сохранял ориентацию той половины, к которой он прикреплен. То есть выравниваться по обеим половинам он должен только при соединении тканей. Этот эффект мы можем реализовать если покрутим веса в Orientation Constraint замка, убавив вес цели с противоположной половины.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Чтобы автоматизировать этот процесс мы привяжем этот вес к первому (к нижнему) масштабируемому поинту, нашей базовой системы «молнии». Для этого найдем нужный вес в Curve Editor
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
и назначим ему скрипт-контроллер, в котором напишем:
dependsOn $zip_obj01.scale.controller
(1-$zip_obj01.scale.Z)*100
Выражение гласит: 1 минус масштаб первого поинта (от 0 до 1) умноженное на 100, потому что вес ориентации который мы устанавоиваем от 0 до 100, а не от 0 до 1 и полученное значение должно быть в 100 раз больше. Ну а «dependsOn…» нужен для того чтобы скрипт обновлялся при работе объекта zip_obj01, и мы могли видеть изменения в реальном времени во вьюпорте.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь, вы можете видеть что замок работает как и задумывалось. Теперь, можно сделать тестовую симуляцию ткани и сделать анимацию замка. Ну, а вот и результат:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Вариант второй (костный)
Можно было бы придумать и другой костный вариант, но эту задачку подбросил мне один паренёк из Румынии, по имени Predu. Мне она показалась интересной, и я решил ее использовать в качестве костного варианта, да и вам будет уже более понятно, как разнообразно можно использовать систему хелперов «молнии».
А задача заключается в следующем, «молния» стилизованная под веко, застегивает огромный глаз. Для того чтобы реализовать этот эффект мы постоим систему костей, к которым прискинем модель века. Кости при приближении замка будут по очереди закрываться. Задача поставлена - начинаем рабту.
Строим модель шара и преобразуем его в Poly. Тут же выделяем дугу верхних ребер и преобразуем ее в сплайн
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
а точки сплайна выделяем и тип точек ставим Smooth. Удаляем ненужные сегменты сферы:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь точно также как и в начале, строим систему хелперов «молнии» и размещаем масштабируемые поинты соосно узлам модели шара:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Это были подготовительные работы, теперь строим кости. Кости, а точнее, основную кость. Как ни странно, мы не будем вращать, в каком бы то ни было, прямом смысле. Сделаем по другому: постоим два хелпера, один будет смотреть осью X вверх, а другой в сторону, а на кость назначим Orientation Consrtaint контроллер в котором укажем эти два хелпера в качестве целей, и она будет у нас работать не по вращению, а по ориентации глядя то на один хелпер, тот что смотрит вверх, то на другой, тот что смотрит в сторону. То есть, для вращения кости, управлять мы будем весами Orientation Consrtaint контроллера. Остальные, вспомогательные кости будут брать ориентацию с хелпера смотрящего в сторону и соседней кости.
Итак, строим первую кость.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Далее, строим поинт, настраиваем его вид, так чтобы было видно оси, и выравниваем его инструментом Align по позиции и, обязательно, по вращению:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Потом, копируем этот поинт и поворачиваем его осью X в бок. Настраиваем его цвет и размер, чтобы его легко можно было отличить от поинта смотрящего вверх:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь сделаем необходимые привязки. Основным родителем у нас будет поинт смотрящий вверх (2). Инструментом Select and Link линкуем к нему поинт смотрящий в сторону (3). Далее, выделяем кость (1) и назначаем ей на Position контроллер Position Constraint. В качестве цели укажем поинт смотрящий вверх (2). После этого кость будет привязана к поинту по позиции. Теперь, таким же образом, привяжем ориентацию. Для этого на Rotation кости назначаем контроллер Orientation Constraint и в качестве целей указываем хелперы 2 и 3.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь если покрутить веса в Orintation Constraint мы увидим как кость вращается.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Остальные две кости будут устроены очень просто. Двойным кликом выделяем первую кость и копируем как Copy два раза. У нас добавляются вторая и третья кость. В контроллере Orintation Constraint второй кости, убираем все цели и, в качестве новых целей, указываем основную кость и хелпер указывающий в сторону. Веса устанавливаем по 100%. Для третей кости указываем в качестве новых целей вторую кость и, тот же хелпер, указывающий в сторону, веса, так же 100. Вот, наша костная система, собственно, и готова. Ничего сложного:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Тепепрь начинаем реализовывать скриптовую часть работы. Что мы хотим? А хотим мы, во-первых, чтобы кости закрывались при закрытии масштабируемого поинта системы хелперов «молнии», во-вторых, мы хотим иметь возможность настраивать положение первой, второй и третей костей, чтобы подгонять костную модель под модель для скина, да и вообще, чтобы можно было подстроить кости поудачнее, в случае чего. Для этого, нам понадобится еще три слайдера, для первой, второй и третьей костей соответственно.
Итак, постойте три слайдера, либо скопируйте один из имеющихся. Не забываем назначать, либо убеждаться в наличие контроллера Besier Float на параметре Value слайдеров. Иначе, мы не сможем привязаться к этому параметру скриптом. Ход первого слайдера от 0 до 1, второго и третьего от -50 до 50
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Названия слайдерам, чтобы не путать его в скрипте с другими слайдерами, напишем: «first», «second» и «third». Обратите на это особое внимание (!!!), эти же имена мы будем указывать в скрипте!
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Итак выделяем первую, основную кость и идем в Curve Editor и находим там веса целей Orientation Constraint контроллера.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Чтобы вращать кость, нам нужно убавить вес одной цели и добавить вес другой цели, и наоборот. Нам нужно назначить скрипт-контроллеры на оба веса, чтобы масштабируемый поинт, к которому мы будем привязываться, дифференцированно изменял значения обоих контроллеров.
Итак, сначала отыщем контроллер который управляет весом цели, смотрящей вверх (можно заметить как на таймлайне Curve Editor-а изменяется текущее значеине контроллера):
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Назначаем на этот вес скрипт-контроллер и в нем пишем:
dependsOn $zip_obj01.scale.controller
dependsOn $first.value.controller
first=$first.value
a=$zip_obj01.scale.z*first
a
Этот скрипт будет присваивать весу (weight1) значение масштаба первого поинта в системе хелперов (zip_obj01) помноженное на значение слайдера (first), чтобы мы могли подстроить его положение.
На второй вес назначаем точно такой же скрипт, с той разницей, что поученное значение (от 0 до 1) отнимается от 1. Таким образом, мы присваиваем весу дифференцированное значение масштаба:
dependsOn $zip_obj01.scale.controller
dependsOn $first.value.controller
first=$first.value
a=$zip_obj01.scale.z*first
1-a
Вуаля! Все работает:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Осталось завести слайдеры для подстройки оставшихся двух костей. Выделяем вторую кость, открываем ее в Curve Editor и назначаем на параметры весов скрипт контроллеры. Находим вес цели первой кости и его скрипт-контроллере пишем:
dependsOn $second.value.controller
50-$ second.value
В скрипте второго веса пишем то же самое, только «-» мнеяем на «+»
dependsOn $second.value.controller
50+$second.value
Проверяем:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
И тоже самое проделываем для третьей кости, только привязываемся к третьему слайдеру (third). Для веса цели второй кости пишем:
dependsOn $third.value.controller
50-$third.value
В скрипте второго веса так же «-» мнеяем на «+»
dependsOn $ third.value.controller
50+$third.value
Проверяем - все работает:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь нужно раскопировать этот костнтый болк для каждой точки шва. Это в принципе не сложно. Просто выделяем костный блок и вращая копируем его:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Потом опять выделяем, уже два этих костных блока, и копируем, вдоль шва «молнии»:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь нам предстоит немного нудная работа – зайти в скрипт-контроллеры всех первых костей и назначить их на соответствующие масштабируемые поинты системы «молнии». Открываем Curve Editor и поочередно выделяя «первые» кости заходим в скрипт-контроллеры и прописываем имя соответствующего поинта «молнии»:
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Если все сделано правильно, то систему можно считать законченной.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Теперь, показываем модель, и с помощью слайдеров подгоняем кости к узлам сетки. Далее, идем в верхнее меню Character, открываем инструмент Bone Tool, и включаем режим Bone Edit Mode.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
В этом режиме, в локальной системе координат [Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение] подгоняем кости к модели.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Вот и все - можно скинить. Поскольку костную модель мы сделали под точки модели, то скинить будем к маленьким косточкам на концах основных костей. А для нижней части, где нет костей, создайте какой-нибудь бокс и используйте его для скина остальных точек модели.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Полученную модель можно использовать в качестве драйвера для анимации HighPoly декорации (что это значит ищите здесь).
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Вроде такой простой эффект, а столько писанины. Я сердешно поздоравляю тебя читатель, если ты читаешь этот текст, это значит что ни смотря ни на что добрался до финиша и мы победили!!! )))
Сцены для урока (3dsmax 2008):
Скачать сцену системы хелперов.
Скачать сцену с тканным способом.
Скачать сцену с костным способом.
С уважением MaxGoodwin.]

http://ru.inbforum.com

上一页INBforum   Перейти вниз

上一页INBforumПредыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения

Copyright ©2009-2010 LTD Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

IT:SINGLESERVGoogle谷歌翻译TranslateFORUMSOFTLAYERGoogle谷歌广告联盟AdSenseAsia

 

Форум phpBB | ©phpBB | Бесплатный форум поддержки | Сообщить о нарушении | Последние обсуждения