본문 바로가기

Workshop Index

Data Structure and Algorithm for Design and Research

- Open Lecture: https://open.kakao.com/o/s7INi2jf

- Playlist: https://www.youtube.com/playlist?list=PLweNVwGgDKEair4NVORvdpuKM2807b7jE 

 

Data Structure and Algorithm for Design and Research

 

www.youtube.com


- Level

Advaced

 

- Prerequisite

Python:

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

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

DigitalFUTURES, Python Basic - link

 

Class:

[#컴퓨테이셔널디자인 06] 쉽게 이해하는 클래스(Class) - link

[#컴퓨테이셔널디자인 40] 컴퓨테이셔널 사고와 파이프라인 위계 에이전트의 행동, 데이터 업데이트 관계성 (발췌 버젼) - link

[#컴퓨테이셔널디자인 31] SA 7.0 Lecture 5. 데이터 구조로서의 지오메트리 그리고 시각화 / Geometry as data and Visualization - link

Python For Designers 04 Class/ 디자이너를 위한 파이썬 04 파이썬 클래스 - link

 

Pixel & Voxel:

[#컴퓨테이셔널디자인 13] 자료구조, 픽셀, 복셀 / Data Structure for design, pixel and voxel data structure 2/2 - link

 

Graph:

[#컴퓨테이셔널디자인 13] 자료구조, 그래프 / Data Structure for design, Graph 1/2 - link

SA 7.0 Lecture 4. 이산 도시공간과 연결성 (그래프)/Discrete Urban Space and Connectivity (Graph) - link

SA 7.0 Lecture 5. 데이터 구조로서의 지오메트리 그리고 시각화 / Geometry as data and Visualization



DATA STRUCTURE
FOR
Design & Research


METHODOLOGY

Discretizing Information & Data

numerical descriptions as design tools

data structure

graph

pixel 

voxel

...


 

 

Grid System

 


Graph System

 


Voxel System


01 Basic Grid Data Structure for Design

00:00 - 배경 설명 - 픽셀/복셀

00:40 - 데이터 구조란... 참조 비디오 - https://youtu.be/GF0-OV9tsCs

..................................................................

01:52 - Gird class 설명

03:56 - Grid 만들기 활용

04:42 - Visualization 도구

05:32 - .getGrid()

07:21 - 디자인을 코드화 시키는작업

..................................................................

08:11 - 코드 디버그 하기

08:49 - 의미적 에러 / Semantic Error

10:13 - .getConnection()

10:58 - .getClosestCell()

11:29 - 가까운 점 찾기

14:51 - rs.AddLine()

16:34 - 그리드의 절대 크기로 나누어 보기

17:05 - 랜덤 포인트 만들기

18:11 - interval / random / scale 개념 설명

21:23 - .addTree()

23:49 - 나무의 개수대로 셀을 시각화시키기

25:15 - 마무리


02 Grid System, Game Of Life

00:00 - 이전 수업 요약

01:00 - Cellular automata 개념 설명

03:04 - 오늘의 수업: Game of Life & 개념 설명

03:56 - 구현 예제

..................................................................

04:41 - Grid class 불러오기

 

05:21 - 컴포넌트 분리 개념

06:17 - Python 구현 준비

09:12 - grid.update() 함수 준비

11:42 - 중간 요약

..................................................................

12:19 - Cell class에 데이터 추가

 

13:34 - grid.update() 구현

14:47 - 개념 설명

..................................................................

16:01 - grid.reset() 구현

17:02 - grid.getGrid() 수정

18:28 - 컴포넌트 분리 개념 테스트

..................................................................

18:58 - Game of Life 조건 구현

23:56 - Game of Life 테스트

..................................................................

24:33 - Animation 구현

24:45 - Trigger

25:27 - 생각해 볼 것

 


03 Grid Image To Terrain

 

00:00 - Grid System & 이전 수업

00:29 - 오늘의 수업: Terrain & Image

01:26 - Gird class

..................................................................

01:54 - Image to Terrain

02:51 - 코드 설명

03:44 - 코드 이식

04:53 - 이미지 그리드화 개념

06:07 - 코드 구현

09:37 - 컬러 값 가져오기

11:15 - 포인트 출력

11:34 - Z 축 scale 값

 

12:07 -. GetPixel()

13:20 -. BuildConnection()

14:11 - Mesh 만들기

14:23 - 개념 설명

17:14 - 구조(Architcture) 개념 설명

..................................................................

19:48 - For loop 구현

20:39 - Mesh 구현 개념

21:19 - Point 접근하기

24:11 - Point 출력

24:19 - 순서 검증과 정렬

27:01 - rs.AddMesh()

29:27 - 4 각형 Mesh

30:55 - Gird class에 데이터 붙이기

..................................................................

32:43 - Vertex Color

36:39 - Mesh Visualization

37:12 - 그러데이션 적용

40:22 - 새로운 이미지 적용

41:10 - 숙제들...

42:26 - 요약 & 마무리

 

 

 

 

 

 

 

 


04 Grid system, Map data To Terrain

00:00 - Map data to terrain

.............

00:38 - Point 가져오기

01:58 - Python 구현

02:19 -. getClosestCells()

05:05 - 포인트로 Cell 가져오기

07:34 - Cell의 데이터 업데이트 하기

.............

08:24 - Mesh Visualization

09:00 - 데이터 업데이트 상관관계 개념

09:23 - Color 값 업데이트

.............

10:50 - 랜덤 포인트 생성

13:02 - 포인트 적용하기

13:37 - 데이터 업데이트 개념 설명

14:09 - 데이터 reset 구현

.............

16:54 - 디자인 전략 아이디어 & 요약 마무리

 

 

 

 

 

 

 

 

 

 

 

 


05 Grid Map data Interpolation & Propagation & Smooth

00:00 - Data Interpolation

00:11 - Smooth Interpolation 예제

......................

01:17 - Code refactoring

03:24 - 요약하면

05:42 - 데이터 & 시각화

......................

06:08 -. smooth() 구현 시작

06:44 - 개념 설명

09:00 - 구현 시작

11:35 - 계산값 적용

13:26 - 디버깅

......................

14:29 - Iteration 구현

16:32 - 결과 테스

......................

17:58 - Code refactoring

19:41 - smooth data & 결과 테스트

......................

20:13 - inspection 구현

21:51 - 선택된 cell 시각화

23:10 - 데이터 검증

23:51 - 응용 사례를 들면

 

 

 

 

 

 

 

 

 

 


06 Grid Image to Data, Channel & Selection

00:00 - 이전 수업 요약

00:16 - 오늘의 수업

.............

00:33 - 코드 리펙토링

.............

03:07 - 이미지 채널 데이터

03:26 - 데이터 스케치

04:24 - 이미지 가져오기

04:59 - Python 구현

07:22 -. loadImg()

09:56 - 결과 출력

10:06 - 개념 설명

11:14 - 채널 데이터

.............

13:06 - 데이터 출력

14:09 - 데이터 시각화

16:42 - color blending

19:25 - 이미지 업데이트

19:43 - 중간 요약

.............

20:05 - 컨디션에 따른 시각화

22:33 - 시각화 설명

25:46 - 좀 더 복잡한 컨디션 구현

27:10 - 결과 해석 하기

.............

29:14 - Line spike visualization

33:34 - 시각화 해석

.............

34:38 - 요약 & 마무리

 

 

 

 

 

 


07 Data Interpolation Falloff

00:00 - Data Interpolation: falloff

01:34 - 컴

포넌트 정

.........................

02:00 - Attractor 선언

03:28 - Python 구현 시작

05:12 - Debugging 시작

09:28 - 문제 포착과 해결 .

........................

10:15 - 거리값 시각화

12:13 - Scale 적용

13:55 - 개념 설명

14:22 - falloff 구현

17:54 - 시각화하기

20:07 - 결과 값 설명

.........................

22:52 - 여러 개의 장소 데이터 적용

25:20 - Line 시각화

29:01 - 요약, 개념 설명, 마무리

 

 

 

 

 

 

 

 


08 Concept of Data Propagation and Path Finding

00:00 - Path finding

00:18 - Dijkstra, A* search algorithm과 디자인

02:01 - 데이터 구조와 Dijkstra 구현 개념

04:48 - 탐색 방식, 깊이 DFS(Depth First Search), 너비 BFS(Breadth First Search) 우선 탐색

06:00 - Typescirpt 구현과 설명

참조링크: https://codepen.io/NJStudio/pen/RwWxGXo

07:50 - Pixel & Voxel & Graph의 연결성 설명

08:54 - 구현 과정 개념 설명

09:31 - Python 구현 시작

 

 

 


09 PathFinding Dijkstra and data propagation

00:00 - Python 구현 시작 & 환경 구축

04:37 - Propagation 구현

07:18 - 주변에 위치한 셀 탐색 구현

07:21 - Cost 함수 구현

10:39 - Cost값 Visualization

11:49 - 디버깅

14:40 - Cost Visualization 결과

15:25 - 외부 데이터를 포함시켜 Propagation 하기

18:39 - back Propagation 구현

18:54 - Data Inspection

20:26 - back Propagation으로 Path 계산하기

24:10 - 응용의 예를 들면

26:09 - Path를 라이노 라인으로 만들기

28:56 - 알고리즘 검증 & 설명하기

30:21 - 요약하기, 그리고 디자인 프로세스와 공간 데이터의 코드화

31:40 - 다음 스텝으로는?

33:02 - 도구 이해의 중요성과 디자이너의 역할

 

 

 

 


10 PathFinding A* concept

00:00 - 이전 수업 요약과 오늘의 수업 소개

00:48 - 결과물을 먼저 보면,

02:04 - 휴리스틱(heuristic)?

03:25 - A* search algorithm

참조링크:

https://en.wikipedia.org/wiki/A*_search_algorithm https://www.geeksforgeeks.org/a-search-algorithm/ http://theory.stanford.edu/~amitp/GameProgramming/AStarComparison.html https://www.redblobgames.com/pathfinding/a-star/introduction.html https://www.redblobgames.com/pathfinding/a-star/implementation.html

06:23 - 코드 구현 시작

 

 

 

 


11 PathFinding A* search & Data Process and Viz

00:00 - 코드 구현 준비

01:01 - 코드의 구조 구현

03:06 - 필요한 데이터 선언

05:33 -. propagation() 함수 구현

09:12 - 연결성에 따라 전파 구현

12:27 - cost 계산하기

14:05 - Heur

istic 정의하기

17:26 - 디버깅하기

20:04 - Path Visualization 하기

22:10 - Path 리스트 추가 하기

.........................................................

23:27 - 외부 데이터 포함하기

27:26 - 방문의 횟수에 따라 시각화하기

28:25 - Heuristic Scale 정의

31:02 - 외부 데이터 조정 하기

32:04 - 픽셀 상태 조정 하기

35:10 - 결과 시각화 하기

36:47 - Heuristic에 파라미터 적용

38:11 - 결과 해석

39:06 - 요약 & 마무리

 

 

 


12 Voxel Data Structure & Connectivity, for design

00:00 - Voxel 구조 구현

00:16 - 3차원 그리고 구현

00:48 - 파라미터, 코드 구현 준비

03:49 - Voxel 시각

04:28 - Connection 구현

05:10 -. getConnection() 업데이트

08:25 - 가까운 voxel 시각화

09:30 - Build Connection 구현

10:02 - Voxel구조에서 인덱스 개념 설명

.........................................................

10:31 - 연결성 구현

14:03 - 리펙토링 하기

19:03 - 연결성 시각화 하기

.........................................................

22:12 - 요약, Voxel의 활용?

 

 

 

 

 

 

 

 

 


13 Voxel Data Processing, Falloff, Smooth

00:00 - 오늘의

수업

00:22 - Voxel 데이터 매핑

01:57 -. computeFalloff() 이식

04:06 - 파라미터 조절

05:12 - getGrid() 수정

07:58 - Sphere로 출력

10:22 - Data Visualization

................................................

12:05 - Data Smoothing

13:01 - 코드 이식

13:36 - Parameters 연결

14:06 - Visualization

15:33 - 요약 / 마무리

 

 

 

 

 

 

 

 

 

 


14 Voxel Capture & Voxelization & Condition & Visualization

00:00 - 오늘의 수업 Voxelization(discrete grid)

00:31 - On / Off voxels

00:55 - Box visualization

01:19 - 코드 구

03:18 -. AddBox()

05:55 - 디버깅

07:35 - if statement / 조건 부여

08:29 - visualization / 시각화

09:10 - Voxel 활용 / 응용

10:35 - 마무리

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


15 Voxel, Colored Mesh Visualization

00:00 - 전 수업 요약

00:46 - 오늘의 수업: Mesh Visualization

01:04 - 개념 설명

03:19 - Mesh 만들기 & rs.AddMesh()

05:12 - Mesh의 연결성 정의

07:21 - 디버깅: Point to List

08:15 - Colored Mesh

10:58 - Data visualization

12:15 - Scaling Data

13:33 - 결과 확인

14:22 - 마무리 요약

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


16 Voxelization Hollow Mesh Color Visualization

00:00 - 오늘의 수업: Removing overlapping surfaces of voxels

01:01 - 구현 준비

01:23 - Face Class 선언과 구현

02:24 - '면'' 겹침 개념 설명

04:47 - getWholeMesh() 구현 준비

06:25 - 알고리즘 구현 아이디어 정리

07:10 - Voxel 필터 하기

07:51 - getFace() 구현

08:31 - 코드 이식 & Refactoring

13:42 - Face 오브젝트 만들기

15:24 - Face indexing

18:48 - 결과 검증 하기

20:04 - 알고리즘: 겹치는 면 제거 하기

20:16 - Time Complexity 시간 복잡도 생각해 보기 & 개념 설명

22:24 - 구현하기

27:22 - 면 충돌 감지 하기

30:40 - 겹치지 않은 면 가져오기

31:43 - 결과 검증 하기

32:36 - Face를 Mesh로 만들기

34:35 - 디버깅하기

36:26 - 겹치는 면 제거 검증 하기

37:42 - Colored Mesh 디버깅

39:15 - Vertex Color

41:21 - 결과 검증 & 요약 & 마무리

 

 

 

 

 

 

 


17 Voxelization Path Finding Voxel Inspection

00:00 - 오늘의 수업: Path Finding 알고리즘

00:37 - 구현 준비

01:57 -. getPath() 구현 준비

04:33 - Dijkstra 가져오기

05:15 - Dijkstra 적용하기

06:59 - Code 수정 & Refactoring

08:11 - 디버깅하기

09:31 - Cost 값 개념 설명

10:42 - 결과 검증

11:06 - Cost 함수 수정

11:50 - Path 디버깅

13:41 - Cost 함수 업데이트

14:57 - Cost 함수의 예들

...............

16:30 - 패스에 따른 Voxel Inspection

18:52 - Value와 Reference 차이

20:59 - 결과 검증 & 시각화

24:30 - 활용 예들

...............

25:37 - 숙제 설명

26:49 - 구현 준비

28:01 - Cost 값 시각화

30:09 - 결과 검증 & 시각화

32:40 - 요약 & 마무리

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Graph

05 Graph / 디자이너를 위한 파이썬 05 파이썬 그래프 - link

06 Graph Visualization / 디자이너를 위한 파이썬 06 파이썬 그래프 시각화 - link

 

07 Graph to JSON/ 디자이너를 위한 파이썬 07 파이썬 그래프 JSON - link

08 Graph to CSV / 디자이너를 위한 파이썬 08 파이썬 그래프 CSV - link