Гексагональная сетка переменной плотности или знакомство с Rhino/grasshopper

Apr 13, 2014 21:20

Полностью параметрическая модель силовой конструкции стола в Version 5 SR8 64-bit
Для параметрического моделирование использовал Grasshopper 0.9.0072


залить картинку на форум

Мое первое знакомство с данными продуктами очень позитивное, однако:
"В грассхоппере можно сделать многое, а что нельзя, можно сделать скриптом на C# или VB"
Первое что оказалось сложно сделать средствами самого грассхоппера, это натянуть гексагональную сетку на поверхность.
Нашел готовое решение в виде скрипта: hexy01_0043.ghx
далее манипулированием контрольных точек, можем добиться каких угодно растяжений и сжатий, в принципе возможны и скручивания. т.е. поверхность может быть любой, но не должно быть самопересечений. Что уже в принципе дает массу возможностей:



фотохостинг

Далее делаем проекцию этой поверхности на плоскость XY:


хостинг изображений

Далее нужно было создать 4 группы гексагонов, и ранжировать их.


хостинг картинок для форумов

Для этого я использовал возможность грассхоппера Point in Curve.
однако тут же пришлось допиливать результат собственноручным скриптом:

Private Sub RunScript(ByVal x As List(Of Object), ByRef A As Object)
For i As Integer = 0 To x.Count - 1
If x.Item(i) <> 2 Then
A = 0
Return
End If
Next
A = 1
End Sub

Таким образом сразу весь гексагон либо внутри (А = 1) либо снаружи (A = 0)
Строим выдавливанием "столбики", все это контролируется средней высотой поверхности в зоне центров гексагонов соответствующего ранга. Для определения зоны, делаем проекцию, используем Closest Point on Surface получаем UV координаты и находим высоту уже оригинальной поверхности в конкретной UV точке.


хостинг изображений png

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


image uploader

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


фото хостинг

Файл грассхоппера:
http://www.sendspace.com/file/ar4477
файл тестовой сцены:
http://www.sendspace.com/file/kbva6y
Previous post Next post
Up