본문 바로가기

Workshop Index

그라스호퍼 컴포넌트 챌린지 & 코딩(Python Version) (입문자용)

반응형

#RhinoGrasshopperPython Challenge!

플레이리스트

그라스하퍼 그리고 코딩(Python) 그라스호퍼 컴포넌트 챌린지 & 코딩 Design Scripting Workshop -youtu.be/Tx6uxbjFjnA

NJ's Computational Design Lecture series -http://bit.ly/2SgBRq0

다음 브런치 디자인(Design) & 데이터(Data), 컴퓨테이셔널 디자인 -http://bit.ly/2OCfJ8P

네이버 카페 -cafe.naver.com/codefordesign/83?boardType=L


강의제목:

라이노 그라스하퍼 컴포넌트 챌린지 그리고 코딩

 

이런 걸 배울 수 있어요:

라이노와 그라스하퍼의 문법의 이해

라이노 그라스하퍼를 배울 수 있어요
Python 기초 문법
컴퓨테이셔널 사고
파라메트릭 / 제너레이티브 디자인 스크립팅
지오메트리의 생성과 수정


이런 분들에게 추천해요

건축 혹은 3D 디자이너 중, 코딩을 공부하고 싶으신 분들
컴퓨테이셔널 지오메트리를 공부하고 싶으신 분들
파라메트릭 / 제너레이티브 디자인을 공부하고 싶으신 분들
컴퓨테이셔널 디자인을 공부하고 싶은 신 분들~


선수지식이 필요하다면 무엇인가요?

Rhino3D -#Grasshopper그리고CSharp02. 라이노의 문법 그리고 그라스하퍼 -link


카테고리

개발 / 프로그래밍 / 그래픽 / 크리에이티브

 

강의 수준

입문

초급 / 중급이상

 


 

 

21 - Polyline, Interpolate, Nurbs Curve, Length, Divide Curve - Video link

난이도: ★★☆☆☆

포인트들이 모이면 커브를 만들 수 있어요. 라이노에서는 폴리 라인도 커브의 하위 class로 보고 있죠. 즉 커브가 좀 더 포괄적인 개념인 것이죠.

첫 번째로, 인풋 V는 Vertices로서 폴리 라인 혹은 커브의 정점들을 이야기하죠. 즉 각각의 포인트들을 연결해서 폴리 라인을 만들고, Nurbs의 단계 즉 Degree를 적용함으로 정점의 관계를 보간하여 커브를 생성해주죠!

두 번째로는, 커브의 길이와 커브를 여러 개의 포인트로 나누어(미분) 볼 수 있고, 그 포인트들의 길이를 다 더하면(적분)하면 길이를 알 수 있어요!

 

 

# Polyline import rhinoscriptsyntax as rs 
a = rs. 

# Interpolate import rhinoscriptsyntax as rs 
a = rs. 

# Nurbs Curve import rhinoscriptsyntax as rs 
a = rs. 

# Length 1 
import rhinoscriptsyntax as rs 
a = rs. 

# Length 2 import rhinoscriptsyntax as rs 
a = rs.DivideCurve(curve, num) 
dis = 0.0
for i in range(len(a)-1): 
	dis += rs.Distance(a[i], a[i+1]) 
	theDis = dis;

20 - Line, End Points, Length - Video link

난이도:★☆☆☆☆

오늘은, 라인에 대한 기초적인 컴포넌트를 알아볼까요?

첫 번째로, Line 컴포넌트네요, A와 B는 포인트를 인풋으로 받고, 두 개의 포인트를 연결한 선을 반환하면 되겠죠?

두 번째로는, 인풋 C, 즉 커브를 받는데, 여기서는 L로 라인을 받기로 해요. 그리고 S와 E, 즉 Start와 End 점을 반환해주는 것이죠. 첫 번째 컴포넌트의 반대라고 볼 수 있어요!

사실 포인트로 라인 데이터를 생성하고, 다시, 라인 데이터에서 포인트 데이터를 재 추출하는 훈련을 하는 것은 결국 라인은 점에 대한 라인의 표상이라 볼 수 있고요. 점을 추출하고 변형하는 것이 지오메트리를 수정하는 아주 기본이 되는 기초라고 볼 수 있어요!

그리고 마지막으로 Length 컴포넌트는 선의 길이를 반환해 주겠죠? 우리는 간단한 라인이기 때문에 B에서 A를 빼면 길이가 나올 거예요!

# Line import rhinoscriptsyntax as rs 
line = rs. 

# Start / End Point 
import rhinoscriptsyntax as rs 
sPt = rs. 
ePt = rs. 

# length 
import rhinoscriptsyntax as rs 
length = rs.

 

 


! 라이노의 문법 그리고 그라스하퍼 

참조 비디오 - youtu.be/NlRDyHMUkvc

 

라이노의 모델링 데이터의 구조, 그리고 어떻게 Point부터 Line, Polyline, Surface, Mesh까지 어떻게 연결이 되는지 함께 알아보아요! 이 문법이 중요한 이유는, API를 이해할 수 있고, 알고리즘을 구성할 때, 이 문법에 맞춰서 데이터를 다루어야 해요! 

00:52 - 라이노 인터페이스

13:21 - 라이노 문법의 이해

26:20 - 그라스하퍼 인터페이스와 생태계


15 Data Structure List / List 컴포넌트 이해하기!

 

 

 

* 포인트 2D (3D) Grid 왜 중요할까요?

워크숍:

RhinoPython 05 Point Gird 2D / 라이노 파이썬 05 2D포인트 그리드 - link

RhinoPython 06 Point Gird Pattern / 라이노 파이썬 06 2D, 3D포인트 그리드 패턴 - link



참조:

자료구조, 픽셀, 복셀 / Data Structure for design , pixel and voxel data structure 2/2 - link

QnA 14, 복셀(Voxel)과 컴퓨테이셔널 디자인 그리고 건축 디자인 - link

 

* 1차원 함수 / 1D function 왜 중요할까요?

RhinoPython 04 Function 1D / 라이노 파이썬 04 1차원 함수 1/2 - link

RhinoPython 04 Function 1D / 라이노 파이썬 04 1차원 함수 2/2 - link

 

 


 

 

14 -Fibonacci  컴포넌트 만들기

 

13 - Stack Data 컴포넌트 만들기

 

12 - Jitter 컴포넌트 만들기

 


11 - 데이터 Random(무작위), 현실적인 예?!

Random은 매우 유용한 함수죠! 그라스 하퍼 컴포넌트와 Python에서 어떻게 만들 수 있는지 알아보아요!

 

 

 

00:00 - Random에 대한 정리, 그리고 이전 비디오 보충 설명

01:13 - Random의 현실 적인 예는?

02:22 - If Statement / 조건문

05:14 - 데이터 시각화 하기

08:36 - Nested if statements / 중첩 조건문

10:09 - 마무리 요약

 

 

10 - 데이터 Random(무작위) 분석하기, Python

00:00 - Python Date Recorder / 파이썬으로 데이터 기록하기

06:11 - 확률로서의 Random

09:38 - 예를 들면

10:36 - Random에 Domain(범위) 적용 하기

11:14 - 작은값(Min) 큰값(Max) 구하기

15:14 - 포인트로 시각화 하기

17:23 - Python으로 Random Points 만들기

21:23 - 마무리

 

 

09 - 데이터 Random(무작위) Python

00:00 - 파이썬 컴포넌트로 Random 만들기!

00:13 - Domain 개념 복습

00:54 - Seed의 개념

01:44 - Random 컴포넌트 사용 하기

03:43 - Python으로 Random 만들기

05:08 - Random 모듈 가져 오기

07:26 - Date Recorder / 데이터 기록하기

09:45- Random 그리고 확률


Series 그리고 Range - Video link

난이도:★★★☆☆

그라스하퍼 컴포넌트 챌린지는 아무래도 그라스 하퍼에 익숙한 여러분들이 코딩을 좀 더 쉽게 이해하고 재미를 붙일 수 있도록, 그라스 하퍼 컴포넌트를 Python으로 만들어 보는 과제입니다!

시리즈(Series)와 레인지(Range) 함수를 만들어 볼까요?

 

def Series(S, N, C) : 
    result = [] 
	# your code goes here 
	# ...
	return result 

def Range(Dmin, Dmax, N): 
    result = [] 
    # your code goes here 
    # ...
    return result 

print(Series(0, 1, 100)) 
print(Range(0, 1, 100))

 

08 - 데이터 구조 Range(Domain), GH 컴포넌트 & Python

1차원의 데이터 혹은 공간정보를 나눌 때, Domain을 활용한 방법은 너무 나도 많이 쓰고 있어요. 쉽게 설명하면, 끝점에서 시작점을 빼서, 그 길이를 구하고 그 길이를 N으로 나누어 몇 등분으로 구획할 것인가를 정할 수 있어요 어떻게 디자이에 활용될 수 있는지 함께 알아보아요!

 

00:00 - 컴포넌트로 Range 만들기!

00:10 - Domain 만들기

02:33 - Domain의 중요성

04:02 - Python으로 domain 만들기

06:16 - For loop 구현 하기

09:25 - Point로 시각화 하기

09:41 - Domain의 중요성 요약

10:47 - 마무리(Series & Range)


07 - 데이터 구조 List, Python ,Series 만들기

00:00 - 파이썬 컴포넌트로 Series 만들기!

01:07 - For loop 만들기

05:54 - 데이터 담기

08:10 - 상수를 변수로

09:53 - 파이썬 컴포넌트로 Point 만들기!

11:11 - List에 따른, 컴포넌트의 반복 실행 문제

12:54 - For loop 구현 하기

14:55 - 요약하면


06 - 데이터 구조 Series , GH 컴포넌트

00:22 - 여러 개의 포인트를 위한 데이터 구조는? Series

03:09 - List와 Item의 데이터 매치

04:39 - 여러 개의 아이템을 리스트로 만들기


실행 / Execution 

난이도:★☆☆☆☆

다음의 차이가 무엇일까요?  프로그래밍에서 왜 중요할까요?

10 * (2 + 10) - GetRandomNumber()

(10 * 2) + 10 - GetRandomNumber()

 

05 - 실행 순서의 중요성! 

00:00 - 일반적인 컴퓨테이셔널 디자이너가 하는 일들

00:24 - 실력이 발휘되어야 하는 지점

01:18 - 계산 순서

02:16 - 변수의 중요성

04:43 - 다른 방식으로 한다면?

04:50 - 변수명을 선택할 때… 예약어 / 숫자…

06:25 - 요약하면,

07:16 - 그라스 하퍼 컴포넌트로 만들기!


Point (Construct Point & Deconstruct Point)

난이도:★☆☆☆☆

모든 그래픽 모든 디자인의 기본 중의 기본인 포인트!! 그라스하퍼에도 포인트를 만드는 컴포넌트가 있죠.

Construct Point과 Deconstruct Point을 코드로 만들어 볼까요??

Construct Point는 XYZ의 각각의 숫자를 인풋으로 받고 아웃풋으로는 Point 3d 오브젝트를 리턴하네요!

반대로 Deconstruct Point는 포인트를 인풋으로 받고, 아웃풋으로는 X Y Z각각의 요소를 숫자로 반환해 주네요!

#Construct Point 

import rhinoscriptsyntax as rs 
pt = rs. # Deconstruct Point 

import rhinoscriptsyntax as 
rs pt = rs. x = pt[0]
y = pt[1]
z = pt[2]

# Point Class import Rhino as r 
class MyPoint: def __init__(self, x, y, z): 
    # your code goes here 

def getRhinoPoint(self): 
    # your code goes here 
    # pt return pt 

myPt = MyPoint(x, y, z); 
print(myPt) 
pt = myPt.getRhinoPoint()

 

04 - Point 분해하기

00:28​ - 포인트 분해하기, Deconstruct Point

02:44​ - Python으로 만들기 / .PointCoordinates()

04:55​ - GUID 설명

06:05​ - 데이터 구조에 맞는 for loop 구현하기

09:05​ - 데이터 저장 하기

10:16​ - 공부 방법??!!

10:53​ - 데이터 내보내기

 


03 - Point 만들기

00:00​- 포인트 만들기

01:13​- Number Slider / 숫자 인풋

02:06​- 화면 렌더링 옵션

02:56​- float 숫자 만들기

03:48​- Python으로 Point 만들기

04:27​- Python 기본 문법 참조 link -https://youtu.be/cIW1fsb8ITs?list=PLw...

05:28​- rhinoscriptsyntax API 사용 addLine()

06:43​- Preview 끄기

06:57​- Python 컴포넌트, 데이터 내 보내기

08:16​- 코딩 공부 핵심: 반복

 


Point

난이도:★☆☆☆☆

프로그래밍은 기본적으로 절차를 따라서 실행이 되죠. 맞아요! 순서대로 실행이 된다는 이야기입니다. 그래서 입력이 있으면 출력이 있게 되는 것이죠. 입력과 출력을 설계하는 것이 프로그래밍일 수 있어요.

 

디자이너들은 형태를 만들고 수정하는데, 형태를 정의하는 가장 기본단위가 무엇일까요? 어떻게 입력을 받을 수 있을까요? 라이노 장면상에 있는 포인트를 그라스하퍼로 가져와 볼까요?

 

02 - Point 가져오기
그라스하퍼에서 가장 기본적인 포인트 가져오기

00:21​- 그라스하퍼 실행

01:10​- 라이노 화면 조정

……………………………………….

01:30​- 포인트 가져오기

02:06​- 거의 모든 컴포넌트는 함수다! 인풋 그리고 아웃풋

03:38​- Internalize data / 데이터를 GH 컴포넌트에 저장하기

 


01 - 들어가면서

00:00​- 배경 설명

00:24​- 초보자를 위한 그라스하퍼 / 파이썬 강의

00:40​- 선수 과목 : 파이썬 기본 문법

02:26​- 멤버십 가입 - 워크숍 관련 라이브 / 질문 / 가이드...


기초 Python 문법 참조 공부 자료

- Rhino Python 01 Basic Syntax - link

- Python 기초 문법 수업 참조 01 한국어] Rhino Python / 라이노 파이썬 -link

- Jupyter notebook / 디자이너를 위한 파이썬 01 주피터 노트북 -link

Python Basic / 디자이너를 위한 파이썬 02 파이썬 기초 1/2 -link
Python Basic / 디자이너를 위한 파이썬 03 파이썬 기초 2/2 -link

[한국어] 1. Introduction to Computational Design: Data, Geometry, and Visualization Using Digital Media

27:28- 그라스하퍼(GH) 플러그인 설명

27:53- Think Python 추가 자료

-----------------------------------------------------------------------

29:49- 파이썬(Colab)환경 혹은 그라스하퍼(GH)환경

31:14- 내가 생각하는 파이썬?

32:25- 변수(Variable) 그리고 자료형(type)

41:26- 숫자(Number)

46:27- 주석(Comment)

48:16- 문자열(String)

1:01:10- 변환(Casting)

1:04:13- 조건문(Conditional Statement)

1:08:31- 사족, 안 되는 게 당연하다!, 분량을 채우자

1:12:05- 사족, 소프트웨어는 평생 공부? 새로운 것 다시 공부?

1:14:31- 사족, 어차피 해야 한다면…. 나의 영어공부…

1:19:10- 컴퓨테이셔널 팅킹(Computational Thinking)의 하나의 단면

1:20:32- 반복 1 (Loop)

1:27:45- 반복 2 (While)

1:32:06- 반복 3 (double loop)

1:34:19- 좌표계(Coordinate Systems)와 반복(loop)

1:36:13- 사족, 내가 생각하는 코딩 공부의 정석?

1:37:19- 데이터 구조(Data Structure) List

1:42:29- 데이터구조(Data Structure) String as a list

1:43:26- 데이터구조(Data Structure) List 예제 1

1:48:08- 데이터 구조(Data Structure) List 예제 2

1:49:15- 사족, 내가 비보이 하면서 배운 교훈

1:52:40- 사족의 요약

1:52:53- 데이터 구조(Data Structure) Tuple

1:53:15- 함수, Function, 어떻게 코드를 디자인할까?

1:57:29- 랜덤 Random 그리고 input parameters

1:58:22- 함수 예제, Math, Datetime

1:59:40- 추가 공부 자료

2:01:13- 추가 자료 Domain, Series, Index, Remap, String… 과제

2:04:04- 과제 설명

반응형