1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

применить скрипт после создания объекта

Тема в разделе "MAXScript", создана пользователем Di_di_0, 19 июл 2010.

Модераторы: Savin Denis
  1. Di_di_0

    Di_di_0 Активный участник

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Здравствуйте! Такая вот задача у меня стоит. При нажатии кнопки чтоб начал создаваться бокс стандартными средствами, а потом к нему чтоб применялся определенный порядок действий. Я пишу вот так:

    macros.run "Objects Primitives" "Box"
    $.height = 10
    потом еще несколько модификаторов


    Получается бокс я рисую, но высота его потом не изменяется. А если там еще и модификаторы есть то они уже не работают, и даже бокс рисоваться не начинает, только ошибки пишет в листенере. Что-то там дописать надо видимо. Подскажите - что. А то у самого мозга не хватает.

    И еще:

    maxOps.autoGrid=on
    move $selection (pickPoint () - $selection.center)

    Как сделать чтоб объект примагничивался к мышке не центром а пивотом? Знаю что там написано чтоб центром было, но пробовал заменить center на pivot. Не проканало. И чтоб таскался за курсором, и на плосоксти других объектов примагничивался (как с автогридом когда создаешь)?

    Блин, и так и сяк пробовал, только ошибки сплошные. Знаю что все просто здесь, но не могу зашарить. И мануал скриптовский ничего не дал мне, или может я смотрел криво как-то.
    Спасибо заранее за помощь.
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    В первом случае ты пытаешься задать высоту еще не созданному объекту, поскольку ты только запустил его создание.

    Сначала создай бокс скриптом а потом его модифицируй его, для этого тебе прийдется написать свои методы.

    Лучший вариант для управления будет написать свой геометрический плугин, для примера посмотри главу Scripted Geometry Plug-ins
    Обрати там внимание на пример Cuboid, он как раз просто управляет базовым классом extends:Box
    Scripted Plug-in Clauses - для детальной иформации
    И по управлению мышкой:
    Mouse Tool Clauses
    Scripted Mouse Tools
     
  3. Di_di_0

    Di_di_0 Активный участник

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Спасибо, что откликнулись! Что-то читаю я мануал и нифига вникнуть не могу, слишком сложно это для моего мозга. Думаю проще сделать 2 кнопки, 1-я создать бокс, а 2-я уже со всеми параметрами и модификаторами.
    Слушайте, а может можно просто как то отсрочить выполнение скрипта? Просто паузу, во время которой можно делать какие-то действия, секунды 3 где-то. Щелкаешь выполнить скрипт, потом первая команда скрипта бокс стандартный, и пауза во время которой ты его рисуешь, потом остальные действия. Пробовал sleep 3, но все равно не получается, может есть еще какой аналог этой команды?
     
  4. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    нет, если только каллбеком по событию создание объекта отловить.
     
  5. Di_di_0

    Di_di_0 Активный участник

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Callback - не первый раз слышу. Ну ладно буду разбираться. Спасибо еще раз за советы!
     
  6. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    mybox=box length:20 width:20 height:20 --создаем обьект как переменную, чтобы не искать результат команды
    mybox.height=100 --и через него мы можем крутить параметры (showparameters(чьи) или show(чьи) покажет какие есть)
    addModifier mybox (twist angle:30) --добавляем модификатор и указываем параметры его
    addModifier mybox (edit_poly()) before:1 --добавляем модификатор и указываем параметры его, указав размещение по индексу модификатора

    запихнуть это можно в максроскрипт под кнопку

    ловить колбеками и писать плагин скриптовой геометрии - стрельба из пушки по воробьям ИМХО (хотя возможно так проще потом)
     
  7. Di_di_0

    Di_di_0 Активный участник

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Видите ли мне создать объект не проблема, мне проблема создать его в определенном месте. Поэтому я и думал что создам бокс на каком-нибудь другом боксе допустим, с промощью автогрида, а потом к этому боксу применится куча модификаторов из скрипта. Пытался еще использовать pickpoint(). Чтоб сначала mybox=box() а потом mybox.pos (pickpoint()), но он ставится на ноль, а я хочу чтоб сразу на объект приклеивался, как при мердже из другого файла(если включен автогрид, то объект сразу ставится на другие объекты).
    Но все равно, спасибо за совет.
     
  8. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    - нипонял
    конечная цель-то какая?
    интерактивный скрипт расстановки боксов? может проще через рисование тогда? или разнообразными скаттерами?
     
  9. Di_di_0

    Di_di_0 Активный участник

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Про боксы это я виртуально, можно сказать "условно".
    Просто в работе у меня бывает часто, что нужно делать допустим кафешку, там допустим сервировку на столах, ну парево это напрягает меня, искать в модельках тарелки рюмки салфетки, и весят они довольно много. Решил немного облегчить себе задачу, рисуешь допустим цилиндрик, щелкаешь кнопку, и вот он уже скопировался раз пять, из них один стал тарелкой, другой блюдцем с чашкой и много разной мелочи, это через edit poly, низкополигональное, т.е. можно скопировать 10000 раз. Тоже с боксами, в ванной комнате, раз кнопочной куча всяких тюбиков, баночек с кремом шампуней.
    Но это надо сначала бокс нарисовать а потом щелкнуть, вот я и думал рисование бокса интегрировать в скрипт. Но так чтоб можно было его сразу на столе нарисовать а не так что он создаеться на уровне нуля а потом двигать.

    Вот пример скрипта, сначала рисуешь бокс а потом щелкаешь "выполнить скрипт".

    $.lengthsegs = 1
    $.widthsegs =1
    $.heightsegs = 1
    $.length = 130
    $.width =60
    $.height = 10
    $.name = "shampun"
    pz = $.pos

    copy $ isSelected:eek:n
    $.name = "2shampun"
    move $ [0, 150, 0]
    copy $ isSelected:eek:n
    $.name = "3shampun"
    move $ [0, 150, 0]
    copy $ isSelected:eek:n
    $.name = "4shampun"
    move $ [0, 100, 0]
    copy $ isSelected:eek:n
    $.name = "5shampun"
    move $ [65, -160, 0]
    copy $ isSelected:eek:n
    $.name = "6shampun"
    move $ [0, -160, 0]

    Cylinder smooth:eek:n heightsegs:1 capsegs:1 sides:12 height:130 radius:30 isSelected:eek:n
    $.pos = pz
    move $ [70, -70, 0]
    $.name = "stakan"
    copy $ isSelected:eek:n
    $.name = "krem"
    move $ [0, 430, 0]
    $.radius = 40
    $.height = 30

    select $shampun
    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 4
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{2}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 271.313
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 7.29337
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 0
    $.modifiers[#Edit_Poly].bevelOutline = 0
    $.modifiers[#Edit_Poly].bevelHeight = 37.9255
    $.modifiers[#Edit_Poly].bevelOutline = -14.5867
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3.64668
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 2
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    $.modifiers[#Edit_Poly].SetSelection #Edge #{}
    $.modifiers[#Edit_Poly].Select #Edge #{40}
    $.modifiers[#Edit_Poly].Select #Edge #{38}
    $.modifiers[#Edit_Poly].ButtonOp #ConnectEdges
    $.modifiers[#Edit_Poly].SetOperation #ChamferEdge
    $.modifiers[#Edit_Poly].chamferEdgeAmount = 17.22
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 4
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{24}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3.64668
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 25.5268
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 4.37602
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    modPanel.addModToSelection (TurboSmooth ()) ui:eek:n
    $.modifiers[#TurboSmooth].iterations = 2
    actionMan.executeAction 0 "369"

    select $2shampun

    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 4
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{2}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 230
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 7.29337
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 0
    $.modifiers[#Edit_Poly].bevelOutline = 0
    $.modifiers[#Edit_Poly].bevelHeight = 20
    $.modifiers[#Edit_Poly].bevelOutline = -10
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3.64668
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 2
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    $.modifiers[#Edit_Poly].SetSelection #Edge #{}
    $.modifiers[#Edit_Poly].Select #Edge #{40}
    $.modifiers[#Edit_Poly].Select #Edge #{38}
    $.modifiers[#Edit_Poly].ButtonOp #ConnectEdges
    $.modifiers[#Edit_Poly].SetOperation #ChamferEdge
    $.modifiers[#Edit_Poly].chamferEdgeAmount = 20
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 4
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{24}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3.64668
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 40
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 4.37602
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    modPanel.addModToSelection (TurboSmooth ()) ui:eek:n
    $.modifiers[#TurboSmooth].iterations = 2
    actionMan.executeAction 0 "369"


    select $3shampun
    $.length = 110
    $.width = 50
    $.height =10

    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 4
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{2}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 200
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 7.29337
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 0
    $.modifiers[#Edit_Poly].bevelOutline = 0
    $.modifiers[#Edit_Poly].bevelHeight = 20
    $.modifiers[#Edit_Poly].bevelOutline = -10
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3.64668
    $.modifiers[#Edit_Poly].Commit ()


    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3.64668
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 40
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 4.37602
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    modPanel.addModToSelection (TurboSmooth ()) ui:eek:n
    $.modifiers[#TurboSmooth].iterations = 2

    select $4shampun
    $.length = 60
    $.width = 60
    $.height =3

    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 4
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{2}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 80
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 0
    $.modifiers[#Edit_Poly].bevelOutline = -10
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 0
    $.modifiers[#Edit_Poly].bevelOutline = 10
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()


    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 40
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.addModToSelection (TurboSmooth ()) ui:eek:n
    $.modifiers[#TurboSmooth].iterations = 2

    select $5shampun
    $.length = 60
    $.width = 30
    $.height =3
    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 4
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{2}
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 70
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 0
    $.modifiers[#Edit_Poly].bevelOutline = -10
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 30
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 3
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.addModToSelection (TurboSmooth ()) ui:eek:n
    $.modifiers[#TurboSmooth].iterations = 2


    select $6shampun
    $.length = 80
    $.width = 80
    $.height =80
    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 2
    $.modifiers[#Edit_Poly].SetSelection #Edge #{}
    $.modifiers[#Edit_Poly].Select #Edge #{1..12}
    $.modifiers[#Edit_Poly].SetOperation #ChamferEdge
    $.modifiers[#Edit_Poly].chamferEdgeAmount = 3
    $.modifiers[#Edit_Poly].Commit ()

    subobjectLevel = 4
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{2}
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 3
    $.modifiers[#Edit_Poly].bevelOutline = 3
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 30
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelOutline = -3
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0


    select $stakan

    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 4
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{14}
    $.modifiers[#Edit_Poly].SetOperation #Inset
    $.modifiers[#Edit_Poly].insetAmount = 5.26987
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = -124.896
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    modPanel.addModToSelection (Taper ()) ui:eek:n
    $.modifiers[#Taper].amount = 0.59

    select $krem
    modPanel.addModToSelection (Edit_Poly ()) ui:eek:n
    subobjectLevel = 2
    $.modifiers[#Edit_Poly].SetSelection #Edge #{}
    $.modifiers[#Edit_Poly].Select #Edge #{1, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35}
    $.modifiers[#Edit_Poly].Select #Edge #{3, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 36}
    $.modifiers[#Edit_Poly].SetOperation #ChamferEdge
    $.modifiers[#Edit_Poly].chamferEdgeAmount = 3
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 4
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
    $.modifiers[#Edit_Poly].SetSelection #Face #{}
    $.modifiers[#Edit_Poly].Select #Face #{14}
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 3
    $.modifiers[#Edit_Poly].bevelOutline = 3
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #ExtrudeFace
    $.modifiers[#Edit_Poly].extrudeFaceHeight = 20
    $.modifiers[#Edit_Poly].Commit ()
    $.modifiers[#Edit_Poly].SetOperation #Bevel
    $.modifiers[#Edit_Poly].bevelHeight = 3
    $.modifiers[#Edit_Poly].bevelOutline = -3
    $.modifiers[#Edit_Poly].Commit ()
    subobjectLevel = 0
    modPanel.setCurrentObject $.modifiers[#Edit_Poly]
     
  10. ASK'R

    ASK'R Активный участник

    С нами с:
    18.03.2008
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    5
    за сценой кубик, его в object painter (http://www.scriptspot.com/3ds-max/scripts/objectpainter или http://www.scriptspot.com/3ds-max/scripts/advanced-painter или даже из комплекта макса Using the Object Painter Script to Add Trees в туторах) и рисуй, в твоем скрипте(ах?) стоит сделать интерфейс с кнопками Add и make_furniture - Add добавляет в массив их, а вторая переколбашивает обьекты
    смотрится весело, как все на глазах меняется, но для скорости стоит вырубить обновление вьюпорта
     
  11. kolts

    kolts Активный участник

    С нами с:
    05.02.2008
    Сообщения:
    448
    Симпатии:
    0
    Баллы:
    17
    Вместо бокса лучше использовать объект который создается одним щелчком мышки так будет быстрее.
     
  12. Di_di_0

    Di_di_0 Активный участник

    С нами с:
    08.12.2007
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    Согласен, так конечно удобнее, даже пробовал так, но он создается на нуле, а бокс можно с автогридом создать на любой плоскости.
     
  13. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Прошу помощи у скриптописателей! Нужен простой скрипт, который у выделенного объекта (обычно группа) помещает пивот в центр, а потом опускает по оси Z на самую нижнюю точку группы. В общем ситуация должна быть такая как у только что созданного бокса. Так же полезно было бы обнулить потом все координаты и повороты. Мне кажется тут буквально 5 строк, но я не бельмес в этом. Всё что учил, давно забыл. ПОМОГИТЕ ПОЖАЛУЙСТА!
    Спасибо.
     
  14. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Еще в панели Ierarchy есть раздел Reset где две кнопки Transform и Scale. Вот их бы тоже скриптовыми командами запускать
     
  15. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Не понимаю, так сложно открыть хелп и сделать поиск ?
    Глава Align Pivot and Reset Transform Methods
     
  16. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Не сложно если хоть строчку понимаешь в этом. Щас посмотрел, всё равно что и не смотрел. Потому прошу помочь готовым кодом. Просто это нужно поскорей. Сам то разберусь наверное но пройдет слишком много времени.
     
  17. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Код:
    $.pivot = [($.max.x+$.min.x)/2, ($.max.y+$.min.y)/2, $.min.z]
    Вот собрал код. Он перемещает пивот куда надо. Но есть проблема. Если это группа то он перемещает пивот и у всех объектов внутри группы. Тоже самое происходит с таким кодом:

    Код:
    $.pos = [0,0,0]
    Объекты внутри группы все скопом прыгают в ноль. Это ничего если все пивоты у них сбились вниз первым кодом, но если нет, то каша получается.

    Можно ли както действовать только на основную внешнюю группу не воздействуя на внутренние объекты? Какой то фильтр нужен.
     
  18. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    И даже пусть все пивоты сбрасываются в кучу, а потом центруются. Группа из-за этого не изменится. Но вот что делать со сбросом поворота? Тут только к группе надо в любом случае. Замечу, тут нужно не ресетить поворот

    Код:
    ResetTransform $ (пока только так сработало)
    а установить по нулям, то есть в исходное положение объект повернуть.
     
  19. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Вот а говорил не могеш )

    Код:
    for obj in $selection where isGroupHead obj do obj.pivot = [obj.center.x,obj.center.y,obj.min.z]
    хм посмотрел кнопки сброса трансформации у меня в 2010 вобще не работают

    так надежней будет
    Код:
    $.objectOffsetScale = [1,1,1]
    $.objectOffsetRot = (quat 0 0 0 1)
    $.objectOffsetPos = [0,0,0]
    
     
  20. Paul_Winex

    Paul_Winex Мастер

    С нами с:
    02.06.2007
    Сообщения:
    698
    Симпатии:
    10
    Баллы:
    126
    Что-то у меня ничего из этого не сработало. Сброс пивота в центр и вниз я кое как (хоть и с погрешностями) сделал. Перемещение в ноль тоже получилось благодаря вышеуказаным погрешностям. А вот поворачивать все объекты в группе нельзя. Нужно только группу повернуть, обнулив все повороты. Вот с этим пока проблема.
     
Модераторы: Savin Denis

Поделиться этой страницей