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

Привязяать Dummy к прозрачности материала.

Тема в разделе "MAXScript", создана пользователем Максим Поклонов, 13 мар 2007.

Модераторы: Savin Denis
  1. Максим Поклонов

    Максим Поклонов Мастер

    С нами с:
    07.07.2006
    Сообщения:
    305
    Симпатии:
    0
    Баллы:
    459
    Нужен совет. Я приведу упрощенный пример так как требуется именно этот момент для использования в более сложной сцене.
    Вот предположим у меня есть сфера, а перед сферой объект, например Dummy небольшого размера, привязанный к ней. К этому Dummy подгружается анимация и он начинает перемещаться. Диапазон перемещения небольшой.

    Значит, требуется зделать такой эффект, вот чем Dummy правее видна одна текстура, а чем левее то видна другая текстура. А когда перемещается сфера с привязяааным к ней Dummy, то естественно с текстурой ничего не происходит. Можно конечно сделать анимацию текстур и вручную, но я хочу автоматизировать этот процесс, так анимация будет качественне и проще.

    Вопрос - как привязать перемещение Dummy к каналу прозрачности какого либо материала. Я конкретизирую материал. Пусть это будет материал Blend из двух материалов и к параметру смешивания (Mix Amount) надо задать значение перемещения Dummy. Причем для этого достаточно одной оси перемещения например Х(local).

    Пусть начальное значение положения Dummy будет = 0
    если положение Dummy > 0, то значение в материале = 0
    если положение Dummy < 0, то значение в материале = "позиция локальной оси Х объекта Dummy" * "переменная - множитель установленная например слайдером или просто значением"

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

    Думаю, что мне было бы удобнее в работе использовать Script Сontroller или Expression Сontroller.
    Я совсем недвно начал ихучать MaxScript и пока не въехал ни в синтаксис ни в команды, поэтому мне сложно выразить свою мысль синтаксически. Требуется помошчь...
    Если у меня все получится,(а так или иначе все равно все получится), то я перстану шифроваться и поделюсь задумкой (идейка-то интересная).

    Как задачка? )
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Много текста, не понятно в чем конкретно проблема ?
    если проблемы с cинтаксисом включи макрорекордер
    и прежде чем писать скритконтроллер отлаживай код стационарно
     
  3. Максим Поклонов

    Максим Поклонов Мастер

    С нами с:
    07.07.2006
    Сообщения:
    305
    Симпатии:
    0
    Баллы:
    459
    Sorry, я вопервых напутал с больше меньше в своем вопросе (тупею за компом). Сейчас попробую выразиться по проще.
    Значит вот, есть такой алгоритм:
    _____________________________________________________________
    переменная multipiller = значение слайдера.
    -- присваиваем значение слайдера в сцене, переменной "multipiller"

    переменная opacity = параметр "mix amount"
    -- присваиваем значение параметра "mix amount" в материале, переменной "mix amount"

    переменная pos = позиция Dummy по локальной оси X
    -- присваиваем значение позиции Dummy по оси X, переменной "pos"


    переменная opacity = переменная pos * переменная multipiller
    -- на случай если значение переменной pos будет слишком большим или маленьким откорректируем его переменной multipiller

    если переменная opacity < 0 то переменная opacity = 0
    -- нужно чтобы значение небыло меньше нуля

    если переменная opacity > 100 то переменная opacity = 100
    -- нужно чтобы значение небыло больше 100
    _____________________________________________________________

    Вот и все, помоему просто. Вот это надо написать на maxscript и сказть как это все назначить к материалу и слайдеру.

    вместо:
    переменная multipiller = значение слайдера.

    можно сделать так:
    переменная multipiller = просто конкретное значение.

    А с синтаксисом нет никаких проблем - я его не знаю.
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    1 Материал бленд будет виден только на рендере, во вьюпорте земетен не будет.
    По этому возми карту Mix на дифуз стандартного материала

    2 такой Script Controller назначается на Position_Y Dummy01:
    Код:
    l = $Dummy01.pos.x - $Sphere01.pos.x
    l = if l < 0 then 0 else l
    l = if l > 100 then 100 else l
    $Sphere01.material[1][4].mixAmount = l
    0
    
     
  5. pcmist

    pcmist Пользователь сайта

    С нами с:
    01.03.2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    2
    я бы сделал через wire parameters и, скорее, связал бы не с dummy, а со slider-ом.
     
  6. Максим Поклонов

    Максим Поклонов Мастер

    С нами с:
    07.07.2006
    Сообщения:
    305
    Симпатии:
    0
    Баллы:
    459
    Гениально! Этот скрипт работает. По этой теме у меня будет только один персональный вопрос к Денису Савину.
    Всем спасибо.
     
Модераторы: Savin Denis

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