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

ambient occlusion с прозрачными объектами

Тема в разделе "Maya", создана пользователем Eugene 8262, 4 ноя 2005.

Модераторы: Dark™, Skif
  1. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    Подскажите как убрать из трассировки оклюжина объекты с прозрачностью
    (к примеру, картинка под стеклом или конфетки в прозрачной пластиковой банке).
    И возможно ли это сделать в MAYA?
    В LightWave я ставил в свойствах прозрачных объектов флаг Unseen by Rays.
     
  2. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    2 Puppet:
    Уверен. Работает. Могу тестовую сценку на мыло залить.
     
  3. Guest

    А у нас все просто - говоришь - не окклюжить объекты с таким-то ID - оно и не оклюжит...
     
  4. Puppet

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

    С нами с:
    20.05.2004
    Сообщения:
    545
    Симпатии:
    17
    Баллы:
    19
    to Решатель:

    Да, уверен. Потому что во время оклюжена используются лучи не mi_trace_reflection, а mi_trace_probe. Основная резница по сравнению с другими типами лучей заключается в том что probe лучи не вызывают шейдер, хотя если насильно указать, то они это могут делать.
    А если все же насильно вызывать шейдер, то уверяю вас, все будет значительно медленнее. А окклюжен он на то и окклюжен что считает лишь расстояние между объектов и вызывать просто так шейдер это уже излишне.

    to Eugene:

    Вы уверены что все работает? Потому что оно не должно работать :)
    У меня не работает при любом раскладе и шейдере.
     
  5. Решатель

    Решатель Знаток

    С нами с:
    20.04.2005
    Сообщения:
    1.413
    Симпатии:
    0
    Баллы:
    44
    А что вам мешает сделать это в maya?
     
  6. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    Незнание Maya на Вашем уровне.
    Не могу найти какой флаг отвечает этому параметру.
    Судя по Вашему посту полагаю, что Вы с этим сталкивались и буду благодарен за подробный ответ.
     
  7. Решатель

    Решатель Знаток

    С нами с:
    20.04.2005
    Сообщения:
    1.413
    Симпатии:
    0
    Баллы:
    44
    http://localhost:4449/Maya7.0/en_US/Rendering/renderstats.html?hl=primary+visibility
     
  8. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    Отключи все, что только можно:
    Casts Shadows
    Receive Shadows
    Visible in Reflections
    Visible in Refractions
    даже отключил Primary Visibility (хотя стекла должны быть всетаки видны)
    В секции mental ray оключил
    Visible in Transparency
    Trancmit Transparency
    Trace Reflection
    Trancmit Reflection
    FG Cast
    FG Receive,
    но результат остается тем же: ambient occlusion отрабатывает тени от объекта.
    Можно для тех, кто на бронепоезде?
     
  9. Решатель

    Решатель Знаток

    С нами с:
    20.04.2005
    Сообщения:
    1.413
    Симпатии:
    0
    Баллы:
    44
    Хм. Если нужно убрать сам обьект - то выключается primary visibility.
    По идее после этого он не должен видеться AO шейдером, но почему-то видится. Ну что ж - значит надо его просто спрятать и всё. ;)
     
  10. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    В том, то и дело, что тогда нужно будет стекла рендерить отдельным проходом, а это - лажа по двум причинам:
    1. Дополнительный проход с FG (освещение сцены без источников света)
    2. Отражения в стеклах получатся без теней (оклюжена).
    Вся сцена 1,5- 2,5 миллиона полигонов.
    Может можно что-то придумать?
    Я в отчаянии :(((

     
  11. Решатель

    Решатель Знаток

    С нами с:
    20.04.2005
    Сообщения:
    1.413
    Симпатии:
    0
    Баллы:
    44
    Значит надо воспользоваться каким-то другим AO shader. Вроде были на highend'е. И поблагодарить программеров из Alias ещё раз. :-\
     
  12. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    Да вот как раз и пытаюсь установить AO shader от LightEngine3d.
    Посмотрим, что выйдет.
     
  13. Puppet

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

    С нами с:
    20.05.2004
    Сообщения:
    545
    Симпатии:
    17
    Баллы:
    19
    Дело не в шейдере, так как во время просчета окклюжена шейдер вообще не вызывается и менталу обсалютно наплевать прозрачный у вас объект или нет.
    Проверяется лишь наличие пересечения с объектом.
    А шейдер вызывает, например, FG (это и есть главное отличие между FG и AO)

    Чтобы объект не был виден для окклюжена нужно убрать галку Trace на трансформе (не на шейпе!) объекта, можно снять все галки кроме Visible.
    Но тут возникает другая проблема (возможно баг) :) Объект после это не просто исчезнет из окклюжена, а еще и сам прекратит отражать и преломлять и тп.

    В итоге проблему можно решить написав свой шейдер окклюжена, который сделает все как вам надо :)

    Удачи ;)

    P.S. На картинке что под стеклом окклюжен можно забейкать...
    P.S.S. А зачем стекло и картинку делать разными объектами? И проблемы нету :)
     
  14. Решатель

    Решатель Знаток

    С нами с:
    20.04.2005
    Сообщения:
    1.413
    Симпатии:
    0
    Баллы:
    44
    Шойтан.

    Пупит, а ты уверен, что шейдер AO как таковой не зовётся?
     
  15. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    2 Puppet
    Взял набор шейдеров от Gonzalo Garramuno в твоей компиляции (mrClasses v.0.1.7). В нем есть gg_ambientocclusion.

    Стеклу в шейпе вырубаем:
    Visible in Reflections
    Visible in Refractions

    В трансформе:
    Visible:Yes
    Trace: Use Inherited
    Shadow: No
    Caustic: Hidden
    Globillun: Hidden

    И все работает, даже с отражениями.
    Спасибо за компиляцию.
     
  16. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    Разобрался.
    Работает с родным менталовским mib_amb_occlusion
    с gg_ambientocclusion (Gonzalo Garramuno)
    и с Dirtmap (Daniel "thebigMuh" Rind)

    Стеклу в шейпе вырубаем:
    Cast Shadows
    Visible in Reflections
    Visible in Refractions

    В трансформе:
    Visible:Use Inherited
    Trace: Use Inherited
    Shadow: Use Inherited
    Caustic: Hidden
    Globillun: Hidden
     
  17. Решатель

    Решатель Знаток

    С нами с:
    20.04.2005
    Сообщения:
    1.413
    Симпатии:
    0
    Баллы:
    44
    Подожди, но кто пускает mi_trace_probe-то? И почему они не должны соблюдать trace visibility?
     
  18. Puppet

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

    С нами с:
    20.05.2004
    Сообщения:
    545
    Симпатии:
    17
    Баллы:
    19
    Они соблюдают.
    Скорее всего объект без trace флага на трансформе просто не попадает в bsp, по крайней мере мне так кажется.
    Вот то что эти объекты сами перестают отражать, преломлять и тп, это уже криминал.

    Просто когда луч попадает в объект проверяется его тип и если это был рефлекшен рей, и на объекте стоит "не виден для рефлекшен", то луч идет дальше. А вот тип луча probe попадает под категорию "все остальные"
    В мае нету флага Visible for Probe. Да и в самом ментале такого флага помоему нету.
     
  19. Eugene 8262

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

    С нами с:
    22.04.2005
    Сообщения:
    122
    Симпатии:
    0
    Баллы:
    11
    Это где у вас?
     
  20. helm

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

    С нами с:
    20.04.2005
    Сообщения:
    294
    Симпатии:
    0
    Баллы:
    12
    кстати, если использовать встроенный в 6.5 AO шейдер, то действительно отключить объект из просчета давольно сложно. но для шейдера dirtmap галки Visible in reflection, Visible in refraction помогают, то есть если их отключить то объект будет "испускать" оклюжен но не "принимать" его. это очень помогает в случае когда нужно досчитать чот-то в уже имеющийся (просчитанный) оклюжен.
     
Модераторы: Dark™, Skif

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