Posted on

G007 – NURBS Curves

Apa itu curves? Terjemahan langsungnya adalah kurva, atau garis lengkung. Namun curves dalam Grasshopper juga meliputi garis lurus dan garis zigzag, seperti halnya kurva titik lebur dan titik didih H2O yang memperlihatkan garis-garis lurus dan diagonal. Curves adalah kumpulan titik (koordinat) yang digabungkan menjadi satu geometri. Terdapat setidaknya 5 jenis curve pada Grasshopper, yang dijelaskan dengan baik di dalam Grasshopper Primer. Dalam artikel ini kita akan membahas tentang NURBS Curves saja.

NURBS

Jenis curve yang pertama adalah NURBS atau Non-uniform Rational Basic Splines. NURBS ini adalah yang dikategorikan sebagai Topological Curves oleh Greg Lynn (1999). Sebagai contoh, kita bisa memperhatikan gambar di bawah ini.

Gambar 1. Contoh NURBS pada Rhinoceros

Ingat kegiatan menghubungkan garis di TK atau SD? Atau kegiatan menggambar kurva koordinat cartesius di SMP dan SMA? Proses pembuatan kurva vector di dalam software Rhinoceros persis seperti kedua kegiatan tersebut. Namun, dalam pembuatan NURBS, ada metode penggambaran yang sedikit berbeda. Lima titik pada gambar contoh di atas tidak semuanya ‘dilewati’ ataupun ‘dihubungkan’ oleh kurva NURBS. Lima titik berjauhan yang digambar pada Rhino ini menjadi penentu bentuk curva NURBS, bagaikan tali penarik, gravitasi, ataupun medan magnet yang memberikan tarikan dan dorongan (lihat definisi Topological Curves di buku Animated Form karangan Greg Lynn, 1999). Posisi titik-titik tersebut, yang disebut dengan parameter, mempengaruhi sebuah kurva sesuai pada knot vectors, degrees, dan beratnya. Untuk memudahkan memahami apa itu knot vectors dan berat pada NURBS kita harus memahami matematika dasar Grasshopper. Tetapi kita bisa memahami apa itu Degree dan efek dari knot-vector otomatis dengan komponen NURBS biasa (VDC input) di dalam Grasshopper.

Pada Grasshopper versi Agustus 2014 yang saya gunakan (iya, memang sudah lama), ada dua komponen yang bisa dipakai untuk membuat NURBS Curve: NURBS Curve biasa dengan VDC input dan NURBS Curve dengan KWC input.

NURBS Curves biasa (yang ada di grasshopper versi lama) memiliki tiga input yaitu V (volatile control-point), D (degree), dan P (periodic); serta memiliki tiga jenis output yaitu C (curve), L (length), dan D (domain, atau interval dari 0 ke nilai numerik kurva). Input V adalah titik-titik yang menjadi parameter kurva. Input ini bisa kita gambar dengan Grasshopper atau kita gambar langsung di Rhinoceros sebelum kita masukan ke Grasshopper dengan bantuan komponen <Point>. Sementara itu input D mempengaruhi apakah kurva menjauh atau mendekati titik, apakah lengkung, berapa banyak radian lingkaran yang membentuk kurva tersebut, dan sebagainya. David Rutten, programmer yang mengembangkan Grasshopper dan banyak membuat perubahan komponen Grasshopper, menjelaskan pengaruh input D terhadap kurva NURBS yang dihasilkan di dalam website dan forum resmi grasshopper. LIFT menjelaskan juga dalam Grasshopper Primer, sehingga kita bisa mengadaptasinya pada contoh yang kita punya. Dengan memainkan input D, kita akan memperoleh hasil kurva berikut ini:

Gambar 2. Pengaruh input D (degree) kepada bentuk kurva.

Mungkin ada di antara sobat sekalian yang mendapatkan hasil curve berupa closed-curve seperti pada gambar berikut:

Gambar 3. Bentuk closed-curve NURBS

Hal ini disebabkan oleh setting Boolean pada input P (periodic) yang diatur True. Untuk mengubahnya menjadi kurva terbuka, klik kanan pada input <NurbsCurve/P> kemudian klik Set Boolean dan klik False. Selanjutnya kurva akan tampak seperti pada gambar pertama.

Gambar 4. Cara mengubah setting boolean pada input P (periodic)

Kita akan skip dulu pembahasan komponen NURBS dengan KWC input sampai kita membahas soal matematika dasar dan scripting. Jika berminat, pembahasan soal knot vectors bisa dilihat di website resmi McNeel, wikipedia, food4rhino, atau Grassshopper3D.