Skip to main content
Cập nhật lần cuối: 14/05/2026

Module 4 — Tư duy Tham số & Làm quen Grasshopper

Thời lượng: ~4 giờ · Độ khó: Cơ bản

Mục tiêu: Hiểu triết lý parametric, thoải mái trong môi trường Grasshopper và xây dựng definition đầu tiên kết nối Rhino ↔ GH.


4.1 — Tại sao cần Parametric?

Vấn đề của modeling tĩnh

Bạn dựng xong một mái che với 50 ô panel. Client muốn:

  • Tăng số ô từ 50 → 80 ✗ Làm lại từ đầu
  • Thay đổi hình dạng mái ✗ Xóa toàn bộ panel, chia lại
  • Thử 3 phương án kích thước ✗ Lưu 3 file riêng, không đồng bộ

Giải pháp Parametric

Thay vì vẽ kết quả, bạn viết công thức tạo ra kết quả đó:

Mái → chia theo U×V → tạo panel tại mỗi ô → scale theo slider

Thay 50→80? Kéo 1 slider, toàn bộ cập nhật ngay lập tức.

So sánh công cụ

Rhino manualGrasshopperDynamoPython
LoạiGUIVisual scriptingVisual scriptingCode
Học nhanhChậm hơn
FlexibilityThấpCaoTrung bìnhTối đa
Dùng trongMọi ngànhAEC, DesignRevit workflowsMọi nơi

Grasshopper nằm bên trong Rhino — mọi thứ bạn học về Rhino geometry đều áp dụng được trong GH.


4.2 — Giao diện Grasshopper

Mở Grasshopper: gõ "Grasshopper" trong Rhino Command Bar
┌──────────────────────────────────────────────────────┐
│ Menu Bar │ Component Panels (Params/Maths/Sets/...) │
├──────────────────────────────────────────────────────┤
│ │
│ CANVAS (khu vực làm việc) │
│ │
│ [Component]──wire──[Component]──wire──[Component] │
│ │
│ │
└──────────────────────────────────────────────────────┘
│ Status Bar: errors / warnings │
└──────────────────────────────────────────────────────┘

Các thành phần cơ bản

Component = khối chức năng, có inputs (trái) và outputs (phải):

Tên Component
├── Input A
├── Input B
└── Output C

Wire = đường kết nối dữ liệu từ output của component này sang input của component khác.

Parameter = component chứa dữ liệu (không xử lý):

  • Number Slider — thanh trượt số
  • Panel — hiển thị dữ liệu dạng text
  • Point — tham chiếu điểm từ Rhino
Thêm component nhanh
  • Double-click trên canvas → gõ tên → Enter
  • Hoặc kéo từ menu tab phía trên

4.3 — Kết nối GH ↔ Rhino

Reference Geometry từ Rhino vào GH

1. Thêm component Param (vd: Curve Parameter)
2. Right-click component → "Set one Curve" (hoặc "Set multiple Curves")
3. Click vào curve trong Rhino viewport
4. Geometry xuất hiện trong GH với đường viền xanh trong Rhino

Preview GH trong Rhino

  • Xanh lá = geometry đang active (selected)
  • Đỏ = geometry của component đang hover
  • Xám = geometry bình thường

Bake — Chuyển GH geometry sang Rhino vĩnh viễn

Right-click component (output geometry) → Bake
→ Chọn layer → OK
→ Geometry thoát khỏi GH, trở thành object Rhino thực sự
warning

Geometry trong GH không lưu trong file 3DM. Nếu bạn đóng file GH, geometry preview trong Rhino biến mất. Luôn Bake trước khi submit bản vẽ.


4.4 — Số học trong Grasshopper

Number Slider

Component quan trọng nhất trong GH — điều khiển mọi thứ:

Double-click vào canvas → gõ "10" → Enter = tạo slider với value 10
Kéo dải trượt → xem model cập nhật real-time
Right-click → Edit → đặt min/max/step

Expression (Toán học)

Một số component có Expression Editor để viết công thức:

Right-click input → Expression → gõ công thức
Ví dụ: x * 2 + 1 (x là giá trị đầu vào)

Hoặc dùng component Expression riêng biệt:

x = input A
y = input B
Công thức: sqrt(x^2 + y^2) → Pythagoras

Math operators

Addition (+)      → Component "Addition"
Subtraction (-) → Component "Subtraction"
Multiplication → Component "Multiplication"
Division → Component "Division"
Power → Component "Power"

4.5 — Panel & Watcher

Panel = terminal hiển thị dữ liệu — luôn kết nối Panel vào output để debug:

Double-click canvas → "Panel" → Enter
Kéo wire từ bất kỳ output nào → Panel sẽ hiển thị nội dung

Panel hiển thị:

  • Số = số và đường dẫn (path)
  • Text = chuỗi ký tự
  • Geometry = loại geometry và trạng thái

4.6 — Lưu và Quản lý File GH

Ctrl + S = lưu file .gh (separate từ file .3dm của Rhino)
File → Save As → .ghx (XML format, dễ đọc)

Best practice:

  • Đặt tên file theo dự án: ProjectName_ParametricFacade_v01.gh
  • Dùng Group (Ctrl+G) để nhóm các component liên quan
  • Thêm Text Note giải thích logic phức tạp

4.7 — Definition đầu tiên

Mục tiêu: Dùng slider điều khiển kích thước và vị trí một box trong Rhino.

Các bước:

1. Thêm: Number Slider "Width" (0→10, default 5)
2. Thêm: Number Slider "Height" (0→10, default 3)
3. Thêm: Number Slider "Depth" (0→10, default 4)
4. Thêm: Component "Box 2Pt"
5. Thêm: Component "Construct Point" → kết nối 3 slider vào X, Y, Z
6. Kết nối:
- Slider Width → Box.X
- Slider Height → Box.Z
- Slider Depth → Box.Y
- Origin (0,0,0) → Box.Base plane
7. Kéo slider → xem box thay đổi real-time
Hình minh họa

[Ảnh: Definition hoàn chỉnh với wire kết nối giữa các sliders và Box component]
[Ảnh: Box trong Rhino viewport thay đổi khi kéo slider Width]


Bài tập Module 4

Nhiệm vụ: Mở rộng definition trên để:

  1. Thêm slider "Copies X" (1→10) và "Spacing" (1→5)
  2. Dùng Series component tạo dãy vị trí X
  3. Move các box dọc theo trục X theo spacing
  4. Quan sát cách Panel hiển thị list vị trí

Nhận xét: Với 2 slider, bạn vừa tạo ra tham số hóa một dãy đối tượng — nền tảng của mọi GH definition phức tạp.

Liên kết kiến thức

Nền tảng cần nắm

Chủ đề liên quan