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

Маппинг для полигона

Тема в разделе "MAXScript", создана пользователем -, 12 мар 2004.

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

    Как можно наложить на скрипте модификатор UVWMap для определенных полигонов
    Я делаю

    PolyOp.SetFaceSelection Bilding #(1)
    MapText=UVWMap()
    addModifier Bilding MapText

    где Bilding объект к которому применяются данные операции
    Я рассчитываю что он выделит фейс 1(так он и делает) потом не выходя из режима подобъектов наложит модификатор UVWMap, но это не происходит.
    Он сначала выходит из режима подобъектов а потом накладывает UVWMap(т.е. уже для всего объекта ).

    Что мне надо исправить в скрипте?

    Заранее большое спасибо
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    subobjectLevel = 4
    PolyOp.SetFaceSelection $ #(2)
    modPanel.addModToSelection (UVWMap())
     
  3. Guest

    Спасибо большое!
    Помогло!
    У меня тут еще вопрос возник
    В UVWMap есть кнопочка Fit. Так вот, как ее вызвать из скрипта ?
    Я уже весь референс перерыл но ничего ненашел :(
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Нет такой функции.Сам делаеш.
     
  5. Guest

    2 Denis:

    Подскажи, мил человек, как написать такую функцию. Я так понимаю надо указать конкретные размеры? А если они не известны? И как гизмо выравнять по нормали полигона, на который накладывается марринг?
     
  6. Guest

    2 Denis:
    Извини за беспокойство, Денис, но вопрос остаётся открытым - как команду "fit" реализовать скриптом? Можешь привести пример кода здесь? Заранее благодарю тебя за ответ.
     
  7. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Наверника такой скрипт уже есть поищи хорошенько, овобожусь гляну если не найдеш, там нужно будет немного повозиться с математекой.
     
  8. Guest

    Да искал я уже - и на скриптспоте и в скриптовых форумах дискритовских, всю сеть облазил, нет нигде :(
     
  9. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    ок постараюсь глянуть вечером. Сечас со временем напряженно
     
  10. Guest

    Спасибо огромное!!! Очень поможете мне.
     
  11. Guest

    Ух ты! Супер! Огромная тебе благодарность, Денис! Сильно выручил! :)
    Ты МЕГА-ЧЕЛ!!! :)))
     
  12. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Ну ловите

    -----------------------------------------
    bbpMax = undefined
    bbpMin = undefined

    fn addBBoxVertex p = (
    if bbpMax == undefined then( bbpMin = copy p ; bbpMax = copy p)
    if p.x > bbpMax.x then bbpMax.x = p.x
    if p.y > bbpMax.y then bbpMax.y = p.y
    if p.z > bbpMax.z then bbpMax.z = p.z

    if p.x < bbpMin.x then bbpMin.x = p.x
    if p.y < bbpMin.y then bbpMin.y = p.y
    if p.z < bbpMin.z then bbpMin.z = p.z
    )

    fn alignUVGizmo theObj theMap theFace =

    (

    faceNormal = in coordsys theObj (polyOp.getFaceNormal theObj theFace)
    worldUpVector = [0,0,1]
    rightVector = normalize (cross worldUpVector faceNormal)
    upVector = normalize ( cross rightVector faceNormal )
    theMatrix = matrix3 rightVector upVector faceNormal [0,0,0]
    theMap.gizmo.transform = theMatrix
    theMatrix
    )

    fn FitUVWMapToFace obj theMap theFace =
    (
    objTM=obj.objecttransform
    modTM=getModContextTM obj m
    cfp = ( polyOp.getSafeFaceCenter obj theFace)
    fTM = theMap.gizmo.transform
    facePointList = polyOp.getFaceVerts obj.baseobject theFace
    bbpMax = undefined
    bbpMin = undefined
    for f in facePointList do
    (
    local fp = polyOp.getVert obj f
    addBBoxVertex (fp * (inverse objTM) *(inverse fTM) )
    )
    avp = (bbpMax - bbpMin)
    bbpMiddle = bbpMin + avp / 2
    theMap.gizmo.pos = bbpMiddle * fTM * modTM
    theMap.length = avp.y
    theMap.width = avp.x
    theMap.height = avp.z
    )

    -- alignUVGizmo $ $.uvw_mapping 3
    -- FitUVWMapToFace $ $.uvw_mapping 3
    -----------------------------------------
     
Модераторы: Savin Denis

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