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

Volum Surf

Тема в разделе "RenderMan", создана пользователем -, 27 окт 2000.

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

    Дело обстоит примерно так
    Сурф. шейдер должен рендериться как волум....
    Про raysphere.h знаю - спасибо ненадо...всеравно время - лучше повеситься,
    а результат приемлим только для сфер. Вторая точка которую
    он возвращает не есть точка пересечения I c поверхностью.
    Отсюда невозможно ПРАВИЛЬНО заполнить волумом сложный объект (человека)
    нормальным образом (с прозрачностью наростающей к краям).
    Хочу попробывать следующий способ:
    1 проход: просчитать Z depth файл объекта как он есть
    2 проход: просчитать Z depth файл объекта с выключеным Double Sided и
    включенным Oposite
    Считаються они мгновенно.
    Сделать рэймаршевый шейдер который брал бы разницу между этими Z как
    дистанцию которую ему необходимо отмаршировать от внутренней P к камере вдоль I
    а в конце еще и множил бы Oi на нее (дистанцию) получая при этом falloff к краю.
    Вопрос в следующем:
    А не бредова ль идея и если нет то есть ли способ добраться
    до инфы в pixarовском Z файле из шейдера?
     
  2. Guest

    По-моему все выглядит вполне разумно. Делаешь из Z-файла текстуру (а не shadow) при помощи MakeTexture или txmake - и потом читаешь ее при помощи texture().
     
  3. Guest

    Стоп, а при чем тут z-файлы? То, что ты хочешь сделать - это обычный Volume шейдер. Только не забудь в качестве surface шейдера на объект назначить что-то типа Oi = Ci = 0;
     
  4. Guest

    В том то все и дело что Z есть Z тобиш дистанция от P до камеры с которой он делался. Если конвертануть его в текстуру
    то на выходе будеш иметь 0 - 1 и придеться вводить некий множитель
    что бы расставить все на свои места. Причем для каждой сцены свой а
    рэймаршер достаточно медленная штука - поседееш пока найдеш.
    А volum шейдер на объекте это чисто BMRT-шная фишка насколько я знаю.
    К томуже речь о True Volum - е а не о подмешивании цвета с целью симуляции. Он должен скатерить свет, дифузить, может даже спекулярить.
    А все это без реймаршера невозможно, как реймаршер невозможен без
    2 точек меж которыми ему щимиться. Конечно можно просто задать определенную дистанцию которую ему надо пройти (как это сделано в
    mtor-овском фоге) но это будет просто "брехней считающейся долго".
     
  5. Guest

    В volume shader "I" - это как раз расстояние, которое луч проделал "внутри" объема. (Если мне не изменяет память...)
     
  6. Guest

    Вернее, не расстояние, а вектор, а вот length(I) - расстояние. И в prman это все тоже работает. Ну а скаттеринг и пр... Это в любом случае долго...
     
  7. Guest

    Какой то чат получился
    Субота же - вечер - пора по домам. :))))
     
  8. Guest

    Это ты прав! ;-))
     
  9. Guest

    Неа.
    Тут у меня риспек3.2 лежит....
    The length of I is the distance trveled trough the volume (...пока все совпадает)
    from the origin of ray to the point P (...а вот тут облом)
    А origin of ray - есть E тобиш камера
     
  10. Guest

    У меня под рукой 3.1. Так вот - origin of ray - как раз P (смотри таблицу 12.3 внимательнее), но все равно херня получается. Скорее всего там что-то напутано, потому, что в данном контексте origin of ray - ближайшая "изнанка" объекта вдоль луча зрения. В REYES при рендеринге возникает попиксельный список z-сортированных микрополигонов, начиная с ближайшего и заканчивая последним полностью непрозрачным, так что все необходимые данные там есть. Короче, я все-таки берусь утверждать, что прав.
     
Модераторы: Moderator.

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