09_Ферма в Сверчке - легко.

Ферма начинается с поверхности.

Давайте пройдёмся по раскладке примера пространственной конструкции, вернее её заготовки, потому что я не применял Adaptive edges чтобы сделать рёбра фермы объёмными, что означало бы только придание объёма, для просчёта конструкции достаточно такого формата, что здесь приведен. Впрочем, нет никакой причины не применить adaptive edges. Начнём с трёх кривых, которе будут задавать нашу поверхность. Здесь описан процесс создания поверхности. Останавливаться не станем. Единственный момент - флаг сортировать в узле ввода объекта object in.

Теперь нам надо определить нижний пояс фермы, длы того, мы определяем центры полигонов, чтобы ферма имела треугольную форму.

Опускаем центры полигонов, чтобы получить точку схода каждого "треугольника", а по факту обратной пирамиды.

Нам надо разбить поверхность по полигонам чтобы действовать с каждым полигоном индивидуально.

Проблема совместимости.

Четыре на одного.

"Хьюстон, у нас проблема" (с). Вот тут понеслось. У нас дилемма - есть серия точек, 54 штуки внизу одним объектом и 54 объекта по 4 точки вверху. Картинка 04 - что вышло по нижнему поясу, 05 - что вышло по верхнему когда мы взорвали полигоны Polygon Boom.

Первым делом приведём списки в один уровень - каждому объекту должен соответствовать объект. Для разбиения плоского списка удобнее всего использовать узел List Split, пока это даже единственный вариант разбить список.

Но проблема несоответствия заключена в том, чтоузел UV connect может соединять только полностью соответствующие списки, иначе обрывает соединение на коротком списке. Для правильного соединения каждый наш объект из 54 должен иметь по 4 (четыре) точки сверху и четыре снизу. Нам поможет узел List Match, который приведёт списки в обоюдное соответствие. В режиме для обоих списков "repeat" мы можем на втором уровне данных (level:2) повторить точки каждого объекта столько раз, сколько их в первом сокете.

Проблема осталась, ибо сейчас соединив UVconnect мы получаем либо сквозное соединение по рядам и столбцам поверхности, либо топтание линии на месте, что явно нас не устраивает. Надо сделать так, чтобы каждый список и верхний пояс и нижний разбились по парам, чтобы мы могли соединить рёбра между каждыми двумя точками, для этого подходит узел ZIP, старый добрый узел, который не раз спасал в трудных перепетиях.

Получаем наклонные связи. Как получить нижние пояса? Очень просто, List Split.

Окна.

Окна в крыше.

Тепер окна в поверхности, которые нам предстоит сделать:

Не будем усложнять задание, привяжем степень раскрытия каждго окна на квадрате от его удалённости от нуля координат. Замечу, что мы можем сделать точки притяжения при желании. Определяем это удаление при помощи узла Vector math. В нём выбираем length, что означает длина. Затем меняем его значение по формуле, определяющей максимум (n[1]) и минимум (n[0]) раскрытия и множитель (n[2])

Остаётся использовать узел offset, в сокет offset которого включить наши преобразованые величины открытия. И затем выдавить Solidify. Для удобства я вывел параметры в отдельный островок - количество делений по U/V, при том, деления по V используются для деления на объекты в соединении нижних поясов. Высота ферм так же вынесена отдельно.

Вывод в таблицы.

Первый заход.

Дополнение от 04-07-2014.

Добавил вывод в таблицу CSV, хотя пока не оптимизировал вывод. помню, что раньше таблица формировалась иначе, или я что-то путаю, или ребята поменяли узел вывода текста. Пока что он выдаёт не очень правильный результат, но выдаёт. пришлось растаскать по столбцам длины рёбер. В принципе выписка получается толковая, в 3Д окне мы можем подсветить рёбра и плоскости с их индексами. на самом деле, удобно. На изображении 16 видно, как посмотреть индексы рёбер - нам поможет в этом узел Viewer INDX, а также мы уплощаем список при помощи list del 2,3 + List Join со включённым wrap. Так из многообъектного списка получаем однообъектный - смотри урок 04 соединение объектов. Местами используем Mesh join и Apply mesh, а для сокращения количества индексов на мониторе используем List Item с узлом Range int, для генерации серии индексов для отображения. В текущей версии сверчка мы ограничены по структуре данных, и не можем описывать каждую грань с личным индексом и более умно, это в планах и это очень трудоёмко, может даже не будет к версии 1,0,0. Но суть не в том. Для формирования длин, нужно брать дистанцию между точками, можно использовать List First Last для определения противоположных точек, или List item со значениями 0 и -1, то есть первая и последняя, но тогда у нас два узла задействовано, а узел firstlast достаточно одного. Vector math меряет расстояние, выводим в таблицу. Идеально бы сделать узлы decomposer, который сейчас в разработке, а так же сам текстовой вывод доработать, чтобы было вообще как в сказке. На рисунке 17 видно что мы получили после ручного форматирования.

Столбцы это объекты.

Обновление.

Дополнение от 06-07-2014.

Наконец-то формируем таблицу. В последней версии на гитхабе узел text out изменён. теперь он выводит пообъектно в строчки, не важно сколько у вас сокетов. Первое что следует учесть в просчёте CSV excel таблицы, это объекты - сколько у нас столбцов, столько и объектов должно быть. List Split снова (рис 18). Учтите так же, что список уплощается, нет ветвления в екселе, хотя над этим можно подумать. И так, чтобы разделить пообъектно, нам именно здесь надо ввести формулу в подходе красных связей, поскольку у нас по четыре связи на квадрат, имеем *4. Хотя тут как кому нравится, можно сделать число четыре делителем списка List Split, тогда получим по четыре связи в одном объекте. Наверное так даже лучше. Тем не менее, в указанном примере я разбил по рядам структуры, то есть вдоль зелёных поясов нижних. каждый пояс объединил связи. впрочем, поскольку порядок следования сохранился, не трудно понять, где какая связь находится и расписать. В будущем этот процесс возможно автоматизируется. Тем не менее, результат виден на рисунке 19. Для разделения не по длине, а по ширине конструкции, нужно внести корректировку в вводимые пеерменные, параметры, рисунок 20. Здесь добавлено количество делений по длине конструкции, количество полигонов, а не вершин, как задаёт integer целое число. В общем конструкция для наглядности изменена, рисунок 21. Так же добавлена зависимость нижнего пояса от расстояния центра полигона от начала координат, смотри объяснение выше, я взял это от степени раскрытости окон покрытия.

Итоговый файл можно скачать отсюда

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

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