# VIOLENT VOLUMES

## The Hive WIP #2

The Hive WIP #2

All the stiffness of modeling environment and constraints in BIM modeling process sometimes give you frustration and less freedom in modeling but in the end it actually results more accurate, parametric (and therefore flexible) model. So the issue should be when to implement BIM after concept design stage.

## California Roll – Scale Model

1:200, styrene and plexiglass

Model built by András Jakó & Lajos Schläffer www.limesmodel.hu

Click below images to enlarge.

## Beam me up, Mike!

Beam me up, Mike!

2012

Lambda print 66 x 110 cm

## Rhinoscript Etude

I made this little script for an M.Arch course when I was in school three years ago.

It tessellates a nurbs surface in several layers, and extrudes one of the layer with another parameter.

It can be applied to generate a parametric building facade for specific site condition.

Printed out with resin 3d printer.

Below is the complete script.

```Option Explicit

' 20080507 Chris Kim

Call Panel1()

Sub Panel1()

Dim idSurface : idSurface = Rhino.GetObject("Surface to frame", 8, True, True)
If IsNull(idSurface) Then Exit Sub

Dim intCountU : intCountU = Rhino.GetInteger("Number of iterations per direction", 10, 2)
If IsNull(intCountU) Then Exit Sub

Dim intCountV : intCountV = Rhino.GetInteger("Number of iterations per direction", 10, 2)
If IsNull(intCountV) Then Exit Sub

Dim intTessel : intTessel = Rhino.GetInteger("maximum degree of tesselation", 3, 2,10)
If IsNull(intTessel) Then Exit Sub

Dim arrSurfaceDmU : arrSurfaceDmU = Rhino.SurfaceDomain (idSurface, 0)
Dim arrSurfaceDmV : arrSurfaceDmV = Rhino.SurfaceDomain (idSurface, 1)

' common vars
Dim strSullivan2, strSullivan5, strSullivan7
Dim tempScale, arrTempPt
Dim i,j,k,l,m,n

' var for sullivan 2 process
Dim dblExtrusion
Dim arrProcess2Pt1 : arrProcess2Pt1 = Rhino.GetPointOnSurface  (idSurface,"pick light effect point no.1 (positive louvers)")
Dim arrProcess2Pt1_2 : arrProcess2Pt1_2 = Rhino.GetPointOnSurface  (idSurface,"effect area for point no.1")
Dim dblProc2Dist1 : dblProc2Dist1 = Rhino.Distance (arrProcess2Pt1, arrProcess2Pt1_2)
Dim dblCurrentProc2Dist1

Dim arrProcess2Pt2 : arrProcess2Pt2 = Rhino.GetPointOnSurface  (idSurface,"pick light effect point no.2 (negative louvers)")
Dim arrProcess2Pt2_2 : arrProcess2Pt2_2 = Rhino.GetPointOnSurface  (idSurface,"effect area for point no.2")
Dim dblProc2Dist2 : dblProc2Dist2 = Rhino.Distance (arrProcess2Pt2, arrProcess2Pt2_2)
Dim dblCurrentProc2Dist2

' Layers

For i = 2 to intTessel
Next

'---------------------------------------------
'
'	first paneling
'
'---------------------------------------------
For i = 0 to arrSurfaceDmU(1)-arrSurfaceDmU(1)/intCountU Step arrSurfaceDmU(1)/intCountU

For j = 0 to arrSurfaceDmV(1)-arrSurfaceDmV(1)/intCountV Step arrSurfaceDmV(1)/intCountV

Call Rhino.EnableRedraw(False)
arrQuadPanelPoints(0) = Rhino.SurfaceEvaluate (idSurface, Array(i,j), 1)(0)
arrQuadPanelPoints(1) = Rhino.SurfaceEvaluate (idSurface, Array(i+arrSurfaceDmU(1)/intCountU,j), 1)(0)
arrQuadPanelPoints(2) = Rhino.SurfaceEvaluate (idSurface, Array(i+arrSurfaceDmU(1)/intCountU,j+arrSurfaceDmV(1)/intCountV), 1)(0)
arrQuadPanelPoints(3) = Rhino.SurfaceEvaluate (idSurface, Array(i,j+arrSurfaceDmV(1)/intCountV), 1)(0)

'center point of panel

Call Rhino.EnableRedraw(True)

Next
Next

'------------------------------------------------
'
'	further Tessellation
'
'-------------------------------------------------

For j = 2 to intTessel

Dim arrTessellated

Rhino.Print "panels_quad_t" & j-1 & " panels are being tesselated"

For k = 0 to UBound(arrSelectedQuads)

Call Rhino.EnableRedraw(False)

End If
Call Rhino.EnableRedraw(True)
Next
End If
Next

'------------------------------------------------
'
'	Layer purge
'
'-------------------------------------------------
For l = 0 to intTessel

Dim arrTempCheckLayer

arrTempCheckLayer = Rhino.ObjectsByLayer ("panels_quad_t" & l)
If Not IsArray(arrTempCheckLayer) Then
Rhino.Print "panels_quad_t" & l & " is deleted"
End If

Next

'------------------------------------------------
'
'	process for
'	sullivan ornament element No.2
'
'-------------------------------------------------

For m = 1 to intTessel

Dim arrSullivan2

Rhino.Print "Extruding level " & m

For n = 0 to UBound(arrSelectedQuads)

'set condition
dblCurrentProc2Dist1 = Rhino.Distance(arrProcess2Pt1,arrCenterOfPanel)
dblCurrentProc2Dist2 = Rhino.Distance(arrProcess2Pt2,arrCenterOfPanel)

dblExtrusion = 0

If  dblCurrentProc2Dist1 >= dblCurrentProc2Dist2 Then

' Panel is closer to point 1
If dblCurrentProc2Dist2```

## Mapping Cemeteries

Park & Open space
Cemetery

The distribution pattern of urban cemeteries in Hong Kong seems to conform to urban boundaries whereas designated public open spaces are integrated between blocks forming a green network. The negative images of cemetery as NIMBY (Not In My Back Yard) program and need of urban cemetery for ancestral worship seems to equilibrate on the boundaries of urban area.

Cemetery is an urban phenomenon. A city of the living always have a need of space for the dead too. As a city grows, the cemetery becomes a collection of accumulated layers over generations created by each era of the living society. And it is a valuable and important public site not just because it is a historical heritage but it relates living members of the city through generations. Through this process of layering, cemeteries in many different cultural contexts have been reflecting the society’s identity as an urban dual throughout history. Different attitude on death and socio-economical context of different cities have resulted its own typology of cemetery.

The necropolis is the reverse side of the metropolis. Which side is which depends on one’s point of view. For the cemetery, an idealized double of this city, appears at the same time as a perfect reproduction of the socio-economic order of the living.
1

In comparison with western cemeteries like Pere-Lachaise in Paris, the reasons why such an important public institution, cemeteries in Hong Kong, are not well accepted as public spaces in our daily life is mainly due to Chinese attitude on death and desirable requirements for the cemeteries. Moreover, extreme urban situation driven by economic values have lead urban cemetery typology to more spatial-efficiency driven one without proper consideration of activities accommodated by cemeteries.

1. Michel Ragon, ‘The Space of Death’

## California Roll House

California Roll House, 2011

At times, the simplest form with least manipulation from its original form can offer visual amenities and adapted solution to the context. California Roll prefabricated house takes this methodology to create its morphological adaptation to its environment: desert. Homogeneous exterior material which provides high grade of energy efficiency and reflects heat from the sun covers the entire surface except for glass panels which is electronically controlled to change its transparency.
Modularization of every structure members and finish materials are maximized to provide mobility with rapid assembly and disassembly on site.

To sustain its challenging structural stand, carbon fibre truss frame underneath the exterior material holds the entire architecture. Hydraulic powered automatic doors and security system is used for main entrance door which allows less space to operate the door mechanism. California Roll house features these latest technologies applied to architecture which breaks the boundary of product or vehicle design and architectural design which brings more mobility to living spaces.

Plain surface on the ground extended from exterior surface provides paved area for outdoor activities which requires flat and artificial surface different from desert sand surface. As well as surface on the ground, inside of exterior shell is covered with fibre reinforced plastic panels.

Ground Floor Plan

Second Floor Plan

Second Floor Interior View

Modularized skylights and windows along the exterior surface can be placed at desired location to light its interior space to meet resident’s requirement from his own usage of the space.
Passive and subtle control of privacy of bedroom area is provided by curtain divider and bookshelf with translucent midpart. These parts allow the residents to have sense of privacy by delicate visual hints over as well as providing lights through.
Overall, the privacy in California Roll is controlled rather passively with resident’s awareness than tight blocking of spaces in-between.

Click below images to enlarge

` `

``` jQuery(document).ready(function(){ jQuery("#gallery-59654734 .flickr-thumb img").flightbox({size_callback: get_sizes}); }); //--> ```

Long Section A

Long Section B

Cross Section

Automatic main door mechanism diagram

Since the main entrance is on the sloped wall, the door mechanism should be designed in unconventional way. Adopting ideas from automotive design industry, hydraulic powered automatic door controlled by number lock panel is installed on the sloped wall as main entrance to minimize the space required for operation to avoid contact with user while in operation. When the door is fully open, the clearance height is up to 2 meters.
The door opens into two pieces, the upper piece lifts up over head, and the lower piece unfolds onto the floor for visitors to step on. When the door is completely closed, the material on the outside of door continues with the material of the exterior surface to achieve conformity and hide the entrance.

## California Roll House – Concept

Homogeneous facade wraps around the living content.

## Beam me up, Mike!

Beam me up, Mike! , 2010

Scripted sculpture. 50 x 90 x 192 cm

Beam me up, Mike! is a reorganized voxels of The statue of David by Michelangelo. By means of scripted modeling, the sculpture is voxelized in total 8 steps of refining cubes. The size of voxel cubes starts from 120mm of edge length and scales down to half each step. The top part (head of the statue) is in original shape as it represents ultimately refined voxels.

## Rhinoscript – select random objects

```'---------------------------------------------------------
'
'	Select random objects by percentage from selection
'	2012.06.02 Chris Daniel Kim
'
'---------------------------------------------------------
arrObjects = Rhino.GetObjects("Pick objects")
dblPercentage = Rhino.GetReal("Set percentage", 50, 0,100)

NumItems = int(dblPercentage*UBound(arrObjects)/100)
Rhino.Print NumItems & " elements will stay."

arrObjectsCopy = arrObjects

Dim i,j,tmp

Randomize 'Shuffle
For i = 1 To UBound(arrObjects) - 1
' Pick a random element.
j = Int((UBound(arrObjects) - i + 1) * Rnd + i)
' Swap.
tmp = arrObjectsCopy(i)
arrObjectsCopy(i) = arrObjectsCopy(j)
arrObjectsCopy(j) = tmp
Next

'Cut the tail
Redim Preserve arrObjectsCopy(NumItems)

Rhino.SelectObjects (arrObjectsCopy)```

## Voxelizer Rhinoscript

I made a voxelizer rhinoscript for a project I have in my mind. took me few days to find the

fastest algorithm but I think I ended up with common one.I tried few other ways to make

voxels but they always missed some voxels that should be made..

below is just the gist of the script

```For dz = 0 to sizeZ
' check each level of contours
Rhino.EnableRedraw (False)
Rhino.Print "processing step " & dz & "/" & sizeZ

For dy = 0 to sizeY

For dx = 0 to sizeX

containment = 0

'Points to shoot
arrPtXY = Rhino.XformCPlaneToWorld (Array(dx*IntervalX+0.5*IntervalX, dy*IntervalY+0.5*IntervalY, 0.5*IntervalZ), arrGridPlane)
arrPtXZ = Rhino.XformCPlaneToWorld (Array(dx*IntervalX+0.5*IntervalX, 0.5*IntervalY, dz*IntervalZ+0.5*IntervalZ), arrGridPlane)
arrPtYZ = Rhino.XformCPlaneToWorld (Array(0.5*IntervalX, dy*IntervalY+0.5*IntervalY, dz*IntervalZ+0.5*IntervalZ), arrGridPlane)

'Projected points
arrXYProjects = Rhino.ProjectPointToMesh (arrPtXY, strMesh, arrPtZaxis)
arrXZProjects = Rhino.ProjectPointToMesh (arrPtXZ, strMesh, arrPtYaxis)
arrYZProjects = Rhino.ProjectPointToMesh (arrPtYZ, strMesh, arrPtXaxis)

'Testbox in Cplane coordinate
arrTestBox(0) = Array(dx*IntervalX, dy*IntervalY, dz*IntervalZ)
arrTestBox(1) = Array((dx+1)*IntervalX, dy*IntervalY, dz*IntervalZ)
arrTestBox(2) = Array((dx+1)*IntervalX, (dy+1)*IntervalY, dz*IntervalZ)
arrTestBox(3) = Array(dx*IntervalX, (dy+1)*IntervalY, dz*IntervalZ)

arrTestBox(4) = Array(dx*IntervalX, dy*IntervalY, (dz+1)*IntervalZ)
arrTestBox(5) = Array((dx+1)*IntervalX, dy*IntervalY, (dz+1)*IntervalZ)
arrTestBox(6) = Array((dx+1)*IntervalX, (dy+1)*IntervalY, (dz+1)*IntervalZ)
arrTestBox(7) = Array(dx*IntervalX, (dy+1)*IntervalY, (dz+1)*IntervalZ)

'See if the projected points are in the Textbox
If IsArray(arrXYProjects) Then
For i = 0 to UBound(arrXYProjects)
If IsPointInBox(Rhino.XformWorldToCPlane (arrXYProjects(i), arrGridPlane), arrTestBox) Then
containment = 1
End If
Next

End If

If IsArray(arrXZProjects) Then

If containment = 0 Then
For j = 0 to UBound(arrXZProjects)
If IsPointInBox(Rhino.XformWorldToCPlane (arrXZProjects(j), arrGridPlane), arrTestBox) Then
containment = 1
End If
Next
End If

End If

If IsArray(arrYZProjects) Then
If containment = 0 Then
For k = 0 to UBound(arrYZProjects)
If IsPointInBox(Rhino.XformWorldToCPlane (arrYZProjects(k), arrGridPlane), arrTestBox) Then
containment = 1
End If
Next
End If
End If

If containment = 1 Then
'Rhino.Print dx  & " - " & dy & " - "  & dz
arrMakeBox(0) = Rhino.XformCPlaneToWorld (arrTestBox(0), arrGridPlane)
arrMakeBox(1) = Rhino.XformCPlaneToWorld (arrTestBox(1), arrGridPlane)
arrMakeBox(2) = Rhino.XformCPlaneToWorld (arrTestBox(2), arrGridPlane)
arrMakeBox(3) = Rhino.XformCPlaneToWorld (arrTestBox(3), arrGridPlane)

arrMakeBox(4) = Rhino.XformCPlaneToWorld (arrTestBox(4), arrGridPlane)
arrMakeBox(5) = Rhino.XformCPlaneToWorld (arrTestBox(5), arrGridPlane)
arrMakeBox(6) = Rhino.XformCPlaneToWorld (arrTestBox(6), arrGridPlane)
arrMakeBox(7) = Rhino.XformCPlaneToWorld (arrTestBox(7), arrGridPlane)