15_Узлы сцены.

Как работать со всеми параметрами всех объектов через интерфейс Сверчка.

Работа со сценой в блендере и работа внутри Сверчка разнятся, хотя сверчковые раскладки тоже внутри сцены. Внутри Сверчка мы имеем дело исключительно с вершинами, полигонами, матрицами и рёбрами, а в сцене блендера мы имеем много других параметров, доступ к которым обычно происходит из интерфейса блендера, это и mark seam и габариты и поворот объектов, текстурирование, поведение частиц. Много всего, но мало кто знает, что из Сверчка можно иметь к этому всему доступ не только из пользовательского узла scripted node, который находится в разделе генераторов, но и через раздел Scene в меню Сверчка (Ctrl+Space), там узлы: Mesh instancer, Object in, Frame info, Empty out, Get|Set property, Vertex group, Scene raycast, Object raycast, Vertex color; а в разделе alpha есть следующие узлы сцены: Skin mesher, Curve viewer, Typography viewer, GetObjectID, SetObjectID, SortObjectID, BMeshProps, Point on mesh, FilterObjectID.



`Generation`

И так, чтобы ориентироваться я разбил файл на раскладки, в первой мы создадим геометрию, выведем её в сцену, это будет раскладка generation, переключаться будем как всегда с панелью Сверчка в раскладке узлов, см. рис. Чтобы начать - скачайте раскладки вот отсюда, между раскладками переключаемся кнопками на панели Сверчка, чтобы отображать геометрию нужно активировать `глаз` в этой панели.

И так, генерация. Создание геометрии коротко состоит из генерации подразделённой плоскости, небольшого смещения её, применения к матрице в качестве положения, вращения и масштаба, тех же самых векторов, но с изменёнными значениями для каждого сокета матрицы, будь то положение, вращение или масштаб. Формулы могут быть любыми и параметризация формул тоже. А геометрия может также быть любой, ведь пока что мы работаем с объектами, то есть матрицами. Предлагаю поэкспериментировать со значением параметра "делитель" из раскладки.

`Hide`

Следующая раскладка под именем hide. Задача состояла в том, чтобы собрать объекты из сцены, отсеять те, которые не сгенерированы сверчком (по именам), затем спрятать только те, что будут ниже нуля.

Используем узел get dataobject (GetObjectID из alpha раздела) для того, чтобы собрать все объекты с сеткой в сцене. Сеточные объекты (Mesh) выбираются выпадающим меню на узле. Как мы видим, можно выбрать любой пункт, не только объекты, собственно внедрить любой объект открытого бленд-файла. Filter data object вместе с set data object дают нам отсеять по имени объекты, кем бы они ни были. Затем мы добываем буленовы значения для скрытия объектов, не присваивая ничего, проверяем значения при помощи узла SetObjectID, вставляя значение логической проверки 'location.z < 0', так у нас будет выводится правда на значения положения объектов ниже нуля и затем мы присвоим эту правду сокрытию этих объектов, используя второй узел SetObjectID с параметром hide, что означает скрыть. Если вы перед этим анимировали параметр "делитель" в раскладке генерации, то запустите анимацию, посмотрите как скрываются автоматически объекты.

Вывод:

Зная параметры можно тонко упрвлять сценой из Сверчка, а узнать параметры можно из консоли Блендера, используя автодополнение, Ctrl+Space. Посмотреть же что мы должны вводить в консоль перед автодополнением можно при помощи узла Sthetoscope из вкладки меню 'text' и присоединив к узлу GetObjectID, которым собирали объекты. Он выдаст строчку 'bpy.data.objects['Mu_0']', после неё в консоли ставим точку и автодополняем текст Ctrl+Space, ищем нужный параметр, вписываем, нажимаем ентер и смотрим значение, затем его используем в сверчке в узле SetObjectID.

`boundary`

Берём объект сюзанны из сцены. Узел bmesh properties говорит нам является ли ребро границей. Objects to mesh выдаст нам сетку и мы сможем отсеять рёбра по качеству границы ребра, остаток заполняем при помощи fill holes и чистим геометрию, так получаем аналог модификатора в 3DsMAX под названием caps.

`closest point`

Достаём как и прежде описано при помощи трёх узлов объект Сюзанны. Создаём какой-то объект, в раскладке у нас куб, и тут вступает в работу узел closest point on mesh, который ищет точки близкие к исходной на нашем объекте, будь они на грани или ребре, что само по себе хорошо.

`raycast`

Узлами get_data_object, set_data_object, filter_data_object, objects_to_mesh как и прежде достаём данные объектов с конкретными именами, а также одну пустышку Empty. List match формирует равнодлинные списки положения пустышки и вершин круга под названием `куб`. Затем самое главное - узел raycast проецирует вектор от точек пустышек до точек круга-куба на объект Сюзанны. UVconnect соединяет точки проекции, List Item фильтрует нам по индексам полигоны пересечения вектора и сюзанны. Это можно использовать где угодно

Вопросы задать можно на github, vk.com, plus.google.com.



Да пребудет с вами сила Сверчка.

  • Development!
  • Development!!
  • Development!!!
  • /Steven Anthony Ballmer/
  • Архитектор, дизайнер и Человек...
  • Все права защищены (с)
    • Земля
    • 2014 г.