Grasshopper Reference
Grasshopper 컴포넌트/플러그인/데이터트리 레퍼런스
Grasshopper Reference 소개
Grasshopper 레퍼런스는 Rhino의 비주얼 프로그래밍 환경을 위한 종합 치트 시트로, 파라메트릭 디자인 워크플로의 핵심 컴포넌트를 다룹니다. 기본 섹션에서는 Series(시작값/스텝/개수)와 Range(도메인을 N+1개 값으로 분할)를 통한 숫자 생성, List Item(인덱스 기반 추출, 순환 지원), Dispatch(True/False 패턴 분리), Cull Pattern/Cull Nth/Cull Duplicates 필터링을 설명합니다. Remap Numbers는 슬라이더 값을 서피스 파라미터에 연결하고 데이터를 정규화하는 데 필수적인 도메인 간 값 변환을 다룹니다.
서피스 연산 섹션에서는 제어점 그리드로 NURBS 서피스 생성(Surface From Points, 보간 토글), Evaluate Surface로 UV 좌표에서 3D 점/법선/프레임 추출, Divide Domain^2를 활용한 Isotrim(SubSrf) 패널 분할, 여러 단면 곡선을 연결하는 Loft(Normal/Loose/Tight/Straight/Developable), 이중 외피 및 구조 간격 모델링을 위한 Offset Surface를 설명합니다. 데이터 트리 섹션은 {A;B;C} 경로 표기법, Flatten(모든 브랜치를 단일 리스트로 병합), Graft(항목을 개별 브랜치로 분리), Flip Matrix(행/열 전환), Entwine(여러 입력을 하나의 트리로 결합)를 다룹니다.
C#(RunScript, 타입 지정 파라미터, ref 출력)과 GhPython(Rhino.Geometry 접근, ghpythonlib.components로 GH 컴포넌트 호출) 스크립팅, Expression 컴포넌트의 인라인 수식도 포함됩니다. 플러그인 섹션에서는 Kangaroo Physics(Bouncy/Zombie Solver, 최소 곡면과 텐서일 구조 형태 탐색), Ladybug/Honeybee(태양 경로, 일사량 분석, EPW 파일 기반 에너지 시뮬레이션), Weaverbird(Catmull-Clark/Loop 세분화, 듀얼 메쉬, 와이어프레임 패턴), Lunchbox(Diamond/Hexagonal/Quad 패널, 수학적 서피스), Anemone 반복 루프를 다룹니다.
주요 기능
- 핵심 컴포넌트 레퍼런스: Series(시작/스텝/개수), Range(0-1 도메인 분할), Remap Numbers(도메인 매핑), List Item(인덱스 추출), Dispatch와 Cull Pattern(리스트 필터링)
- NURBS 서피스 연산: 제어점 그리드 기반 Surface From Points, Evaluate Surface(UV에서 점/법선/프레임), Divide Domain^2 활용 Isotrim 패널링, Loft 유형, Offset Surface
- 데이터 트리 완전 가이드: {A;B;C} 경로 표기법, Flatten(트리를 리스트로), Graft(항목을 브랜치로), Flip Matrix(행/열 전치), Entwine(입력을 트리로 병합), 매칭 규칙
- C# 및 Python 스크립팅: RunScript 타입 파라미터, Rhino.Geometry 점/평면/원 생성, ghpythonlib.components 브릿지, Expression 수학 함수
- Kangaroo Physics 플러그인: Bouncy/Zombie Solver, Anchor/Spring/Length/Pressure 목표를 활용한 최소 곡면 형태 탐색과 패브릭 드레이핑
- Ladybug/Honeybee 환경 분석: 태양 경로 다이어그램, 일사량 분석, 건물 에너지 시뮬레이션, EPW 기상 데이터 통합 주광 분석
- Weaverbird 메쉬 연산: Catmull-Clark/Loop 세분화, Stellate/Thicken, 듀얼 메쉬, 건축 파사드용 와이어프레임/윈도우 패턴
- 데이터 매칭 규칙(Longest List, Shortest List, Cross Reference)과 Graph Mapper(Bezier, Gaussian, Perlin 커브)를 활용한 파라메트릭 값 분포 제어
자주 묻는 질문
Grasshopper에서 Series와 Range 컴포넌트의 차이점은 무엇인가요?
Series는 시작값에서 고정 스텝으로 지정된 개수만큼 숫자를 생성합니다(예: Series(0, 30, 12)는 0, 30, 60, ..., 330 총 12개). Range는 도메인을 N등분하여 N+1개 값을 생성합니다(예: Range(0 to 1, 10)은 0.0, 0.1, ..., 1.0 총 11개). 균등 간격 시퀀스에는 Series를, 0~1로 정규화된 커브/서피스 분할 파라미터에는 Range를 사용합니다.
Grasshopper에서 데이터 트리란 무엇이고 왜 중요한가요?
데이터 트리는 {0;0}, {0;1}, {1;0} 같은 경로로 식별되는 브랜치에 리스트를 조직하는 계층적 데이터 구조입니다. 단순 리스트와 달리 데이터 그룹 간 관계를 보존합니다. 예를 들어 어떤 커브에서 분할된 점인지를 유지합니다. Flatten(브랜치 병합), Graft(항목을 개별 브랜치로), Flip Matrix(행/열 전환)를 이해하는 것이 다중 브랜치 데이터 처리의 핵심입니다.
Isotrim과 Divide Domain^2로 패널 서피스를 어떻게 만드나요?
서피스를 Divide Domain^2에 연결하고 U, V 분할 수를 설정합니다(예: U=10, V=5로 50개 UV 도메인 셀). Divide Domain^2 출력을 Isotrim(SubSrf)에 연결하면 각 도메인 셀에 대한 서브 서피스가 추출됩니다. Divide Domain^2의 서피스 입력을 우클릭하여 Reparameterize를 선택해 UV 도메인을 0-1로 정규화하세요. 건축 파사드 패널링의 기본 기법입니다.
Loft 유형별 차이점과 사용 시점은 무엇인가요?
Normal은 기본 로프트 서피스입니다. Loose는 입력 커브를 정확히 통과하지 않는 느슨한 근사입니다. Tight는 각 커브를 정확히 통과하도록 강제합니다. Straight는 대응점 사이를 직선으로 연결하는 ruled surface입니다. Developable은 왜곡 없이 평면으로 전개할 수 있는 서피스로 제작에 유용합니다. 로프팅 전 Flip 컴포넌트로 커브 방향(Seam)을 일치시켜야 합니다.
Grasshopper에서 Kangaroo Physics로 형태 탐색을 어떻게 하나요?
목표(Goal)를 Bouncy Solver(실시간 대화형) 또는 Zombie Solver(백그라운드 계산, 빠름)에 연결합니다. 주요 목표: Anchor(점 고정), Spring(탄성 연결), Length(선분 길이 목표), Pressure(공기압 팽창). 최소 곡면을 만들려면 메쉬 경계를 만들고 가장자리 꼭짓점을 Anchor로 고정, 모든 엣지에 Length 목표를 적용하면 솔버가 평형 형태를 찾습니다.
Flatten, Graft, Entwine의 차이점은 무엇인가요?
Flatten은 모든 트리 브랜치를 {0} 경로의 단일 리스트로 축소하여 원래 구조 정보를 잃습니다. Graft는 리스트의 각 항목을 개별 브랜치로 분리합니다({0}={A,B,C}가 {0;0}={A}, {0;1}={B}, {0;2}={C}가 됨). Entwine는 여러 별도 입력을 서로 다른 경로의 하나의 트리로 병합합니다. 각 점에서 독립적으로 원을 그리는 것처럼 항목별 독립 처리가 필요할 때 Graft를 사용합니다.
Grasshopper에서 C#이나 Python으로 커스텀 스크립트를 어떻게 작성하나요?
C#은 Maths > Script > C# Script를 사용합니다. RunScript 메서드에서 타입 지정된 입력(List<Point3d>, double)과 ref 파라미터로 출력을 받습니다. Python은 Maths > Script > Python Script에서 import Rhino.Geometry as rg로 기하학 클래스에 접근합니다. import ghpythonlib.components as ghcomp로 GH 컴포넌트를 Python에서 호출할 수도 있습니다. +/- 버튼으로 파라미터를 추가/제거하고 Type Hint로 데이터 타입을 지정합니다.
세 가지 데이터 매칭 규칙은 무엇이고 컴포넌트 동작에 어떤 영향을 미치나요?
Longest List(기본): 짧은 리스트의 마지막 값이 반복됩니다(A={1,2,3}, B={10,20}이면 A+B={11,22,23}). Shortest List: 가장 짧은 입력에서 처리가 멈춥니다(A+B={11,22}). Cross Reference: 모든 조합이 계산됩니다(A={1,2}, B={10,20}이면 {11,21,12,22}). 컴포넌트 우클릭으로 설정합니다. 입력 리스트 길이가 다를 때 파라메트릭 관계를 제어하려면 이 규칙을 이해하는 것이 필수입니다.