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д и там эксперементировать. Ничего сложного.
думаю и стандартными средствами макса можно добиться неплохих результатов
http://postimg.org/image/kuzwwlvtl/ — вот так получилось текстурами 4-е года назад, но для ближнего плана нужно получше качество
на скорую руку
helix-normalize spline-convert to spline — sweep — удалил внутренние полигоны и начал соединять ребра

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

если по 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.
![]()
харумскарум