|
|
Уроки 3DTUTOR v1.05 от 15.04.00г.
Адрес в Internet:
3DFAQ: http://members.xoom.com/brait/faq/3dfaq105.zip - 137Kb
3DTUTOR: http://members.xoom.com/brait/faq/3dtut105.zip - 135Kb
Копии файлов:
www.saunalahti.fi/~nurbs/surender/info/3d_alex_grishanov_faq_v1_05.zip
www.saunalahti.fi/~nurbs/surender/info/3d_alex_grishanov_tutor_v1_05.zip
+ Пункты, отмеченные этим символом, появились с момента предыдущей
публикации 3DTUTOR в конференции SU.RENDER.
* Пункты, отмеченные этим символом, изменились с момента предыдущей
публикации 3DTUTOR в конференции SU.RENDER.
=+=+=+=+=+=+=+=
4. Вопросы и ответы про Maya (Alias Wavefront):
-----------------------------------------------
4.1.1 Как в Maya создавать _сложные_ текстуры? Например: Noise
синего цвета по белому, затем белый цвет делаем прозрачным,
а по оставшемуся синему Noise пускаем Grid, на который
потом проецируем планарную картинку...
4.1.2 Возможно ли в Maya сделать так, чтобы "constraint" работал
не все время, а только определенные кадры? Пример - рука
берет шарик и ложит его на стол...
4.1.3 Не получается сделать флаг, развивающийся на ветру! Даже
через Maya Cloth не получается.
4.1.4 Тут задачка хитрая есть... Предположим, что "softbody
nurbsSphere" падает на "nurbsPlane". Надо сделать так,
чтобы она ударилась, деформировалась, отскочила, и далее
вела себя как "rigid body". Вопрос - как?
4.1.5 На объект нyжно наложить текстypy. Пyсть объектом бyдет
кyбик. Нyжно наложить на каждyю стоpонy свой Bump (гpyбо
говоpя). Как это сделать, использyя LayeredShader?
=+=+=+=+=+=+=+=
4-1-1
Q: Как в Maya создавать _сложные_ текстуры? Например: Noise синего
цвета по белому, затем белый цвет делаем прозрачным, а по
оставшемуся синему Noise пускаем Grid, на который потом
проецируем планарную картинку...
A: Автор ответа: Sergey Kapitsyn
Множеством способов. Вот тебе три:
1) Наиболее общий.
Создаешь Shading Group с материалом и назначаешь объекту.
Создаешь ноду Utilities/Blend Colors. Коннектишь эту ноду к
цвету материала (средней кнопкой хватаешь ноду в Multilister'e
и бросаешь на Color материала в Attribute Editor'е). Создаешь
2d или 3d noise. Хватаешь его опять же средней кнопкой и
кидаешь на иконку blendColors прямо там же, в Multilister'е.
Открывается Connection Editor. Жмешь на Out Alpha у фрактала,
на blender у blendColors. Соединил. Теперь у тебя фрактал
регулирует "смеситель" цветов (blender). Открой Attribute
Editor для blendColors и измени красный цвет на белый. У тебя
получился шум из белого и синего цветов. Отрендерил?
Получилось? Если да, идем дальше. К слову, по дефолту шум
получается довольно плотным, советую поставить
RepeatUV=0.2,0.2 в его плейсменте. Далее. Только давай немного
отступим от темы.
Белый сделать прозрачным - это неспортивно :) Тут достаточно
просто кинуть тот же фрактальный шум на прозрачность материала.
Давай сделаем так - вместо белого сделаем зеленый чекер,
а вместо синего - кинем картинку. Итак, открываем Attribute
Editor для блендера и напротив белого цвета жмем кнопку Map.
Выбираем checker и создаем его, лезем в его атрибуты и меняем
черный цвет на зеленый (лучше темно-зеленый). Рендерим.
Зеленая шахматная доска, облитая синей краской. Ладно, лезем
опять в атрибуты блендера и жмем Map напротив синего цвета.
Теперь выбираем файл, глотаем его с диска и рендерим снова.
Вот и результат!
2) Через Layered Shader.
Лучше начни с "белого листа", с новой сцены, а то старые
коннекшены с новыми скрестятся - каша может получиться.
Создаем Layered Shader и назначаем объекту. Создаем материал
(без Shading Group!). Открываем Attribute Editor для Layered
Shader, в Multilister'e открываем закладочку Materials,
цепляем материал средней кнопкой и кидаем в поле Layered
Shader Attributes attribute editor'a. Теперь нажимаем крестик
под зеленым (дефолтным) квадратиком и удаляем его. Пока у нас
остается один слой (layer) - наш материал. Присвоим этому
материалу в качестве цвета тот самый зеленый с белым чекер.
Теперь создаем еще одну текстуру - файл и откроем ту же самую
картинку. Текстуру цепляем мышкой и отправляем туда же,
в поле Layered Shader Attributes. Правда, у нас получилось не
слишком здорово - текстура оказалась под материалом. Но это
поправимо - хватаешь левый прямоугольник и тащишь вправо,
отпускаешь, слои меняются местами.
Рендерим. Хня какая-то! Поставь вместо Layer Shader Layer
Texture. Теперь вообще картинка пропала. Это потому что по
дефолту у нее стоит полная прозрачность. А нам надо на
прозрачность назначить фрактальный шум. Создаем фрактальный
шум и в его плейсменте проставляем RepeatUV=0.2,0.2, как и в
прошлый раз. Открываем в Attribute Editor'e (буду писать
сокращенно AE) Layered Shader и тыкаем на левый прямоугольник
(только не на крестик внизу!), чтобы выделить его. Теперь
фрактал из Multilister'a тащим на кнопку Map напротив
Transparency в AE.
Рендерим. Получилось ровно то же, что и в п.1!
3) Через Stencil.
Опять начни заново.
Создаешь материал с SG, назначаешь объекту, жмешь на Map
напротив Color. Тыкаешь на _As stencil_, потом на checker.
Создаются сразу две ноды - stencil и checker. Открываешь AE
для чекера и красишь ему клетки в зеленый цвет. Открываешь
АЕ для stencil'а... Вот тут тебя ждет сюрприз!
Текстуру можно назначить любому параметру, а не только тем,
напротив которых есть кнопка Мар! Жмешь _правую кнопку_ на
надписи Mask, выбираешь Create New Texture и создаешь
фрактал, только не забудь переключить с As stencil на Normal,
а то хрень получится. У фрактала правим плейсмент, как и в
первых двух опытах. Рендерим. Грязь на зеленой доске. Откуда
серый цвет? Дело в том, что нода stencil считает цветом
объекта содержимое stencil/Color Balance/Default Color. Открой
АЕ для стенсила и попробуй поменять его на, скажем, синий.
Отрендери. Видишь, грязь "посинела". Ладно, теперь самое
время заметить напротив этого поля кнопку Мар и подумать о
том, что там вполне могла бы лежать картинка. Так и поступим.
Заглотни текстуру из файла, отрендери и убедись в абсолютной
идентичности результата первым двум опытам.
Я постарался дать тебе основы, у теперь у тебя на руках карт-
бланш, этого тебе должно хватить для собственных экспериментов.
Пробуй, тыркайся. Когда схватишь наконец суть и научишься
свободно манипулировать нодами - придешь в восторг, зуб даю! :)
Тут LightWave близко не лежал, возможности просто фантастические.
=+=+=+=+=+=+=+=
4-2-1
Q: Возможно ли в Maya сделать так, чтобы "constraint" работал не
все время, а только определенные кадры? Пример - рука берет
шарик и ложит его на стол...
A: Автор ответа: Alexey Malnov
Перевод статьи, написанной Robert Magee.
==============================
КАК ПОДНЯТЬ ОБЪЕКТ by Robert Magee
MAYA: Base
Animation
На этом занятии вы узнаете, как с помощью "Inverse Kinematic" руки
поднять объект и поставить его на стол. Мы будем использовать
ограничитель "IK handle" к двум Locator-ам, после этого анимируем
силу ограничения для переключения между двумя locator-ами.
Основная идея этого занятия состоит в том, что вы вначале анимируете
руку, затем ограничите руку для достижения большей реалистичности
движения. Это гарантирует то, что движение объекта будет точным,
прежде чем вы захотите что-то поднять.
* ШАГ 1
Создайте "polygonal cube". "Scale" его для создания стола. В окне
"front view", поместите его на уровне земли по оси X. Переименуйте
"cube's transform node" в "table". Создайте "NURBS cylinder".
"Scale" его чтобы он стал немного выше. Опустите его на уровень
земли у начала координат. Это будет объект, который мы поднимем и
поставим на стол. Переименуйте "cylinder's transform node" в
"glass".
* ШАГ 2
В окне "front view", создайте три "Joints", для создания подобия
руки, которая поднимет "glass" и поставит его на стол. Добавьте
"IK handle", который расположен от "root joint" до последнего
"joint" вашей руки.
* ШАГ 3
Создайте два Locator-а. Поместите первый слева от "glass" и
назовите его "glassLocator". Этот "locator" будет управлять
рукой, когда она будет поднимать "glass". Поместите второй
"locator" выше над "glass" и назовите его "freeLocator". Этот
"locator" будет управлять рукой, когда она ничего не поднимает.
* ШАГ 4
В окне "Hypergraph", "parent" "glass node" к "glassLocator node".
Теперь любая анимация, добавленная к "locator", будет влиять на
"glass".
* ШАГ 5
Выделите два locator-а и затем "IK handle". Удостоверьтесь, что
"IK handle" был выделен последним. Выберите "Constraints"->"Point"
для ограничения "handle" к обоим locator-ам за раз. Это ограничит
его в точке на половине пути между двумя locator-ами.
Если вы выделите и переместите "freeLocator", вы увидите, что
"IK handle" будет менять свое положение, но всегда будет
находиться на полпути между двумя locator-ами. Оба locator-а
ограничивают движение, используя одинаковую силу ограничения,
поэтому "IK handle" стремится к ограничителям эквивалентно,
результат этого то, что "IK Handle" распологается на одинаковом
расстоянии между двумя locator-ами.
* ШАГ 6
Выделите "IK handle". В "shapes section" в "Channel box", вы
можете обнаружить "ikHandle1pointConstraint1 shape node". Он
содержит два ключа: атрибута "glassLocatorW0", который определяет
силу ограничения "glass locator"; и атрибута "freeLocatorW1",
который определяет силу ограничения другого locator-а.
Установите атрибут "glassLocatorW0"=0. Теперь "IK handle"
двигается только freeLocator-ом, так как он имеет большую силу
ограничения. Если вы выделите и переместите "freeLocator", вы
увидите, что "IK handle" теперь полностью повторяет движение
locator-а, потому что вы указали "glassLocator" не оказывать
влияние вообще.
* ШАГ 7
Теперь вы можете анимировать glass, который будет двигаться в
нужном направлении. Создайте "CV curve" от glassLocator-а вверх
до поверхности стола.
Она будет использоваться как "motion path" для анимирования
движения "glass".
Вы могли просто установить ключи для "glass", но использование
"motion path" удобнее.
* ШАГ 8
Выделите "glassLocator" и новую кривую. Выберите "Paths"->"Attach
to Path"->"options". Установите "Time Range"="Start/End", затем
установите "Start Time"=20 и "End Time"=50. Убедитесь что
"Follow"=Off. Щелкните "Attach".
Теперь "glass" движется вдоль пути от кадра 20 до 50. Если вам
не нравится, как работает ваш путь или "glass" не точно
становиться на стол в кадре 50, вы можете отредактировать форму
кривой используя CVs.
* ШАГ 9
Теперь вы можете анимировать "freeLocator". Используйте следующие
позиции для установки ключей для этого node:
Перейдите в кадр 1. Поместите "freeLocator" слева от "glass".
Нажмите "Shift+w" для установки "translation" ключа.
* ШАГ 10
Перейдите в кадр 20.
Поместите "freeLocator" в стартовую позицию кривой "motion path".
Снова нажмите "Shift+w" для установки ключа для "translation"
атрибута.
* ШАГ 11
Перейдите в кадр 50.
Поместите "freeLocator" в конечную точку "glass motion path".
Установите ключ для "translation" атрибута.
* ШАГ 12
Перейдите в кадр 80.
Поместите "freeLocator" слева от стола.
Установите ключ для "translation" атрибута.
Теперь вы можете воспроизвести анимацию, вы увидите, что рука
движется вверх и назад, но не работает правильно между кадрами
20 и 50.
* ШАГ 13
Перейдите в кадр 1.
Выберите "Keys"->"Settings"->"Stepped". Это значит, что при
установке следующих ключей значение их будет изменяться мгновенно
в каждом "keyframe", т.е. изменение анимируемого атрибута будет
происходить скачками в отличие от плавного изменения.
Выделите "IK handle". Выделите "glassLocatorW0" и "freeLocatorW1"
атрибуты в "Constraint shape node". Правой кнопкой мыши выберите
"Key Selected".
Перейдите в кадр 20. Установите "glassLocatorW0"=1 и
"freeLocatorW1"=0. Выделите "glassLocatorW0" и "freeLocatorW1"
атрибуты в "Constraint shape node". Правой кнопкой мыши установите
"Key Selected". Это переключит силу ограничения так, что рука
сфокусируется на "glassLocator".
Перейдите в кадр 50. Установите "glassLocatorW0"=0 и
"freeLocatorW1"=1. Снова "Key Selected" для двух атрибутов. Это
значит, что рука начнет двигаться с "glass" после кадра 50.
Когда воспроизведете вашу сцен, вы увидите что рука сопровождает
цилиндр между кадрами 20 и 50.
* Заключение
Эта анимация - результат ограничения движения руки между разными
Locator-ами, где вы использовали силу ограничения для переключения
между ними. Вы могли бы добавить больше объектов и анимировать их
аналогичным образом.
В ролике, показанном в начале занятия, была использована другая
техника. "Extra joint" был добавлен к "skeleton" и ориентировано-
ограничен "orient-constrained" к двум locator-ам, и когда "glass"
поворачивался он повторял его движение. Сила ограничения второго
ограничителя была связана с силой ограничения второго ограничителя,
чтобы получить данный эффект.
==============================
=+=+=+=+=+=+=+=
4-3-1
Q: Не получается сделать флаг, развивающийся на ветру! Даже через
Maya Cloth не получается.
A: Автор ответа: Alexander Halyavin
Ты гвозди микpоскопом забиваешь... на кой тебе Cloth, когда ты
делаешь пpостой флаг? Делаешь дpевко, делаешь "nurbsPlane",
пpиставляешь его к дpевку в нужной позиции, делаешь "plane
softBody", "goal weight"=1, далее беpешь аpтизан и
pазpисовываешь "softBody" "goal weight"ами - у дpевка ближе к
единице, с кpаю - 0.2-0.1. Делаешь "Turbulence" и "Air Fields",
пpисоединяешь их к "softBody", далее делаешь пpужинки на
"softBody", и манипулиpуешь паpаметpами "Stifness" и "Damping"
у пpужинок... Также можно потpогать "Conserve" у "softBody"евых
паpтиклов.
Если будешь ставить большие "Stiffness" или "Damping" у пpужинок,
то пpидется задиpать "Oversampling", иначе флаг 'улетит в
космос'....
=+=+=+=+=+=+=+=
4-4-1
Q: Тут задачка хитрая есть... Предположим, что "softbody nurbsSphere"
падает на "nurbsPlane". Надо сделать так, чтобы она ударилась,
деформировалась, отскочила, и далее вела себя как "rigid body".
Вопрос - как?
A: Автор ответа: Sergei Tsyptsyn
Речь идет о том, как превратить Soft в Hard.
Сделайте "softbody", которое падает на "nurbsPlane" (если во
второй Maya, то просто "Make Soft" без всяких "goal"). Создайте
"gravity" ("gravityField1"), а "nurbsPlane" сделайте пассив
"rigid body". После того, как "softbody" отскакивает и колбасится,
остановитесь в тот момент, когда вы хотите превратить его в "rigid
body", выберите(!) "softbody" и выполните следующий скрипт:
==== Begin ====
$soft = `ls -sl`;
xform -cp;
duplicate;
$hard = `ls -sl`;
delete -ch;
move (`getAttr .tmrx`) (`getAttr .tmry`) (`getAttr .tmrz`);
makeIdentity -apply true;
connectAttr -f ($soft[0]+".bcx") ($hard[0]+".tx");
connectAttr -f ($soft[0]+".bcy") ($hard[0]+".ty");
connectAttr -f ($soft[0]+".bcz") ($hard[0]+".tz");
setRigidKeyframe(0) ;
setAttr ($soft[0]+".v") 1;
setKeyframe ($soft[0]+".v");
setAttr ($hard[0]+".v") 0;
setKeyframe ($hard[0]+".v");
playButtonStepForward;
setRigidKeyframe(1) ;
setAttr ($soft[0]+".v") 0;
setKeyframe ($soft[0]+".v");
setAttr ($hard[0]+".v") 1;
setKeyframe ($hard[0]+".v");
connectDynamic -f gravityField1 $hard[0];
playButtonStart;
select -tgl $soft[0];
==== End ====
После это жмите "Play". "softbody" должно дойти до того самого
кадра, спрятаться, а на его месте появляется такое же "rigid
body", наследующее все скорости и вращения.
Ненужные частицы убейте сами, и не забывайте выбирать "softbody"
перед выполнением скрипта. На исходном "softbody" создаются два
ключика на "Visibility", не забудьте убивать, если будете
экспериментировать.
Я полагал существование только одного поля ("gravityField1"). К
остальным подключитесь вручную.
Иногда не отрабатывает "Visibility" на исходном "softbody", просто
выберите его в первом кадре перед проигрыванием.
Это работает с Maya v2.0. Кому надо в v1.0, я поправлю, пишите.
Если интересно, что делает скрипт, тоже пишите, это все делается
руками.
=+=+=+=+=+=+=+=
4-5-1
Q: На объект нyжно наложить текстypy. Пyсть объектом бyдет кyбик.
Нyжно наложить на каждyю стоpонy свой Bump (гpyбо говоpя).
Как это сделать, использyя LayeredShader?
A: Автор ответа: Sergey Kapitsyn
Типа для бампа в натуре конкретно :)
Тут текстуры послойно не положишь, только через материалы.
1) Создаешь Layered Shader, создаешь нужное кол-во _материалов_
(без Shading Group! Выключи эту галочку).
2) Если материалы отличаются только бампом, можешь создать и
отстроить один материал (пока без бампа), потом сдублировать
его нужное кол-во раз через Dublicate/With connections to
network (все используемые текстуры будут одни и те же для
всех материалов, удобно будет вносить изменения.
Можно также завязать все параметры (цвет, диффуз, блик)
сдублированных материалов к первому, тогда через один
материал будешь рулить все сразу).
3) Создаешь и рулишь бамп для каждого материала отдельно.
4) Открываешь Attribute Editor для Layered Shader, цепляешь
средней кнопкой материалы из мультилистера и бросаешь туда
(последний окажется нижним, но можно менять их очередность
drag&drop'ом). Убиваешь зеленую X-Mozilla-Status: 8019
с самого начала (нажимаешь крестик под ней).
5) Создаешь маски для материалов - это любые текстуры. Не помню
как в первой Майке (вроде так же), а во второй надо сначала
отконнектить дефолтные маски, создающиеся при подключении
материалов к шейдеру. Правая кнопка на Transparency (прямо
на слове) и Break connection.
6) Включаешь Compositing Flag = Layer Texture, а то слои будут
"складываться" (типа как по luminocity).
Все.
Если не для бампа, а для именно текстуры, то можно не создавать
материалы, работать сразу с текстурами (то есть, кидать в шейдер
текстуры, а не материалы).
=+=+=+=+=+=+=+=
© faqs.org.ru