Как сделать пружину в 3д макс
Перейти к содержимому

Как сделать пружину в 3д макс

  • автор:

5.8 Создание 3D-объекта «винт»

Использование функции «массив» применение булевых операций

Создание объекта «винт»

Рисунок 1. Винт, созданный при помощи булевых операций. Шаг 1. Перезагрузите 3D Studio Max и начните новый файл сцены.

  • Radius (Радиус) — 30,
  • Height (Высота) – 100,
  • Height Segments (Количество сегментов по высоте) – 5,
  • Cap Segments (Количество сегментов в основании) – 1,
  • Sides (Количество сторон) – 18.
  • Radius 1 (Радиус 1) – 44,
  • Radius 2 (Радиус 2) – 24,
  • Height (Высота) – 150,
  • Height Segments (Количество сегментов по высоте) – 5,
  • Cap Segments (Количество сегментов в основании) – 1,
  • Sides (Количество сторон) – 18.
  • Выделите объект Cylinder (Цилиндр). Перейдите на вкладку Create (Создание) командной панели, выберите в категории Geometry (Геометрия) строку Compound Objects (Составные объекты) и нажмите кнопку Boolean (Булева операция).
  • Установите параметры булевой операции – вычитание.
  • Воспользуйтесь кнопкой Pick Operand В (Выбрать операнд), чтобы выбрать второй объект, который будет участвовать в операции, Tube (Трубка).

Перейдите на вкладку Modify (Изменение) командной панели и в свитке Parameters (Параметры) настроек объекта Helix (Спираль) при помощи параметра Turns (Количество витков) установите количество витков равным 10. Определите направление витков против часовой стрелки, установив переключатель в положение CCW (Против часовой стрелки). Значение параметра Height (Высота) задайте равным 75. Укажите для объекта одинаковые значения параметров Radius 1 (Радиус 1) и Radius 2 (Радиус 2) – 22. В свитке настроек Rendering (Визуализация) установите флажок Display Render Mesh (Отображать визуализируемую сетку), а также задайте параметру Thickness (Толщина) значение 8.

Выровняйте спираль относительно цилиндра по осям X и Y, а затем вручную подберите положение вдоль оси Z так, чтобы объект начинался под «шляпкой» (рис. 4). Рисунок 4. Установка объекта Helix (Спираль) под «шляпкой» первого объекта.
Шаг 6. Чтобы можно было производить операции со сплайном, его необходимо конвертировать в Editable Mesh (Редактируемая поверхность). Для этого вызовите контекстное меню в окне проекции и выполните команду Convert То –> Convert to Editable Mesh (Преобразовать –> Преобразовать в редактируемую поверхность).

  • Выделите объект Cylinder (Цилиндр).
  • Перейдите на вкладку Create (Создание) командной панели, выберите в категории Geometry (Геометрия) строку Compound Objects (Составные объекты) и нажмите кнопку Boolean (Булева операция).
  • Установите параметры булевой операции – вычитание.
  • Воспользуйтесь кнопкой Pick Operand В (Выбрать операнд), чтобы выбрать второй объект, который будет участвовать в операции.
  • Length (Длина) равным 15,
  • Width (Ширина) – 80,
  • Height (Высота) – 30.

Теперь при помощи булевой операции вычитания удалите из первого объекта второй так, как это описано выше. В результате на винте появится шлиц (рис. 7). Рисунок 6. Установка параллелепипеда для операции вычитания.
Рисунок 7. Готовый болт.

Независимый пружинный блок (ближний план)

Знакомая тема. Делал давненько и особо не парился. Все ручками. Можно пружину перекинуть в кло 3д и там эксперементировать. Ничего сложного.image.jpg

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

http://postimg.org/image/kuzwwlvtl/ — вот так получилось текстурами 4-е года назад, но для ближнего плана нужно получше качество

на скорую руку
helix-normalize spline-convert to spline — sweep — удалил внутренние полигоны и начал соединять ребра

image.jpg

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

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

вот пока что получается.

image.jpg

если по Cloth кто-то решит посоветовать буду примного благодарен, т.к. пока думаю что это лучший способ.
всем спасибо за участие)

Как сделать пружину в 3д макс

1. Зачем это надо?

Вполне логичный вопрос. Тем более что в 3dsMAX‘е имеются уже для этих целей соответствующий объект, который так и называется Spring (англ. — пружина). Создать ее можно из меню Create > Dynamic s > Spring или выбрав на командной панели (Command Panel) закладку Create > кнопка Geometry > в выпадающем списке Dynamics Objects > Spring.
[Вы должны быть зарегистрированы и подключены, чтобы видеть это изображение]
Этот стандартный объект имеет немало параметров, отвечающих за форму (длинна, ширина, количество витков, сечение) и за метод построения концов пружины (End Point Method). Все это благополучно анимируется, а при выборе End Point Method > Bound to Object Pivots концы пружины можно привязать к конкретным объектам в сцене, тогда анимировать придется только эти объекты (если они еще не были заанимированы), а пружина уже будет самостоятельно изменять свою длину и местоположение в сцене.
Но если пружина необходима абсолютно другого сечения, чем те, которыми располагает стандартный объект: круглое, прямоугольное и D-образное? Или уже есть готовая модель пружины со своим набором материалов, текстур, текстурных координат? Или же пружину эту надо отэкспортить вместе с анимациями в какой-либо движок (Engine), а он совсем не знает о существовании такого замечательного объекта как Spring, и понимает только Skin-анимацию? Короче говоря, существуют такие ситуации, когда вопрос «Зачем это надо?» не возникает.
2. Устройство пружины

  • красным цветом обозначен недеформируемый нижний конец пружины, т.е. все точки этой части не изменят своего положения относительно друг друга;
  • желтым – деформируемая часть;
  • зеленым – недеформируемый верхний конец.
  • они должны быть параллельны пружине;
  • первая кость должна начинаться строго в нижней части сечения первого(нижнего) витка и заканчиваться в нижней части последнего витка;
  • вторая кость должна начинаться строго в верхней части сечения первого витка и заканчиваться в верхней части последнего витка.
  • на точки, расположенные в нижней части любого сечения пружины, будет влиять только первая кость bone_down;
  • на точки, расположенные в верхней части любого сечения пружины, будет влиять только вторая кость bone_up;
  • на промежуточные точки коэффициент влияния первой кости bone_down будет равен отношению удаленности точки от верхнегокрая сечения к толщине сечения, второй кости bone_up – отношению удаленности точки от нижнего края сечения к толщине.
  • толщина сечения равна 5;
  • желтые точки расположены в нижней части сечения: коэффициенты влияния bone_down = 1.0, bone_up = 0.0;
  • красные точки расположены в верхней части сечения: bone_down = 0.0, bone_up = 1.0;
  • синие точки удалены от нижнего края сечения на 1, от верхнего – на 4: bone_down = 1/5 = 0.2, bone_up = 4/5 = 0.8;
  • зеленые точки удалены от нижнего края на 4, от верхнего – на 1: bone_down = 4/5 = 0.8, bone_up = 1/5 = 0.8.
  • для нижней части bone_start = 1.0, все остальные кости 0.0;
  • для верхней части bone_end = 1.0, все остальные кости 0.0.
  • L – расстояние от косточки bone_end до начала кости bone_start (для начального положения L’);
  • c1, c2, c3, c4 – отступы от концов костей bone_down и bone_up до краев пружины, из-за присутствия недеформируемых частей эти величины неизменны при растяжении или сжатии пружины;
  • ld и lu – длины костей bone_down и bone_up соответственно, нетрудно заметить, что они равны между собой, поэтому в дальнейшем будут обозначаться l (для начального положения l’).
  • выделить кость отвечающую за деформируемую часть;
  • перейти Command Panel >Motion > Parameters > Assign Controller;
  • назначить Sceale контроллер ScaleXYZ;
  • назначить X Scale контроллер Float Expression;
  • появится окно настройки контроллера:
  • тут в группе Create Variables создается новая векторная переменная end_pos и назначается ей контроллер $bone_end.transform.controller.Position, теперь эту переменную можно использовать в выражении Expression, куда и вписываеться полученная ранее формула (length(end_pos) — 147) / 132 + 1, где length(end_pos) и есть расстояние от косточки bone_end до начала кости bone_start, так как переменная end_pos содержит координаты косточки bone_end относительно родительской кости bone_start.

Основная идея заключается в правильном расположении костей, отвечающих за деформируемую часть пружины: они смещены друг относительно друга на величину толщины сечения. Именно поэтому при одновременном масштабировании относительно своих точек привязки этих костей расстояния между врхними и нижними точками сечения пружины остаеться неизменным и равным смещению.
Конечно справедливости ради стоит добавить что при растяжении или сжатии пружины сечения должны не только перемещаться вдоль оси, а еще и "закручиваться". Но при небольших изменениях длинны пружины это в глаза не кидается, да и для не очень больших нужно присматриваться, чтоб заметить несоответствие с реальной жизнью. Но и это тоже можно решить, разместив косточки, отвечающие за деформируемую часть пружины, строго по оси пружины и повесив на них еще один контроллер, который будет их вращать вокруг оси пружины и изменять смещение относительно друг друга. Формулы там конечно будут пострашнее и оставляются для настоящих фанатов сделать все как в реальности. Целью было показать основной принцип костевой анимации пружин и вроде она была достигнута.
Файл сцены для 3ds MAX 2010.]

Как сделать пружину в 3д макс

L = c1 + lu + c2 = c3 + ld + c4, c1 + c2 + l = c3 + c4 + l, следовательно c1 + c2 = c3 + c4 = C = L’ — l’,

L = C + l, l = L — C, l’ = L’ — C,

  • выделить кость отвечающую за деформируемую часть;
  • перейти Command Panel >Motion > Parameters > Assign Controller;
  • назначить Sceale контроллер ScaleXYZ;
  • назначить X Scale контроллер Float Expression;
  • появится окно настройки контроллера:
  • тут в группе Create Variables создается новая векторная переменная end_pos и назначается ей контроллер $bone_end.transform.controller.Position, теперь эту переменную можно использовать в выражении Expression, куда и вписываеться полученная ранее формула (length(end_pos) — 147) / 132 + 1, где length(end_pos) и есть расстояние от косточки bone_end до начала кости bone_start, так как переменная end_pos содержит координаты косточки bone_end относительно родительской кости bone_start.

Прикрепленное изображение

харумскарум

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *