parkcheolhee-lab

Testbed

Testing place for all research

 in progress 


γ€€

Thinking of data as space

This article's contents are based on the book Linear Algebra for Programmers. When thinking of data as space, intuition works πŸ’‘ We live in a three-dimensional space. To handle problems in a 3D world, we need terms that describe this 'space' well. Examples include computer graphics, car navigation, and games. The vector spaces in linear algebra abstract certain properties of our real space. Therefore, linear algebra provides convenient terms and concepts to describe space.

For instance, if you're thinking about 'how to draw a 3D object on a 2D plane,' you encounter the problem of 'what 2D image appears when you move and rotate the viewpoint in 3D space. ' Linear algebra plays a fundamental role in solving such problems. However, we don't learn linear algebra just to solve problems in space. You'll often want to handle data composed of multiple numbers, not just single values. These cases might not be directly related to 'space,' so you can handle them without explicitly thinking about 'space. ' But if you interpret this data as 'points in high-dimensional space,' you can use your spatial intuition. Although we can only recognize three-dimensional space, many 'general n-dimensional phenomena' can be intuitively understood by reasoning in three-dimensional space. This interpretation is effective in data analysis. When it comes to 'space' problems, linear algebra steps in. . .

#linear-algebra

Polygon segmentations

Objective βœ‚οΈ In the early stages of architectural design, there is a concept about the axis in which direction the building will be placed. This plays an important role in determining the optimal layout considering the functionality, aesthetics, and environmental conditions of the building. The goal of this project is to develop a segmenter that can determine how many axes a given 2D polygon should be segmented into and how to make those segmentations.

Segmented lands by a human architect The figures above are imaginary dividing lines arbitrarily set by the architect. The apartments in the figures are placed based on segmented polygons. Human architects intuitively know how many axes a given 2D polygon should be segmented into and how to create these segmentations, but explaining this intuition to a computer is difficult. To achieve this, I will use a combination of deep learning and graph theory. In the graph, each point of the polygon will be a node and the connections between points will be edges. Based on this concept, I will implement a GNN-based model, which will learn how to optimally segment given polygons. . .

#deep-learning #geometry #graph-neural-network #link-prediction

Infinite synthesis

Introduction 🏒 Deep Generative AI, a field of artificial intelligence that focuses on generating new data similar to training data, is having an impact not only in text generation and image generation but also 3d model generation in the design industry. In the realm of architectural design, especially in the phase of initial design, generative AI can serve as a useful tool for examining many design options.

Physical model examination by humans Shou Sugi Ban / BYTR Architects Leveraging the Deep Signed Distance Functions model (DeepSDF) with latent vectors, this project aims to build the algorithm that can synthesize infinite number of skyscrapers simliar to trained data. These vectors, mapped within a high-dimensional latent space, serve as the DNA for synthesizing potential skyscrapers. So, through the system that manipulates the latent vectors for expressing the shape of the buildings, architectural designers can rapidly generate and examine a diverse array of design options. By manipulating(interpolation, and arithmetic operations) between two or more latent vectors, the model gives us infinite design options virtually. This method not only provides a brand-new design process but also will lead us to explore the novel architectural forms previously unattainable through conventional design methodologies. . .

#deep-learning #deep-sdf #generative-design #geometry

Seeing is solving

Difficulty of the geometric imagination "I have no geometric imagination. . . " I often feel this way, especially when facing complex geometry problems or writing code that deals with shapes and spaces.

At least for me, it is not easy to picture complex 3D shapes in my mind. This is a big challenge and why visualization is so useful. I think visualizing geometry is key to solving problems. Seeing what I am doing makes a huge difference. General debugging tools like print don't help much here. They give me numbers and text but don't show me the geometry I need to see. . .

#debugger #geometry #visualization

Shape-conditional GANs

What is Conditional Generative Adversarial Networks ❓ Conditional Generative Adversarial Networks (cGANs) is an extension of the original Generative Adversarial Networks.

cGANs take the concept of conventional GANs further by feeding additional information into both the generator and discriminator, allowing the generation of data that is more specific and controlled. This information acts as a directive or constraint for the generator on what type of data to produce. The paper for Conditional Generative Adversarial Nets says: " Generative adversarial nets can be extended to a conditional model if both the generator and discriminator are conditioned on some extra information y. y could be any kind of auxiliary information, such as class labels or data from other modalities. We can perform the conditioning by feeding y into the both the discriminator and generator as additional input layer. " . .

#conditional-generative-adversairal-networks #deep-learning #geometry

Local coordinate system

Types of coordinate systems: Global vs. Local In the field of engineering, computer graphics, and physics, understanding the relationship between different coordinate systems is crucial for accurate modeling, simulation, and analysis. The figure attached describes the concept of a global coordinate system (GCS) and a local coordinate system (LCS), both of which are commonly used to define the position and orientation of objects in 3D space.

The GCS is represented by the axes x , y , and z . This system provides a fixed reference for describing the location of all objects within the space. In contrast, the LCS, denoted by the axes x' , y' , and z' , is tied to a specific object within the GCS. It moves and rotates with the object, providing a reference frame that is local to the object itself. . .

#algorithm #coordinate-system #geometry

Latent masses

Objectives Generative Adversarial Networks (GANs) have paved the way for unprecedented advancements in numerous areas, from art creation to deepfake video generation. However, the potential of GANs isn't restricted to 2D space. The development and application of 3D GANs have opened new possibilities, especially in the realm of design.

This project delves deep into the possibilities of 3D GANs in the design field with the following objectives: Grasp the fundamental concepts behind GANs and their 3D extension Appreciate the power and nuances of 3D GANs through hands-on experiments Examine how 3D GANs can be harnessed for product design, architectural modeling, and virtual environment creation visualize and manipulate the latent space to generate novel and innovative designs Understand the limitations of current 3D GAN models and the potential areas of improvement . .

#deep-learning #gan #generative-adversarial-networks #machine-learning

The selfish gene

What is natural selection πŸ¦• Natural selection is a mechanism of evolution. Organisms that are more adapted to their environment are more likely to survive and pass on the genes that aided their success. This process causes species to change and diverge over time. Natural selection is one of the ways to account for the millions of species that have lived on Earth. For example, evolving long necks have enabled giraffes to feed on leaves that others can't reach, giving them a competitive advantage. Thanks to a better food source, those with longer necks were able to survive. Those with shorter necks and access to less food would be less likely to survive. . .

#evolution #natural-selection #simulation

Parallel execution within GhPython

A simple understanding of multiprocessing Multiprocessing refers to the ability of a computer system to execute multiple processes or tasks concurrently. It involves the use of multiple processors or processor cores to perform multiple tasks simultaneously, thereby improving overall system performance and efficiency.

In a multiprocessing system, each process is an independent unit of execution with its own program counter, stack, and data section. These processes can run concurrently, allowing for parallelism and efficient utilization of system resources. Processes: A process is an instance of a running program. Each process has its own memory space, file descriptors, and system resources. Processes are created and managed by the operating system. They can communicate with each other using inter-process communication mechanisms. You can understand multiprocessing with a very simple example easily. That is the following: . .

#algorithm #multiprocessing #python

Drafting with AI

Stable diffusion πŸ€– Stable Diffusion is a deep learning, text-to-image model released in 2022. It is primarily used to generate detailed images conditioned on text descriptions, though it can also be applied to other tasks such as inpainting, outpainting, and generating image-to-image translations guided by a text prompt. An image generated by Stable Diffusion based on the text prompt: "a photograph of an astronaut riding a horse" If you use this AI to create images, you can get plausible rendered images easily and shortly with a few lines of text. Let's think about how this can be utilized in the field of architecture. . .

#controlnet #drawing #rendering #stable-diffusion

Analysis of Apt state-spaces

Objectives This analysis aims to write a prototype for deriving the apartment layout starting point for the street housing maintenance project (κ°€λ‘œμ£Όνƒμ •λΉ„μ‚¬μ—…) solution called LBDeveloper (at Spacewalk). The plots to analyze and layout analysis visualized are the following images. Also it aims to set the parameters and the range of parameters to optimize apartment complex layout.

Plots to analyze and visualized layout analysis Axes rules Since the orientation of street houses takes into account the south-facing of all units, the orientation and placement axis can be separated. Therefore, the array axes is largely divided into the following: Longest segment axis of the plot geometry Boundary axis South-facing axis The rules of array axes by layout analysis: One array axis has a minimum of 1 and a maximum of 3 origins The array axes have a minimum of 1 and a maximum of 2 axes when not Boundary axis If the selected array axes parameter is the Boundary axis, offset N line segments into the site Place a corner-type building at the intersection of lines that offset the site boundary axis . .

#algorithm #automation #lbdeveloper #visualization

Plan to Model

Edge detection Edge means a boundary line or an outline. An edge in an image refers to a portion existing at a point where the brightness of an image changes from a low value to a high value or vice versa. Ultimately, an edge indicates the boundary of an object in an image and contains various information such as shape and direction detection. Edge detection is the process of finding a pixel corresponding to an edge. And it includes a variety of mathematical methods that aim at identifying edges, curves in a digital image at which the image brightness changes sharply or, more formally, has discontinuities. Lenna Lenna (or Lena) is a standard test image used in the field of digital image processing . .

#algorithm #automation #open-cv

Klemens Torggler's door

Evolution door Evolution Door is a 2012 development and Klemens Torggler's best known work. Unlike previous kinetic works, this object is only on one level and unfolds into a third dimension as it moves. Klemens Torggler's The Evolution Door The Evolution Door is connected to the door frame with two pivots β€” at the top and bottom β€” and consists of four triangular β€œflip-panels. ” When movement is instigated, the four sections collapse in on themselves and rotate 90 degrees before straightening back up into a rectangle.

Door opening process Implementation The door consists of two square sections, each divided in half along the diagonal. The diagonals are where two triangular panels meet, connected with something like a piano hinge so that each square can fold as the door moves. And each part of the rectangle of the door must be square. In other words, the door's width must be half of the door's height. . .

#algorithm #formfollowsfunction #python

Quadtree

What is a Quadtree ? A Quadtree is a data structure in which each internal node has exactly four children. Quadtrees are most used to partition a 2D space by recursively subdividing it into quadrants. The subdivided regions may be square or rectangular, or may have arbitrary shapes. All forms of quadtrees share some common features: They decompose space into adaptable cells Each cell (or bucket) has a maximum capacity. When maximum capacity is reached, the bucket splits (or subdivides) The tree directory follows the spatial decomposition of the quadtree . .

#algorithm #python

K-Rooms clusters

K-Means clustering πŸ•ƒ The K-Means clustering algorithm is the algorithm that clusters to a K number when given data. And it operates as a way to minimize between each cluster about distance difference. This algorithm is a type of the Unsupervised-Learning and serves to label unlabeled input data.

The K-Means algorithm belongs to a partitioning method among clustring method. A partitioning method is a way of splitting that divides multiple partitions when given data. For example, let's assume that n data objects are input. That's when partitioning method divides the given data into K groups less than N, at this time, each group forms a cluster. That is, dividing a piece of data into one or more data objects. K-means clustering, divided by 10 . .

#machine-learning #unsupervised-learning

Loading the geometries I have

three. js features Three. js includes the following features: Lights: ambient, direction, point, and spot lights; shadows: cast and receive Export and import: utilities to create Three. js-compatible JSON files from within: Blender, openCTM, FBX, Max, and OBJ OBJLoader The OBJ file format is a simple data-format that represents 3D geometry alone β€” namely, the position of each vertex, the UV position of each texture coordinate vertex, vertex normals, and the faces that make each polygon defined as a list of vertices, and texture vertices. . .

#WebGL #ifc.js #javascript #three.js

ghpythonutils

GhPython Utilities πŸ”§ ghpythonutils serves as a utility for GhPython users engaged in the development of components, algorithms, automation tools, and other functionalities. For reference, this project is always a work in progress. Therefore, if you have any ideas, questions, or suggestions, please feel free to create new issues. . .

#algorithm #geometry #python

three.js geoms

About the three. js Three. js is a cross-browser JavaScript library and application programming interface used to create and display animated 3D computer graphics in a web browser using WebGL. The source code is hosted in a repository on GitHub. Three. js allows the creation of graphical processing unit (GPU)-accelerated 3D animations using the JavaScript language as part of a website without relying on proprietary browser plugins. This is possible due to the advent of WebGL, a low-level graphics API created specifically for the web. . .

#WebGL #javascript #three.js

Windows placement helper

Boring, boring, boring πŸ˜‘ If you are an architect, you may have downloaded open cad sources and used them to draw plans. And you may also have experienced the repetitive task of moving design elements such as windows and doors to the desired location and drilling holes in the wall at that location. . .

#automation #drawing #ezdxf #shapely

Voxelate

What is a Voxel ? 🧊 In computer graphics, a voxel, also known as a 3D pixel, is a 3D cube located on a three-dimensional grid used to create 3D models. Similar to a pixel in a 2D image, a voxel can contain a specific location inside a 3D grid and has a color value assigned to it.

All individual voxels are the same size, however voxels can then be combined in the same grid at different positions with different colors to create what is known as a voxel model. What is a voxel ? From the left, Original shape Β· Voxelated shape In addition, a voxel is also used as the smallest unit composing an architectural space. This is because voxels have no deadspace and can be used for all architectural purposes and reasonable. Therefore It's being used in many architectural offices. The process of architecture below shows how to apply voxelization to the building. This article covers automation of voxelization and how change to the voxelated shape when given specific shape. And let's put some information in the voxel. . .

#formfollowsfunction #information #visualization

Plot shape estimator

How many shapes does the plot have ? 🏷️ The shape of the plot in Seoul is diverse. There are flags, squares, long-squares, trapezoids, triangles and other shapes that are hard to define. building will exists within the plot. Since architects design within a given plot, the direction of design may change depending on the shape of the site. The architect empirically judges the shape of plot and develops the design. In the case of too long-square shapes, the architect will scale the building down in the direction of the long side axis. If given a triangle shapes of land, architects design it to eliminate acute angles. In this way, people can subjectively judge the type and define the shape. . .

#machine-learning #python

Merry christmas

What is fractal ? It refers to a structure that geometrically solves the self-similarity concept that and wholes have the same shape. A fractal is a simple structure that repeats endlessly to create a complex and mysterious overall structure, which is characterized by self-similarity and recursiveness. The rias coastline of the natural world, the distribution of animal blood vessels, the shape of tree branches, the appearance of frost growing on windows, and the appearance of mountain ranges are all fractal, and everything in the universe has a fractal structure after all. Concept of fractal . .

#algorithm #python

Dynamic mesh fence

Where does design start ? Different designers have different approaches to solving design problems. Intuition, aesthetics, function, cost, data, structure, etc. are prioritized based on what designers value. And this is expressed in form. A perfect design has each element properly balanced. However, it is not easy to do such a design in reality. So, in general, we set one or two high priorities and design according to the conditions. . .

#formfollowsfunction

Subdivision curve

Subdivision curves Subdvision methods progressively refine a discrete curve and converge to a smooth curve. This allows to perform an interpolation or approximation of a given coarse dataset. Subdivision iterative step Subdivision curve is created based on the base vertices(or curve). Given the base vertices, find the vectors of the n% and 100-n% vertices between the i-th point and the i+1-th point. . .

#algorithm #geometry

Space syntax

Depth of space The depth of spcae can be a criterion for evaluating the accessibility of the space. Let's take a look at the image below. There are two spaces, and the way they are all laid out is the same. However, you can see that the accessibility to the space changes depending on the way the spaces are connected, that is, the depth. . .

#informatin #visualization

Tower crane arrangement

Requirement This project is to optimize the layout of the tower cranes given the required number of cranes. The size of the crane is as shown in the diagram below, and when arranging three cranes, I thought about which size crane to choose and what criteria to place it.

Requirement From the left, Radius of crane Β· Project purpose Designing state space Constraints in this project is to minimize the intrusion of tower cranes into the housing areas around the site. If a tower crane invades housing areas, that state space will receive a low score. Set constraints And I created a bounding box on the given site and created the positions parameter (origin of the crane) in it. A state space reflecting the radius of the selected tower crane based on the origin is created. And since we need to check if the origin of the crane is created outside the given site, we use a Point in Polygon algorithm to verify it. . .

#optimization

Theater sightlines

C - Value πŸ‘€ When you go to theater, have you ever had any inconvenience in viewing because of the back of the person in front of you? C-Value is an index of viewing quality in a theater. This project aims quantitatively evaluate and optimize viewing quality in theaters using Galapagos and ghPython. To evaluate Fitness, I designed state space based on predefined parameters and constants. A state space is the same concept as a parametric model. A state space is a parametric model in which the state of a model can be scored according to its current parameters. . .

#optimization

Mass generator

Automating buildings generation with GeoJSON 1. after reading the shapefile from QGIS, cut out the necessary parts and convert it to the GeoJSON file format. Getting GeoJSON 2. Read the GeoJSON file and parse the geometry. The GeoJSON file contains information about the coordinates of the geometry like the one below. . .

#automation #information #visualization

Travelling salesman problem

What is the Genetic Algorithm 🧬 Genetic algorithms are commonly used to generate high-quality solutions to optimization and search problems relying on inspiration from biology such as mutation, crossover, and selection. It is a metaheuristic inspired by the process of natural selection of biology that belongs to the larger class of evolutionary algorithms. And this algorithm has characteristics following below: . .

#genetic-algorithm #optimization

Secure room in seoul

Recommend a room with a high security score This project maps rooms with high security scores by overlapping the number of crimes and locations data from 2014 to 2019. I used the open api on the "Getting a good room with Peter Pan" property sales site to scrap room information data in Seoul. The scrapped data is stored in the form of csv, inserted into the Elastic Search using the Logstash and Beats of the Elastic Stack, and visualized by the Kibana . .

#information #visualization #web-scrapping