Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

40
STUDIO AIR ALGORITHMIC SKETCHBOOK 2016, SEMESTER 1, ALEX HOLLAND CHUHAN YAO(ALEX)

description

 

Transcript of Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

Page 1: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

STUDIO AIRALGORITHMIC SKETCHBOOK2016, SEMESTER 1, ALEX HOLLAND

CHUHAN YAO(ALEX)

Page 2: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 1

For the first algorithmic task I bas-cially tried to get familiar with basic grasshopper commands.

So firstly I tried out what is taught in the tutorial, namely populate points in the given 3D box and run voro-noi command to create this cell-like structure. And then in the pruning stage I tried to emphasis on the di-agonal structure so I created the last product.

And then I tried to loft three fair-shaped curves to create a 3D geom-etry. I tried the octree command for this geometry and the outcome be-came really different from the import product. The octree command turns geometries into cubic forms and the structure became dynamic.

Page 3: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

I also tried circles to form geom-etry to run the octree command but the outcome looked like the previous product.

I personally like the octree com-mand better because the cubic form reminded me of some precedents such as Jewish Holocaust Memorial in Berlin designed by Peter Eisenman and Luxury Summer House of Mediterranean designed by Alvaro Siza.

Page 4: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 2

Page 5: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 2 ALGORITHMIC SKETCH TASK 3roller ball tutorial

Page 6: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 4clock tutorial

Page 7: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 4fractua;l tutorial

Page 8: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 5csv landscape generation

Page 9: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 6if statements exploration

Interesting & Noise

Path & Interesting & Noise Path & Interesting & Noise & Tree

Path & Tree

Voxels Exploration

Deadzone Exploration

1.1 3.2

4.1 5.5

Noise & Interestingness

Legend: 1st number:Deadzone of Interestingness 2nd number: Deadzone of Noise

Page 10: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 6if statements explorationTree & Path

1.1 3.2

4.1 5.5

Legend: 1st number:Deadzone of Tree 2nd number: Deadzone of Path

Page 11: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

Legend: 1st number:Deadzone of Tree 2nd number: Deadzone of Path

1.1.1 3.1.3

4.2.4 6.1.4

6.6.6

ALGORITHMIC SKETCH TASK 6if statements explorationInterestingness & Noise & Path

Legend: 1st number:Deadzone of Interestingness 2nd number: Deadzone of Noise 3rd number: Deadzone of Path

Page 12: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

1.1.1.1 3.2.4.3

4.2.3.2 6.2.4.2

6.6.6.6

ALGORITHMIC SKETCH TASK 6if statements explorationInterestingness & Noise & Path & Tree

Legend: 1st number:Deadzone of Interestingness 2nd number: Deadzone of Noise 3rd number: Deadzone of Path 4th number: Deadzone of Tree

Page 13: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 6ram test

20x8x20 Voxel Mesh Reader 25x8x25 Voxel Mesh Reader

30x8x30 Voxel Mesh Reader 35x8x35 Voxel Mesh Reader

50x8x50 Voxel Mesh Reader

Page 14: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASk 7Group explaination

Our group is the bridge that connects group 1’s and group 3’s work to the final outcome. We create the processing system that uses the researched landscape generated by group 3 and interesting shapes generated by group 1 to produce the actual game. We assign logic and rules of how group 1’s shapes can be generated and how group 3’s landscape can be visualized.

landscape geometry from group 3 voxel object geometry from group 1

converted csv file of landscape converted csv file of voxel object

Unity manager panel that reads csv files

actual gaming interface in Unity

Page 15: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

TREENESS

PATHWAY

PERSPECTIVE PLAN ELEVATION

INTERESTINGNESS

NOISENESS

ALGORITHMIC SKETCH TASK 7single voxel exploration

Page 16: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 7single voxel exploration

PATH

D=2 D=2 D=2

D=3 D=3 D=3

D=4 D=4 D=4

D=5 D=5 D=5

PERSPECTIVE PLAN ELEVATION

Page 17: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 7single voxel exploration

NOISE

D=2 D=2 D=2

D=3 D=3 D=3

D=4 D=4 D=4

D=5 D=5 D=5

PERSPECTIVE PLAN ELEVATION

Page 18: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

TREE

D=2 D=2 D=2

D=3 D=3 D=3

D=4 D=4 D=4

D=5 D=5 D=5

PERSPECTIVE PLAN ELEVATION

ALGORITHMIC SKETCH TASK 7single voxel exploration

Page 19: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

void Start() { myRenderer = gameObject.GetComponent<Renderer>();

_gridXDim = tileManager.gridXDim; _gridZDim = tileManager.gridZDim;

deadZone = voxelManager.deadZones;

}

// IGNORE ME // Update is called once per frame void Update() {

myX = Mathf.RoundToInt(transform.position.x); myZ = Mathf.RoundToInt(transform.position.z);

//accumColor = attributA if (manager.GetComponent<tileManager>().att == 1) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt1; }

else if (manager.GetComponent<tileManager>().att == 2) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt2; }

else if (manager.GetComponent<tileManager>().att == 3) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt3; }

else if (manager.GetComponent<tileManager>().att == 4) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt4; }

Treeness = thisObject.GetComponent<xyzToI>().slaveAtt1; Noiseness = thisObject.GetComponent<xyzToI>().slaveAtt2; Interestingness = thisObject.GetComponent<xyzToI>().slaveAtt3; Pathness = thisObject.GetComponent<xyzToI>().slaveAtt4;

if (manager.GetComponent<tileManager>().trace == false) { if (accumColor > 0) {

if (voxelManager.showLandscape == true) { myRenderer.enabled = true; } Color myColor = new Vector4(accumColor, accumColor, accumCol-or, 1); myRenderer.material.color = myColor;

THIS PART OF SCRIPT INDICATES THAT FOR THE DIFFERENT NUMBER WE PUT IN “ATT” PANEL ON “TILE MAN-AGER”, READS CORRESPONDING PART OF THE INFORMATION IN THE CSV

THIS PART OF SCRIPT INDICATES THAT FOR THE CSV SHAPES PUTTING IN THE “ELEMENT” PANEL, CORRE-

ALGORITHMIC SKETCH TASK 8coding

Page 20: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

THE SPAPES ARE CONVERTED INTO CSV FILE. CSV FILE CONSISTS OF A LIST OF NUMBER THAT RECORDS THE POSI-TION OF EVERY SINGLE VOXCEL OF THE SHAPE. THEY ARE RECORDED AS A VALUE BETWEEN 0 AND 1. IT GIVES US INDICATION OF WHERE TO SPAWN THE VOXELS.

CSV FILES FROM LANDSCAPE GROUP HAS FOUR EXPLORATIONS, WHICH ARE TREE, PATH, NOISE AND INTEREST-INGNESS. THIS PANEL ENABLES US TO QUICKLY SWITCH FROM 4 MAPS WITH-OUT EDITING THE SCRIPT BACK AND FORTH.

CSV FILE FROM LANDSCAPE GROUP WILL BE IMPORTED HERE

CSV FILE FROM SHAPE GROUP WILL BE IMPORTED HERE. THROUGH SCRIPT WE CAN ALSO MODIFY WHICH CSV FILE WE WANT TO SHOW OR HOW MANY CSV FILES WE WANT TO SHOW.

Page 21: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENTS

THE IF STATEMENT IS THE MOST IM-PORTANT PART OF OUR SYSTEM. IT DECIDES HOW THE VOBJECT WILL BE SPAWNED. THE SCRIPT SUGGESTS IF THERE IS AN VALUE IN THE LAND-SCAPE CSV FILE LOADED IN “ATT” PANEL THAT IS BETWEEN 0.5 AND 0.7, A VOBJECT AS LOADED IN “CSV DATA” PANEL WILL BE SPAWNED AT THAT POSITION.

if (manager.GetComponent<tileManager>().trace == false) { if (accumColor > 0) {

if (voxelManager.showLandscape == true) { myRenderer.enabled = true; } Color myColor = new Vector4(accumColor, ac-cumColor, accumColor, 1); myRenderer.material.color = myColor; } }

if (Treeness > 0.5f && Treeness <= 0.7f && hasSpawned == false) { shapeInt = 0; shapeToHash (); } if (Pathness > 0.5f && Pathness <= 0.7f && hasSpawned == false) { shapeInt = 1; shapeToHash(); } if (Interestingness > 0.5f && Interestingness <= 0.7f && hasSpawned == false) { shapeInt = 2; shapeToHash(); }

if (Noiseness > 0.5f && Noiseness <= 0.7f && hasS-pawned == false) { shapeInt = 3; shapeToHash (); }

//there is a 50% chance of spawning this shape if (Pathness > 0.5f && Pathness <= 0.6 && hasS-pawned == false) { int SpawnChance = Random.Range (0, 2); if (SpawnChance > 0) { shapeInt = 0; shapeToHash (); } else {

manager.GetComponent<tileManager> ().hasSpawned [visitedTileNo] = true; } }

if (accumColor > 0.3f && accumColor <= 0.4f && hasSpawned == false) { shapeInt = 2;

THIS PART OF IF STATEMENT CAN VARY TO CONTROL HOW MANY VOXELS TO BE SPAWNED. THE LARGER THE INTERVAL IS, THE MORE VOXELS WILL BE SPAWNED. BUT A HIGHER INTER-VAL(E.G. 0.5-0.7 TO 0.6-0.8) DOES NOT NECESSARILY MEAN MORE VOXELS ARE GOING TO BE SPAWNED. IT DE-PENDS ON THE PROPERTY OF THE CSV FILE.

Page 22: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

if (myX >= 0 && myX < _gridXDim && myZ >= 0 && myZ < _gridZDim) { if (tileManager.isDead [myX, myZ] == true && voxelManager.showDeadZone == true) { myRenderer.enabled = true; myRenderer.material.color = Color.red; } }

} void shapeToHash () { if (tileManager.isDead [myX, myZ] == false) { // make deadzone for (int x = myX - deadZone [sha-peInt]; x < myX + deadZone [shapeInt]; x++) { for (int z = myZ - deadZone [shapeInt]; z < myZ + deadZone [shapeInt]; z++) { if (x >= 0 && x < _gridXDim && z >= 0 && z < _gridZDim) { tileManager.isDead [x, z] = true;

} } }

// update hashtable Vector3 pos = gameObject.trans-form.position; if (voxelManager.voxelObjects != null) { voxelManager.spawn (voxel-Manager.voxelObjects [shapeInt], pos); manager.GetComponent<tile-Manager> ().hasSpawned [visitedTileNo] = true; } } }

}

myRenderer.enabled = false;

visitedTileNo = thisObject.GetComponent<xyz-ToI>().TileNo;

slaveVisited = manager.GetComponent<tileMan-ager>().hasVisited[visitedTileNo]; slaveTimesVisited = manager.GetCompo-nent<tileManager>().timesVisited[visitedTileNo]; hasSpawned = manager.GetComponent<tileMan-ager>().hasSpawned[visitedTileNo];

THIS IS THE SCRIPT FOR GENERAT-ING DEADZONES. IT INDICATES THAT AROUND EVERY SPAWNED VOBJECT THERE WILL BE AN SPACE AROUND IT WHERE ALL THE TILES ARE “DEAD”, SO NOTHING WILL SPAWN ANYMORE. THE RADIUS OF THE DEADZONE CAN BE ALTERED IN “DEADZONE” PANEL IN “VOXEL MANAGER”(NOTE THAT ONE DEADZONE CAN ONLY APPLY TO ONE CSV SHAPE. YOU CAN SET DIFFER-ENT DEADZONES FOR DIFFERENT CSV SHAPES).

Page 23: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

using UnityEngine;using System.Collections;

public class meshReader : MonoBehaviour {

public GameObject voxelMesh;

public static int voxelReaderX; public static int voxelReaderY; public static int voxelReaderZ;

public int setVoxelReaderX; public int setVoxelReaderY; public int setVoxelReaderZ;

public float bubble = 4;

void Awake() { voxelReaderX = setVoxelReaderX / 2; voxelReaderY = setVoxelReaderY; voxelReaderZ = setVoxelReaderZ / 2; }

// Use this for initialization void Start() {

for (float i = -voxelReaderX; i < voxelReaderX; i++) { for (float j = 0; j < voxelReaderY; j++) { for (float k = -voxelReaderZ; k < voxelRead-erZ; k++) { Vector3 pos = new Vector3(i / 2, j / 2, k / 2); Quaternion rot = Quaternion.identi-ty; GameObject newObj = Instantiate(vox-elMesh, pos, rot) as GameObject; newObj.transform.parent = gameOb-ject.transform; } } }

} // Update is called once per frame void Update () { }}

THIS SCRIPT REFERS TO THE VOX-EL MESH READER. THE MESH READER READS A CUBIC AREA SURROUNDING THE PLAYER. WHENEVER THE PLAY-ER MOVES, THE VOXEL MESH READER MOVES AS WELL AND CHECK WHETH-ER TO SPAWN VOXELS OR NOT. THIS IS WHY ALL THE PRESENTATION OF EXPLORATION PRESENTS AS A CUBIC FORM.

THESE SETTING CAN BE SEEN IN THE MESH READER PANEL AS “SET VOXEL READER” X&Y&Z AND CAN BE ALTERED TO CHANGE THE VOXEL MESH PRESEN-TATION SCALE.

Page 24: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 9legibility images

IF STATE-MENT: 0.2 - 0.4

IF STATE-MENT: 0.5 - 0.7

IF STATE-MENT: 0.8 - 1

BEFORE AFTER

Page 25: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 10building prototypes

First, we set up an Apple ID.

Simply followed the instrcutions

on Apple website.

Next, we set up an Apple

Developer account using the

Apple ID registered previously.

Then, we download the newest

version of Xcode for building the

game into Iphone.

In Xcode-->preference, we created a profile using the Apple

ID. Then double clicked the profile and created an IOS

development profile.

IOS development identity to be

created for game building

Add Apple ID here to create the

profile

Page 26: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 10building prototypes

Type in the registered Apple ID

information here

Then we refered back to Unity to build

the IOS version of the game.

Then we have the built pakage of the

file.

At last, use Xcode to open the game

package, plug in Iphone and select it as the

target device, and then build the game.

the place to change the game

name

Switch the platform to IOS here

Change “Generic IOS device” into

the target phone and hit play to

build

Page 27: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

gps rating in walking/running speed

indoor

street

wooded land

open space

gps rating in cycling speed

street

wooded land

open space

Indoor GPS is not precise. The character keeps rotating and changing position.

GPS in street works better with less rotation and position changing. Relatively precise.

In wooded land GPS works slightly better than indoor, with less rotation but still changing position.

In open spaces GPS works well, with only occasional rotation and changing position.

Generally there is a 3 seconds delay with the GPS tracking, which is acceptable in walking speed. However in the participants

testing session, GPS tracking still does not response to participants’ movement well enough.

GPS in street works fine in street. It roughly stick to the player’s path.

In wooded land GPS is not precise. Cyclist has to stop occasionally to wait the phone to act.

In open spaces GPS works generally fine, slightly changing position.

ALGORITHMIC SKETCH TASK 11gps accuracy exploration

Page 28: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

TR: 25x25GS:100x100RR: 0.3s

TR: 25x25GS:100x100RR: 1s

TR: 25x25GS:100x100RR: 0s

Ram TEST

TR: 25x25GS:100x200RR: 0s

TR: 25x25GS:100x200RR: 0.3s

TR: 25x25GS:100x200RR: 1s

Ram TEST

TR: 20x20GS:300x300RR: 0s

TR: 25x25GS:300x300RR: 0.3s

TR: 30x30GS:300x300RR: 1s

Ram TEST

ALGORITHMIC SKETCH TASK 12recommended setting explo-ration

Page 29: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

SICK RADIUS 5 SICK RADIUS 3

FLOOD LEVEL 0.1 FLOOD LEVEL 0.7

ALGORITHMIC SKETCH TASK 12recommended setting explo-ration

Page 30: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

This problem is not considered happen before the session. Due to this problem we would encourage playing this game by walking so you can hold the phone closer to see it clearly.

GPS is not considered accurate enough by all participants.

Might need to increase the time limit of the game because all participants did not archieve any goals. They can only compare their value.

Expaining the overall goal of the game Testing the game at walking speed

Bicycle set up for the game Testing the game at cycling speed

summarized comment sheet from participants

ALGORITHMIC SKETCH TASK 13prototype testing session

Page 31: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 14voxels movement recording

Perspective

Elevation

Orthographic

Plan

Page 32: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 14player video recording

Page 33: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 15comic strip

Something started downloading... And yes, you have the game Pixel Park on your phone!

Today, Quarries Park is peaceful as always. What is different is that there are QR codes scattered everywhere in the park: on the tree, on that rubbish bin, on the skatepark... What are they? Simply point your phone to them, and see what happens?

Pixel Park

Page 34: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

Starting the game, you can choose a character from the 5 characters. Dif-ferent characters like different areas of the park. These areas are based on at-tributes of the park the character likes or dislikes. Keep that in mind if you want to get high score in the game!

Known their preference? Now you are ready to bring the game to the site and play it!

I like quiet spaces with great views but I can’t climb steep hills!

I don’t want to be found by adults! Go to bushy areas where grown ups find it hard to through in but I don’t!

I just wanna BUILD for MMMoney! More flat areas with great views would be per-fect!

Wah! WoooWah!(I like bushy area where I might find some food!)

I like open and nat-ural spaces! I also like the creek where I can see water and wild life!

Page 35: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

Pixel Park provides player a virual reality of the site. In game everything is presented in voxels. For example, people voxels will spawn on the path because people normally walk on path, and vegetation voxels spawn at where trees and grass is..

Starting to play the game on site! Oh I get a runaway, quickly look to bushy area to get my score efficiently!

Simply walk on voxels to own them! The voxels on the area you walk through will be petrified and then owned by you when it turns black! This will add to your dollar value displayed in the screen!

Page 36: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

How do we win the game?-With the dollar value increases, the flood at the creek will also increases! When you earn enough dollar value to flood the whole map, you win the game!-Earn voxel value as much as possible before the game reaches its time limit.-Own all of the voxels of the game!

Oh, I just see a power-up! The bigger black power-up voxels can temporarily increase the area of voxels of your infection, so as to boost up your score!

TIME UP!

Page 37: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

Now, simply enjoy the game! Through your phone, you become your character and think as your character. You will discover interesting areas you wouldn’t go and have an unique experience!

The game will bring you to the world of voxels and give you an unique experience of exploration!

Quickly think! Where a runaway wants to go?

Wow look at the hybrid landscape! The path on site is shown in the game at the right place!

So what are you waiting for? Quickly join us in the game and explore a much more interesting Pixel Park!

Page 38: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

So what are you waiting for? Quickly join us in the game and explore a much more interesting Pixel Park!

Page 39: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook

ALGORITHMIC SKETCH TASK 16group introduction diagram

70

//////TC00 visible tiles /// /// //accumColor = attributA if (manager.GetComponent<landscapeManager>().attDisplayedOnTile == 0) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt0; }

else if (manager.GetComponent<landscapeManager>().attDisplayedOnTile == 1) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt1; }

else if (manager.GetComponent<landscapeManager>().attDisplayedOnTile == 2) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt2; }

else if (manager.GetComponent<landscapeManager>().attDisplayedOnTile == 3) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt3; } else if (manager.GetComponent<landscapeManager>().attDisplayedOnTile == 4) { accumColor = thisObject.GetComponent<xyzToI>().slaveAtt4; }

Voxel Transformation

Scenario Design & Attributes decision

Algorithmic analysis & CSV file generation

Match Up

If Statements

(Framework for voxel seeding)

The actual game &

Explorations and different configurations 6

Page 40: Chuhan Yao 683814 AIR Studio Part C Individual sketchbook