5. Наконец, добавьте
Результирующая сеть нодов (часто называемая макаронами (noodle)), может выглядеть похоже на это:
Если Вы рендерите сферу, результатом будет красочный шар, похожий на виджет выбора цвета.
Теперь вернёмся к коду.
На первой строке мы импортируем модуль
Затем мы определяем класс
Затем, мы определяем функцию
На выделенной строке мы определяем список определений входных сокетов; в нашем случае только один с названием
Другие типы входного сокета также возможны и этот тип определяется величиной аргумента
Нашему примеру Pynode нужен также выход, так что мы определяем список, состоящий из единственного выходного сокета называемого Color. У него есть четыре величины с плавающей точкой по-умолчанию, определяющих красную, зеленую, синюю, и альфа величины соответственно.
Затем мы определяем функцию
В теле функции
Это - основа для определения простых текстур, но существует больше информации, пригодной для нода (как мы увидим в следующих разделах), так что мы сможем разработать несколько красивых продвинутых эффектов. В следующем разделе мы создадим чуть более сложный нод, который формируется на тех же принципах, что мы видели раньше, но создаёт более полезные узоры.
Регулярное заполнение
Текстура шахматной доски является, возможно, самой простой текстурой, которую Вы можете себе представить и, следовательно, часто используется в качестве примера при программировании текстур. Поскольку Блендер уже имеет встроенную клетчатую текстуру (начиная с версии 2.49, в текстурном контексте окна нодов), мы хотим пройти на один шаг дальше и создать текстурный нод, который отображает не только текстуру шахматной доски, но может заполнять (tilings) также треугольниками и шестиугольниками.
from Blender import Node,Noise,Scene
from math import sqrt,sin,cos,pi,exp,floor
from Blender.Mathutils import Vector as vec
# создаёт регулярное заполнение для использования в
качестве цветовой карты
class Tilings(Node.Scripted):
def __init__(self, sockets):
sockets.input = [Node.Socket('type' ,
val= 2.0, min = 1.0, max = 3.0),
Node.Socket('scale' ,
val= 2.0, min = 0.1, max = 10.0),
Node.Socket('color1',
val= [1.0,0.0,0.0,1.0]),