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 manual | Grasshopper | Dynamo | Python | |
|---|---|---|---|---|
| Loại | GUI | Visual scripting | Visual scripting | Code |
| Học nhanh | ✓ | ✓ | ✓ | Chậm hơn |
| Flexibility | Thấp | Cao | Trung bình | Tối đa |
| Dùng trong | Mọi ngành | AEC, Design | Revit workflows | Mọ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 textPoint— tham chiếu điểm từ Rhino
- 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ự
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
[Ả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 để:
- Thêm slider "Copies X" (1→10) và "Spacing" (1→5)
- Dùng
Seriescomponent tạo dãy vị trí XMovecác box dọc theo trục X theo spacing- 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