Render.ru

Вопросы по Max Script (всего понемногу)

igorznag

Знаток
Рейтинг
71
Не подскажите, что и где я делаю не так?
Объясните подробнее. Лучше в Skype: igorznag2012
Каким способом вы получили координаты Position, Rotation, Scale?
В какой системе координат (World или Parent) вы получили координаты Position, Rotation, Scale?
У вас есть информация о родителях/детей костей?
Предоставьте файл с координатами Position, Rotation, Scale, чтобы тестировать скрипт.
 

Почемучкин

Пользователь сайта
Рейтинг
2
Каким способом вы получили координаты Position, Rotation, Scale?
Координаты положения и масштаба кости я получил с помощью данной функции:
Код:
fn ReadVec3 bs =
(
    local v = point3 0 0 0
    v.x = ReadFloat bs
    v.y = ReadFloat bs
    v.z = ReadFloat bs
    v
)
Координаты вращения кости я получил с помощью данной функции:
Код:
fn ReadQuat bs =
(
    local q = quat 0 0 0 0
    q.x = ReadFloat bs
    q.y = ReadFloat bs
    q.z = ReadFloat bs
    q.w = ReadFloat bs
    q
)
В какой системе координат (World или Parent) вы получили координаты Position, Rotation, Scale?
Думаю, именно здесь и кроется проблема. Я новичок в максскрипте и многое еще не знаю\не понимаю. Просто пытаюсь смотреть скрипты других авторов и гуглить, но это не всегда дает нужный мне результат.
У вас есть информация о родителях/детей костей?
Иерархия костей, и названия костей, имеется. Вот краткий обзор возможностей моего скрипта:
Предоставьте файл с координатами Position, Rotation, Scale, чтобы тестировать скрипт.
Вам нужен файл самой модели и скелета, если я правильно вас понял?
Объясните подробнее. Лучше в Skype: igorznag2012
У меня нет ни видео камеры, ни микрофона, поэтому видео- или голосовой сеанс не получится провести. Если вы согласны на переписку и готовы потратить свое личное время на такого незнайку как я, то скажите в какое время для вас это будет удобно.
 

igorznag

Знаток
Рейтинг
71
Вам нужен файл самой модели и скелета, если я правильно вас понял?
Да. Чтобы я тоже мог тестировать скрипт. Также предоставьте ваш скрипт, чтобы изменить его, а не создавать заново.
У меня нет ни видео камеры, ни микрофона, поэтому видео- или голосовой сеанс не получится провести. Если вы согласны на переписку и готовы потратить свое личное время на такого незнайку как я, то скажите в какое время для вас это будет удобно.
Видео камера не нужна. Купите наушники с микрофоном.
Я согласен потратить свое личное время, если вы согласны заплатить мне некую сумму денег.
Мне удобно общаться по скайпу с 12 часов дня до 10 часов вечера. Когда вам удобно общаться по скайпу?
 

Почемучкин

Пользователь сайта
Рейтинг
2
Да. Чтобы я тоже мог тестировать скрипт. Также предоставьте ваш скрипт, чтобы изменить его, а не создавать заново.
Это уже получится, что скрипт будете делать вы, а не я. Мне же важно самому научиться всем аспектам написания скриптов-импортеров.
Купите наушники с микрофоном.
Я согласен потратить свое личное время, если вы согласны заплатить мне некую сумму денег.
Простите, но я не готов тратить деньги на не нужные мне наушники с микрофоном и на то, чтобы скрипт писали вместо меня. Как я сказал выше, мне важно самому во всем разобраться.

Что ж, продолжу изучать чужие скрипты и гуглить. Со временем я найду/пойму как мне решить текущую проблему с построением скелета. Простите за беспокойство и отнятое у вас время. И спасибо вам за помощь.)
 

Penter

Пользователь сайта
Рейтинг
4
nodeTM ведь используется только в mouse tool. А как смещать уже созданный экземпляр ?
Код:
parameters main1 rollout:params (
    Linked type:#boolean default:false ui:chk_Linked
    target type:#node subAnim:true ui:pb_target
    support type:#node subAnim:true ui:pb_support
    depth type:#float default:0 ui:spn_dep
    len type:#float default:0 ui:spn_len
)
rollout params "Parameters" (
    checkbox chk_Linked "Linked"
    pickbutton pb_target "< No >" autoDisplay:true
    pickbutton pb_support "< No >" autoDisplay:true
    button btn_clearObj "All Clear"
    ...
    on btn_clearObj pressed do undo on (
        target = undefined; pb_target.text = "< No >"
        support = undefined; pb_support.text = "< No >"
    )
    fn Cone_fn theLen = createinstance cone radius1:depth radius2:.0 height:theLen sides:8 heightsegs:1
    fn TransMesh theMesh theTM matID:1 = (
        for v = 1 to theMesh.numverts do setVert theMesh v ((getVert theMesh v)*theTM)
        for f = 1 to theMesh.numfaces do setFacematID theMesh f matID
        theMesh
    )
    on buildMesh do (
        MyLen = if Linked then (if target != undefined and support != undefined then (distance target.pos support.pos) else len) else len
        MyCone = Cone_fn MyLen
        TM = matrix3 1
        if Linked do (
            if target != undefined and support != undefined
            do (   TM = matrixFromNormal (normalize (target.pos - support.pos))
                    translate TM support.pos
            )
        )
        mesh = TransMesh MyCone.mesh TM matID:1
    )
 

Вложения

Последнее редактирование:

Penter

Пользователь сайта
Рейтинг
4
Добавил Delta. но при перемещении конечно от привязок отъезжает.
Код:
local Delta = [0,0,0]
parameters main1 rollout:params (
    Linked type:#boolean default:false ui:chk_Linked
    target type:#node subAnim:true ui:pb_target
    support type:#node subAnim:true ui:pb_support
    ...
on buildMesh do (
    ...
    TM = matrix3 1
    if Linked do (
        if TargetSupport_fn() do (
            TM = matrixFromNormal (normalize (target.transform[4] - support.transform[4]))
            translate TM (support.transform[4]-Delta)
        )
    )
    ...
tool create (
    on mousePoint click do case click of
        (
            1: (Delta = nodeTM.translation = gridPoint)
            3: #stop
        )
    ...
)
Как перемещение отследить ?
Конструкция << on rollout open do ( when transform obj changes... >> не работает
 

Вложения

Последнее редактирование:

igorznag

Знаток
Рейтинг
71
nodeTM ведь используется только в mouse tool. А как смещать уже созданный экземпляр ?
Объясните подробнее. Лучше в Skype: igorznag2012
Для чего вам нужен этот объект?
Вместо SimpleObject можно использовать объект Cone с модификатором Attribute Holder.
Используем контроллеры Position Consrtraint и LookAt Consrtraint.
Для вас подходит такой вариант?

 

Вложения

Geekson

Знаток
Рейтинг
44
Здравствуйте! Попробую спросить здесь - есть ли какой либо надежный способ создавать группы выделения из полигонов? Желательно чтобы информация хранилась в самом полигоне, чтобы можно было без проблем аттачить и деттачить элементы. Что то вроде MatID, но более надежное) Я думал насчет использования vertex color, но не знаю как конвертить вертексы в полигон так, чтобы выделялись тольк полигоны полностью состоящие из выделенных вертексов, а не те у которых этот вертекс только один из трех\четырех составляющих.

И в догонку еще один вопрос - можно ли автоматом выделять полигоны после чамфера? В смысле не один раз после применения, а в процессе работы над моделью, в любой момент.
uH5zTio.png

Например выделить все полигоны, плоскости которых парраллельны\перпендикулярны координатным осям, а затем инвертировать. Хотя скругления и цилиндры в таком случае будут выделяться неккоректно. Но вот если хотя бы выделять все основные плоскости, это уже было бы здорово.
Спасибо.
 
Последнее редактирование:

igorznag

Знаток
Рейтинг
71
Я думал насчет использования vertex color, но не знаю как конвертить вертексы в полигон так, чтобы выделялись тольк полигоны полностью состоящие из выделенных вертексов, а не те у которых этот вертекс только один из трех\четырех составляющих.
С помощью скрипта можно выделить полигоны по цвету полигона.
Ответил вам в личные сообщения. Вы можете объяснить подробнее в Skype: igorznag2012

 

d1myan

Пользователь сайта
Рейтинг
2
Добрый день всем! Наткнулся на очень интересный скрипт, который делает переключение видов вьюпорта по аналогии Zbrush: переключает на ближайший вид ортогональной проекции из вида перспективы. Но очень мешает, что после переключения меняется расстояние Zoom до объекта: по умолчанию в скрипте вконце забита команда "Zoom Extens Selected" и выделенный объект зуммируется на весь экран, если убрать эту команду, то объект наоборот сильно отдаляется. Подскажите возможно ли это исправить как-то чтобы при переключение на вид проекции объект оставался приблизительно на таком же удалении?
Код:
(
global sType;

vpType = viewport.getType()

if (vpType==#view_left or vpType==#view_right or vpType==#view_front or vpType==#view_back or vpType==#view_bottom or vpType==#view_top)
then(
try(
viewport.setType sType
actionMan.executeAction 0 "40228" — Views: Restore Active View
)catch()
)
else (
temp = viewport.getTM() as EulerAngles

sType = viewport.getType()
actionMan.executeAction 0 "40227" — Views: Save Active View

case of
(
(45<=temp.y and temp.y<=135): viewport.setType #view_left
(-45>=temp.y and temp.y>=-135): viewport.setType #view_right
((-45>=temp.x and temp.x>=-135) and (-45<=temp.y and temp.y<=45)): viewport.setType #view_front
((45<=temp.x and temp.x<=135) and (-45<=temp.y and temp.y<=45)): viewport.setType #view_back
((135<=temp.x and temp.x<=180) or (-135>=temp.x and temp.x>=-180)): viewport.setType #view_bottom
default: viewport.setType #view_top
)
max zoomext sel
)
completeredraw()
)
 
Последнее редактирование:

Paguo-86PK

Пользователь сайта
Рейтинг
2
Добрый день!

Сконструировал письменный пол с тумбой и выдвижными ящиками. Использовал только примитивы - сплошные боксы без модификаторов форм.

Как можно выдвигать эти ящики?
Создал линии путей и добавил кастом-спиннер - работает.
Но, если всё это добро объединить в единную группу, каким образом можно управлять её частями без принудительного вскрытия группы?
Можно ли группе назначить несколько спиннеров, чтобы вся группа функционировала как единный письменный стол - объект со спиннерами открытия отдельных ящичков?

Ни Group, ни Assembly-Luminaire не позволяют добавить контроллеры. А если добавляются, то невесть куда, так как в Свойствах ничего не появляется, хотя в древе - видно.

Как вообще правильно организовывать комплексные параметризованные объекты из готовых примитивов?

Спасибо!
 
Сверху