maxscript simulation

Автор
Сообщение
На сайте c 13.02.2011
Сообщений: 42
привет, всем. кто нибудь знает, как через максовский скрипт прописать симуляцию ткани? ничего не выходит уже второй день!
На сайте c 14.10.2011
Сообщений: 301
Москва
Какие задачи должен выполнять скрипт?
На сайте c 13.02.2011
Сообщений: 42
Imaginaerum
назначить объект MAN - colision object (depth - 0,5, offset - 0,5)
объект Line001 - cloth
после чего начать simulate(damped) и остановить через 5 секунд

как то так
На сайте c 14.10.2011
Сообщений: 301
Москва
А что конкретно не получается?

Начал бы я так:
Code:
cm = Cloth() addModifier $ cm cm.clothOps.setObjectType $Box01 1 true cm.clothOps.setObjectType $Plane01 2 true cm.clothOps.setObjectProperty $Box01 "depth" 0.5 cm.clothOps.setObjectProperty $Box01 "offset" 0.5
(оба объекта должны быть выделены)
На сайте c 13.02.2011
Сообщений: 42
Imaginaerum
честно говоря, ничего не получается из того, что я написал. (назначить объект MAN - colision object (depth - 0,5, offset - 0,5)
объект Line001 - cloth
после чего начать simulate(damped) и остановить через 5 секунд )

Даже в принципе не представляю, как это осуществить
На сайте c 14.10.2011
Сообщений: 301
Москва
То есть опыта в программировании вообще нет?
И, кстати, зачем писать скрипт для такой процедуры?
На сайте c 13.02.2011
Сообщений: 42
да, максскрипт знаю на примитивном уровне. я часто произвожу данное действие, хочу его автоматизировать. Помоги пожалуйста, чем можещь
На сайте c 14.10.2011
Сообщений: 301
Москва
Ну вот впринципе я набросал код, который кидает модификатор на оба объекта, применяет настройки, и запускает симуляцию (до нажатия Esc),
но почему-то у меня ткань проваливается сквозь кубик, хотя коллизии включены, и полигонов полно и там и там.
Причём это не только при использовании скрипта — обычным ручным методом то же самое.
Странно…

UPD: Разобрался. Ткань была слишком близко к кубику. Всё работает.
Code:
cm = Cloth() cm.UseGravity=true addModifier $Box01 cm addModifier $Plane01 cm cm.clothOps.setObjectType $Box01 1 true cm.clothOps.setObjectType $Plane01 2 true cm.clothOps.setObjectProperty $Box01 "depth" 0.5 cm.clothOps.setObjectProperty $Box01 "offset" 0.5 cm.clothOps.setObjectProperty $Plane01 "enableCollisions" true cm.clothOps.setObjectProperty $Box01 "enableCollisions" true select $Plane01 cm.ClothOps.Simulate true
На сайте c 13.02.2011
Сообщений: 42
Imaginaerum
огромное спасибо, можно если что, к тебе в личку обращаться?
На сайте c 13.02.2011
Сообщений: 42
Imaginaerum
а можно ли включить симуляцию на определенное время, а потом выключить?
На сайте c 14.10.2011
Сообщений: 301
Москва
Как контролировать симуляцию в реальном времени я не знаю, и упоминаний об этом в документации не нашёл.
Но можно задать определённое количество кадров (я оставил 50), остальные настройки меняются через
cm.clothOps.setObjectProperty $ "параметр" значение

Вот более законченный код, для которого не нужно указывать имена объектов, они должны быть просто выделены,
а тканью он сделает объект, расположенный выше всех:
Code:
-- Автоматическое тряпкобросание 0.1 -- 15.10.2011, Imaginaerum для 3ddd.ru ) cm = Cloth() obj_cloth = selection[1] -- Ищем тряпку — она должна быть выше всех -- (нужно следить за правильным расположением центров объектов (pivot) for obj in selection do ( if obj.position.z > obj_cloth.position.z do obj_cloth = obj ) obj_all = selection as array for obj in obj_all do ( select obj addModifier $ cm -- Настройка тряпки cm.clothOps.setObjectType $ 2 true if ($!=obj_cloth) and (validmodifier $ cm) then ( -- Настройки твёрдых объектов cm.clothOps.setObjectProperty $ "depth" 0.5 cm.clothOps.setObjectProperty $ "offset" 0.5 cm.clothOps.setObjectType $ 1 true ) ) cm.enableEndFrame = true -- Продолжительность симуляции в кадрах cm.endFrame = 50 -- Поехали! cm.ClothOps.Simulate true

В личку ко мне, конечно же, можно обращаться по личным вопросам, а помогать с Макс-скриптом я могу и публично )

Успехов, и могу посоветовать основные направления:
http://www.scriptattack.com/theory/theory.html  — хорошая базовая теория на русском языке
Использовать MAXScript Listener → MacroRecorder → Enable (показывает как воспроизвести многие совершаемые тобой действия на Макс-скрипте)
Читать MAXScript Reference: http://docs.autodesk.com/3DSMAX/14/ENU/MAXScript%20Help%202012/index.html 
Разбираться в работе чужих скриптов, которых полно, например на http://www.scriptspot.com/3ds-max 
Читают эту тему: