Render.ru

вопрос по дисплэйсеру

Seminarist

Активный участник
Рейтинг
5
#1
Задача: сделать волну. Есть NURBS-ректангл (200Х200), применен конструктор Displacer с материалом "Waves" (материал штатный - "Waves"
из стандартного набора, с анимацией) Опять таки, методом научного "тыка" (потому как это нигде не написано) был выявлен факт того, что шейдер Surface geometry (как в примере с "Waves") с инструментом Displacer не работает. Работает только шейдер Surface properties. Т.е. методом конструктора Displacer является только рисунок материала, то, что "нарисовано" на поверхности, этой самой Surface, а не её свойства, скажем, Bump, или другие взаимодействия с источником света, это как раз понятно. Вопрос: я взял стандартный материал "Waves", переделал его шейдер Surface geometry в шейдер Surface properties с сохранением анимации, т.е. если просто назначить материал ректанглу "волна идет" в анимации, а если использовать этот материал в качестве метода конструктора Displacer, ректангл деформируется согласно этому материалу, но анимации "волны" нет, хотя в окне Material preview при проигровании анимации "волна" идет со всеми заданными параметрами. Ведь, по идее, должно работать. Подскажите плз. в чём причина.
Спасибо.
 

Seminarist

Активный участник
Рейтинг
5
#2
По поводу сотрудничества Displacer с разными шейдерами беру свои слова обратно, погорячился.
 

ODA

Активный участник
Рейтинг
11
#3
:) Рад что разобрался самостоятельно.

На самом деле многие пользователи сталкиваются по началу с этой проблемой, путая конструктор Displacer c Displacement в системе шейдирования. Хотя названия созвучны и результатом работы в обоих случаях является создание смещения эти инструменты относятся к разным областям применения.

1. конструктор Displacer (точнее Point Displacer) - инструмент моделинга и анимации. Создает смещение объектов или узловых точек поверхности в пространстве. Для правильной его работы необходимы следующие параметры:
- объект на который он воздействует. Это может быть множество объектов или точек поверхности
- VSL материал, задающий характер и распределение величины по которой будет происходит смещение
- текстурный объект, который связывает свойства VSL материал с координатами нашей сцены.

Важно заметить, что конструктор Displacer (как и многие другие инструменты RS) используются для своей работы такой важный элемент архитектуры программы как каналы (Сhannel). C их помощью данные, формируемые VSL-ем (аналогия с калькулятором) становятся доступными любому инструменту RS-т.
В конструкторе Displacer (в v7 это теперь называется модификатором) по умолчанию качестве канала передачи данных используется Color (канал цвета). Хотя можно использовать любой другой.
Принцип действия конструктор Displacer следущий

В VSL материале формируются данные-> В VSL материале эти данные помещаются в канал->конструктор Displacer берет данные их канала и распределяет их в пространстве сцены при помощи координат текстурного объекта-> конструктор Displacer выполняет смещение объектов или точек поверхности

2. Displacement в системе шейдирования. Инструмент визуализации. Создает классический Displacement при помощи шейдера Surface geometry
 

Seminarist

Активный участник
Рейтинг
5
#4
Принцип понятен, но легче не стало :) С каждым ответом количество вопросов увеличивется :)

1. "Displacement в системе шейдирования" - это насколько я понял обычный "Bump"

2. :) Даже не знаю, как правильно сформулировать. Опять таки, методом "тыка" (другой пока недоступен :) я перебрал доступные материалы в сочетании с доступными каналами конструктора Displacer. Результат: Displacer работает только по "картинке", т.е. канал "Color" ("конструктор Displacer берет данные их канала и распределяет их в пространстве сцены при помощи координат текстурного объекта" - что такое в данном случае "текстурный объект"). Тогда зачем ему столько других каналов. Мне сложно представить ситуацию когда Displacer сработает с каналом "Glow size", и по логике вещей, Displacer с каналом "Bump normal" должен сработать с материалом "Reptile", хотя этого не происходит.
"Хотя можно использовать любой другой." - прошу хотя бы пару примеров, чтоб понять именно принцип действия каналов. В свойствах NURBS и SDS объектов есть список с каналами Attribute, как ими пользоваться - тоже тайна за семью печатями.
3. Начальный вопрос остался в силе. Почему при проигрывании анимации объект не деформируется вместе с материалом. Для полной понятности картинка. Всё вроде правильно, должно работать.

Спасибо.
 

Вложения

ODA

Активный участник
Рейтинг
11
#5
:)

1 Нет не так.
Displacement в системе шейдирования это Displacemen
Bump системе шейдирования это Bump.

Это разные понятия. Хотя оба определяются шейдером Surface deometry. Displacemen в RS работает для NURBS и SDS поверхностей при установки значении Max.Displacement>0 в параметрах объекта.

Вот тут серия статей по основам RS Это желательно почитать, для понимания как устроен RealSoft.

2. По конструктору Displacer. Наверное для более быстрого понимания и изучения следует взять более простой материал нежели wave. Например, Colorgrid. Он работает с шейдером Surface Property и формирует данные которые потом передаются в канал цвета. Этот канал по умолчанию использует конструктору Displacer, и таким образом можно избежать лишних неожиданностей при обучении.
Вот такой результат мы получаем .См. картинку

Ели это получилось то можно начинать играть параметрами, для лучшего понимания.

Немного по терминам.
Текстурный объект - это отдельный класс объектов, который задает координаты для VSL материала в пространстве сцены. Он может быть анимирован как любой другой объект сцены. Так же он может использоваться в различных конструкциях в качестве родительского и параметрического объекта.

Еше раз по каналам. Во время обучения я часто привожу пример с городскими коммуникациями (газовые, тепло, водоцентарли, связь и т.п):) Это очень хороший пример для понимания, что есть Сhannel и их функции в RS-те. Если VSL занимается формированием данных то каналы "доставляют" эти данные до конктерного адресата (инструмента). Однако надо помнить, что VSL формирует различный тип данных (Color, Float, Vector), соотвественно и каналы могут быть разными. Более того часто пользователь сам назначает новые каналы. Если мы видим список доступных каналов в каком либо инструменте то это не означает что все они подойдут для текущего использования. Другими словами что бы нам подключит газ к дому мы копаем траншею и видим множество различных труб (доступный список каналов). Наша задача выбрать именно ту трубу по которой идет газ.

3. Я не могу так на вскидку ответить почему не анимируется, нужно видеть сцену.
Хотя для простоты попробуй подвигать (или анимировать) текстурный объект. Это самый быстрый путь к тому что бы все заработало
 

Вложения

Seminarist

Активный участник
Рейтинг
5
#6
Вопросы ко второму абзацу снизу:
1. "VSL формирует различный тип данных (Color, Float, Vector)" - это три единственных (по количеству видов переменных) типа данных, которые могут передаваться по каналам?
2. Какие характеристики кроме типа определяют поток данных (при отсутствии таковых количество каналов больше 3-х избыточно), или комбинирование этих типов (если такое возможно) и определяет выбор канала?
3. Поток данных который мы передаём по каналу формируется на уровне одного шейдера или материала в целом?
4. Один шейдер может формировать один тип данных или несколько? Один поток данных или несколько?
5. Правильно ли я понимаю, когда один материал формирует несколько потоков данных, результат зависит от выбора канала в инструменте?
6. И наконец, как я определю, по какому каналу нужно пускать какой поток данных? Во всяком случае мне нужно знать свойства этих каналов.

Пока всё. Перевариваю.

Спасибо.
 

ODA

Активный участник
Рейтинг
11
#7
1. Да.
2. Тип данных определяет выбор типа канала. Возвращаясь к примеру с городскими коммуникациями. Для газа мы берем газовую труду, для воды - водопроводную а для электричества - силовой кабель.
3. данные формируются в результате работы какого либо оператора (VSL Objects). Например, оператор Color=Constant (1,1,1) при использовании в шейдере Surface Properties задает три значения RGB и помещает их в канал цвета (Color). Какие каналы и в каком шейдере доступны для задания и обратотки можно посмотреть в диаграмме выполнения рендерига (Referece Manual>RealSoft3D> Materials>Shaders)
4. Каждый шейдер отвечает за свой этап рендерига и соотвественно имеет свой перечень данных доступных для обработки. Опять смотрим на диаграмму. ТАм все подробно расписано. Важно помнить, что VSL Objects на входе может иметь несколько типов данных, но на выходе всегда выдает только один.
5. Не совсем понятен вопрос. Если простым языком, то VSL формирует данные и "загоняет" их в каналы а как их использовать определяет пользователь конкретном инструменте.
6. Это как раз подробно расписано в том разделе Referece Manual-а, на который я ссылался выше.
 

Seminarist

Активный участник
Рейтинг
5
#8
Если бы я всё понял в мануале, я бы не задавал вопросов, мне важно понять структуру. Мне кажется я заблудился в трёх соснах :(

Скажите мне плз, что перечислено с писках input и output в свойствах VSL Objects?

Спасибо.
 

ODA

Активный участник
Рейтинг
11
#9
посмотри вот тут. Это перевод части тех статей, на которые я давал ссылки. Там все подробно расписано.

input и output - это входные и выходные каналы для VSL Objects. Проще говоря, VSL Objects получет на входе некий набор данных, обрабатывает их и выдает результат.
 

Seminarist

Активный участник
Рейтинг
5
#10
Ну, в общем, я так и полагал :)
Получился испорченный телефон - мануал, форум, программа. К сожалению моего английского было недостаточно для правильного перевода.
В целом, всё сложилось в одну картину (мне так кажется:), но один вопрос остался невыясненным. В свойствах дисплэйсера список каналов, зачем так много, если если для "восприятия" данных достаточно всего три?

Спасибо.
 

ODA

Активный участник
Рейтинг
11
#11
В списке каналов мы видим ВСЕ доступные каналы. Если пользователь добавляет новые, то они так же отображаются в этом списке. Какой канал использовать в каждом конкретном случаи - решает пользователь.

не понятна фраза - "зачем так много, если если для "восприятия" данных достаточно всего три". Почему три? а не один или десять? Откуда ты взял эту цифру?
 

Seminarist

Активный участник
Рейтинг
5
#12
Были заданы вопросы:
1. "VSL формирует различный тип данных (Color, Float, Vector)" - это три единственных (по количеству видов переменных) типа данных, которые могут передаваться по каналам?
2. "Какие характеристики кроме типа определяют поток данных (при отсутствии таковых количество каналов больше 3-х избыточно), или комбинирование этих типов (если такое возможно) и определяет выбор канала?"
Были даны ответы:
"1. Да.
2. Тип данных определяет выбор типа канала. Возвращаясь к примеру с городскими коммуникациями. Для газа мы берем газовую труду, для воды - водопроводную а для электричества - силовой кабель."

Потому, что типов всего три - вектор, цвет, и переменная с плавающей запятой.
В принципе и цвет можно было бы передавать по векторному каналу, но раз уж так сделали, то пусть будет. Каналу все равно, какие данные передавать, это всего лишь цифры, главное чтоб тип подходил. И при том, когда я создаю новый канал, кроме имени и типа канала я ничего не могу задать. Вопрос изначально и стоял как раз об отличительных характеристиках каналов, и если канал - это труба (например, для жидкости) то какая ему разница, что там течёт, вода это, спирт или нефть; если это канал типа Vector, то он пропускает только массивы состоящие из трёх переменных и только, а если Color, то чтоб переменные были ещё положительные и целые.

Или я опять мимо?

Спасибо.
 

ODA

Активный участник
Рейтинг
11
#13
Уже намного теплее.
Когда ты создаешь новый канал то по нашей аналогии с гор. коммуникациями ты закладываешь новую трубу (или кабель,) Но она еще пуста. Для того что бы она "наполнилась" надо поместить туда данные. А это делается при помощи VSL Objects.

В данном случаи новация RS состоит в том, что архитектура каналов полностью открыта для пользователя. Таким образом она может быть использована не только при работе системы шейдирования но и инструментами моделирования и анимации (в качестве источника данных)
 

Seminarist

Активный участник
Рейтинг
5
#14
Вот, что Вы сейчас сказали - ничего не понял :)

"Когда ты создаешь новый канал то по нашей аналогии с гор. коммуникациями ты закладываешь новую трубу (или кабель,) Но она еще пуста. Для того что бы она "наполнилась" надо поместить туда данные. А это делается при помощи VSL Objects." - это как раз понятно, непонятно, чем "normal1" отличается от "normal2", от "Fade", от "blur_w", от "Identifier" и т.д. кроме типа данных (вполне возможно и тип данных у них одинаковый).

У нас есть три вида материи, которые нам необходимо доставить из точки А в точку Б. Причём у нас есть три типа труб. 1-ая - может проводить жидкость, 2-я - газ, 3-я - электричество. Какая архитектура может быть у трубы? Это всего лишь Sweep-инструмент в отношении окружностей разного диаметра :)

Спасибо.
 

Seminarist

Активный участник
Рейтинг
5
#15
Ещё раз повторю, при создании канала я не могу его "конфигурировать". Я могу задать тип (один из трёх) и имя, и только. О какой "архитектуре" идёт речь?
 

ODA

Активный участник
Рейтинг
11
#16
мне кажется, ты немного запутался. Все намного проще. Система каналов предназначена для передачи данных "калькулятора" (VSL Objects) до исполнителя - инструмента моделирования или анимации (того же конструктор Displacer) или другого VSL Objects (например, при передачи данных между различными материалами. например мы в одном материале определяем значение Bump и помещаем данные в канал My_bump. Далее в другом материале мы теперь можем использовать данные канала My_bump, например, для задания зависимости цвета от My_bump. И получить возможность управлять цветом через высоту bump (Например, области с минимальных значением Bump будут темнее и т.д и т.п)


чем "normal1" отличается от "normal2", от "Fade", от "blur_w", от "Identifier" и т.д. кроме типа данных (вполне возможно и тип данных у них одинаковый).
отличаются они адресатом (исполнителем). "normal1"и "normal2" используются для GI как промежуточные данные о направлении нормали. Fade задает видимость объекта и т.д
 

Seminarist

Активный участник
Рейтинг
5
#17
"мне кажется, ты немного запутался." :) - Я запутался в конец.
По первому абзацу - "определяем значение Bump и помещаем данные в канал My_bump" - Каким образом я помещаю данные в канал? Как создать канал я знаю, откуда берутся данные тоже понятно (хотя вопросов по формированию данных - масса), а как данные в канал засунуть (чисто технический вопрос - на какие кнопки жать?)

По второму абзацу. Где есть описания уже имеющихся каналов (из списка)

Спасибо.
 

ODA

Активный участник
Рейтинг
11
#18
Извини что немного задержал с ответом. Предновогоднее обострение у заказчиков:)

По каналам. Все намного проще.

Как только ты создал новый канал, он сразу становится доступным в системе.
Теперь как в него пометить данные. есть несколько путей

1. Использовать VSL Objects и канал указать как output. Тгда данные сформированные VSL будут помещены в наш канал
2. Использовать Property Window>Col>SurfaceProperties>Attribute> выбор канала> задание значения. Этот вариант можно использовать как частный случай. Например, для задания значения Alpha канала объекту(там).


Описание каналов в мануале и диаграмме рендеринга . Они есть в документации
 
Сверху