28 авг. 2012 г.

RenderMan - первые шаги (делаем шейдер)

Попробуем создать шейдер средствами ShaderLink и использовать этот шейдер в дальнейшей работе, применив к связке Blender + 3DLight

Поехали:


  • Запускаем ShaderLink
  • Создаем новый проект.
  • Ищем окошко "Library"

В этом окне перечислены все ноды, которые мы можем использовать в проекте. Как вы видите, все сгруппировано по отдельным типам. Я думаю не стоит подробно останавливаться на этом, из названий многое ясно.

Продолжаем:
Открываем тип "root", и видим там две ноды "surface" и "displacement". 
Surface - поверхность, то на чем будет создан сам шейдер, это базовая штука.
Displacement - искажение поверхности, используется по "вкусу", то есть может использоваться, а может нет. Кроме этого, вы можете создать шейдер который будет содержать ТОЛЬКО дисплейс.

Начнем с простого, остановимся на "surface" и попробуем натянуть на него простую текстуру.
Для этого нам понадобится еще одна нода, берем её "Library->texture->texture"

Включаем окно "Properties" и делаем двойной клик на ноде "texture0". Двойной клик создаст превьюшку на ноде и у вас скорее всего будет просто черное пятно вместо текстуры.
Теперь подключаем текстуру, для этого в окне "Properties" указываем путь к картинке, например:
C:\shaderlink\shaderlink\src\data\shader\backdrop.tif

Для счастливых обладателей windows придется столкнуться с новым барьером. Этот путь не сработает, нужно его модифицировать на:
C:\\shaderlink\\shaderlink\\src\\data\\shader\\backdrop.tif

Итог:


Попробуем это как-то использовать в своей работе...

Жмем на кнопку "CodeGenerator" и смотрим на красивые непонятные буковки


Обратите внимание! Я установил галочки в трех пунктах. Это сделано для того, чтобы некоторые переменные сделать общедоступными. Это позволит уже в самом Blender изменять текстуру (галочка "texture0_fileName"), тип проекции (галочка "texture0_projType") и "texture0_projSpace" на всякий случай...

Всё, жмем в окне "CodeGenerator" кнопку Export и благополучно сохраняем исходник новоиспеченного шейдера. Пусть это будет файл "test.sl"

Теперь немного займемся тюнингом...

Переменные, которые мы "расшарили", сохранят свои имена, именно эти имена будут отображаться в интерфейсе Blender. По моему эти имена слишком НЕ красивы и длинны...
Давайте исправим, а заодно дадим шейдеру красивое имя.
Кроме этого нужно стереть путь к картинке и оставить пустые кавычки. Именно в этом случае интерфейс Блендера создаст для нас кнопку с выбором текстуры, иначе же текстура будет прописана как константа, навечно...
И еще важный момент...
В начале файла вы увидите строчку с сылкой на дополнительную библиотеку C (#include "project.h") это тоже нужно исправить, так как компилятор 3DLight ничего не знает о существовании этой библиотеки.

В конечном итоге у вас должно получиться что-то вроде:


Имя шейдера я заменил на "Texturio" )))
Если с *.sl файлом вы закончили и нет никаких ошибок, то двойной клик по нему, вызовет компилятор 3DLight, который создаст файл Texturio.sdl

Осталосьсовсем не много.
Нужно этот файл переместить в директорию с шейдерами 3DLight, например сюда:
C:\Program Files\3Delight\shaders

Теперь можно смело открывать Блендер

Texturio появился в списке шейдеров

Всё как и планировалось, текстуру можно подключать
любую, а заодно менять другие параметры.

Есть еще интересная особенность ShaderLink - можно создавать свои ноды!
Об этом чуть позже ;-)


4 комментария:

  1. Я одно время очень активно пробовал использовать ShaderLink для связки Maya->Liquid->PRMan. Но очень многих привычных в Slim-e фич, все же не хватало. Поэтому, со временем, я на основе ShaderLink-a, взялся писать свой редактор. Он еще в стадии разработки, но даже в таком, стартовом состоянии, позволяет делать рабочие шейдеры.
    Если интересно -- http://meshstudio.blogspot.com/2012/07/meshaderedpy-020.html

    Удачи!

    ОтветитьУдалить
  2. Большое спасибо за ссылку. Это очень перспективная программа и я пробовал ее использовать прежде чем стал ковырять ShaderLink, однако не смог разобраться с самым главным. Меню Command дает неактивные вкладки, то есть Build или Render не доступны. Я так и не понял как в конечном итоге воспользоваться результатом программы.

    Думаю вам стоит внести программу в список на renderman.ru
    Сюда:
    http://renderman.ru/i.php?p=Projects (нужно просто зарегистрироваться, там работает wiki движок)

    ОтветитьУдалить
  3. На самом деле, все проще. Меню не активно, однако после каждого рендера в окне ImageView, в папке текущего проекта создаются скомпиленные шейдеры.

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

    ОтветитьУдалить
  4. Спасибо, попробую разобраться.

    ОтветитьУдалить