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

getChannel - как получить прозрачность

Тема в разделе "MAXScript", создана пользователем 3Dimka, 26 май 2008.

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

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

    С нами с:
    17.06.2006
    Сообщения:
    33
    Симпатии:
    0
    Баллы:
    15
    Привет,

    Есть такой замечательный метод getChannel <bitmap> <coord_point2> <chan_name> при помощи которого можно например получить расстояние до точки объекта.

    Вот доступные имена каналов для функции:
    #zDepth, #matID, #objectID, #UVCoords, #normal, #unClamped, #coverage, #node, #mask, #shaderColor, #shaderTransparency, #velocity, #weight

    res=getChannel Render_img [x,y] #zDepth
    Z=res[1]

    в данном случае [1] - индекс точки в порядке удаления от камеры, тоесть res[1] - это ближайщая точка к камере, res[2] - следующая и т.д.

    Вопрос: Как получить такой же массив RGBA цвета точки? Какой канал использовать? Интересует в первую очередь Alpha.

    Спасибо!
    3Dimka ;)
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Функция getPixels
     
  3. 3Dimka

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

    С нами с:
    17.06.2006
    Сообщения:
    33
    Симпатии:
    0
    Баллы:
    15
    Денис спасибо,

    но getPixels не совсем подходит. Она дает прозрачность бленда, и если за поверхностью с прозрачностью имеется другая поверхность, то прозрачность в getPixels для этой точки будет потеряна.

    Мне нужно получить цвета и прозрачности для всех поверхностей в Z ордере. Мне это нужно для получения своего бленда с учетом карты глубины.
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Ну тогда бери из канала #shaderTransparency
     
  5. 3Dimka

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

    С нами с:
    17.06.2006
    Сообщения:
    33
    Симпатии:
    0
    Баллы:
    15
    я пробывал, но с #shaderTransparency и shaderColor getChannel всегда возвращает unassigned

    Версия - 3ds max 9
     
  6. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Так ты отрендерил эти каналы ? откуда по твоему они там возьмутся ?
     
  7. 3Dimka

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

    С нами с:
    17.06.2006
    Сообщения:
    33
    Симпатии:
    0
    Баллы:
    15
    Я бы с удовольствием бы отрендрил, подскажите как.

    Я пробывал в диалоге рендера (F10) добавть все Render Elements что есть, но это не помогло, к тому же практически все Elements получились просто черными.
     
  8. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Ты это про все эти Render Elements забудь.
    Делаеш через фунцию render (в разделе битмапа должен быть протенький пример, в самом начале) и у нее прописываеш имя камервы и нужные каналы
     
  9. 3Dimka

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

    С нами с:
    17.06.2006
    Сообщения:
    33
    Симпатии:
    0
    Баллы:
    15
    Денис, большое спасибо!
    Это именно то, что мне и надо было сделать:
    Render_img = render camera:pb_R_cam.object outputwidth:width outputheight:height channels:#(#zDepth,#shaderTransparency)
     
Модераторы: Savin Denis

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