Render.ru

particles runtime expr + file texture

#1
есть particles, излучаемые поверхностью.
есть текстуры file1, ramp1.
для particles есть creation expression:
ramp1.uCoord = particleShape1.parentU;
ramp1.vCoord = particleShape1.parentV;
print (ramp1.ocr + "\n"),
которое распечатывает значение красной составляющей точки текстуры по
координатм, соответствующим UV координатам новорожденной частицы...
все работает!!!

но....
как только захочем получить ту же информацию от file1:
file1.uCoord = particleShape1.parentU;
file1.vCoord = particleShape1.parentV;
print (file1.ocr + "\n"),
получим одни нули, что никак не соответствует изображению в file1 :(

люди добрые...
помогите...
не обойдите стороной...
 
#3
Так не получится сделать, к сожалению...по крайней лично я способа выборки цвета в нужных мне uv-coords у файловых текстур так и не нашёл. В процедуралках всё работает.
 
#4
Ну, если нужно получить цвет файловой текстуры, соответствующий u v в креашн экспрешн,то это можно сделать примерно следующим образом.
Частицам добавляем rgbPP. Включаем в эмиттере пипку inherit color (это в texture emission attributes) и на particle color кладем ту же текстуру, что и на поверхности, с которой происходит эмитирование.
Теперь в креашн экспрешене можно распечатать parentU, parentV, rgbPP . Если нужно, то это самое rgbPP можно в том же экспрешене в конце поменять.
Работает и с процедурными и с файловыми текстурами...
Почему-то в 4.5 это так.....
 
#5
В 4.5 можно сэмплить файловые текстуры? 8-0
То есть - на вход UV, на выходе - цвет??
 
#6
Секундочку, давайте разделим вопрос сэмплирования файловых текстур как таковых и креэйшн экспрешн в описанной выше ситуации.
А именно, если есть частицы, эмититующие с поверхности, текстурированыой файловой текстурой, то в момент рождения этой частицы можно получить u, v координаты точки рождения частицы и цвет текстуры поверхности в этой точке. Независимо от того, файловая это текстура, процедурная или целый шэйдер нетворк. Сделать это можно описанным мной способом.
Кстати, подобным образом делались эффекты в фильме "Куда приводят мечты"
О сэмплировании файловой текстуры безотносительно к чему бы-то нибыло речь не шла.
 
#7
2 Злыдень:
да, мне в конце концов после долгих мучений только это и пришло в голову.
но, если частицам нужно придать, скажем, несколько характеристик разными
файл-текстурами, то решение далеко не будет простым и явным :(

2 Joss:
я впервые столкнулся с проблемой выборки цвета в случае с creation expression.
подумал, может не срабатывает, потому что внутри выражения... :)
и очень удивился, когда это у меня не получилось и командами MELа...
иногда это очччччень нужно, правда? :)
похоже Maya начинает обрабатывать файл-текстуру только во время рендеринга.
тогда почему работает связывание файл-текстуры с particle color & texture rate
у emitter?
что интересно, в этом случае видимых связей на входе файл-текстуры нет.
(texture placement node не требуется, его можно убить...)

я не вижу этому логического объяснения...
может видит кто?
 
#8
Есть у меня одно подозрение, почему это происходит. Может быть, оно даже верное... Суть вот в чем.
Любая майская нода - это "черный ящик" с входными и выходными атрибутами. (Это мы все знаем). Для этих атрибутов специальным образом организована система зависимостей, а именно, если атрибут А обновился, то должен обновиться атрибут Б. Точнее, если атрибут Б нуждается в обновлении, то нужно посмотреть, а не изменился ли атрибут A. В случае процедурных текстур атрибут цвета генерится непосредственно внутри узла и uv и цвет естественным образом связаны в зависимость.
В случае файловых текстур, что мы знаем. Только имя файла. Значит, чтобы по uv получить цвет мы должны сначала прочитать файл текстуры (ведь на диске и в памяти файлы могут не совпадать.) Поэтому прямой зависимости между uv и цветом нет.(Работало бы иначе все нечеловечески долго).
 
Сверху