Part B Journal

Preview:

DESCRIPTION

 

Citation preview

1

GROUP 2INTERACTION

2

[F] Next step for the rest of the semester and Learning outcomes

4[A] Groups Exploration

[B] Tutorials and understanding Unity

[C] Exploring Mid-Semester Prototype

[D] Response to Mid-Semester Presentation

[E] Expression from Mid-Semester RedefiningExplorations

8

16

46

52

74

CONTENT PAGE

3

Hattie Ong_778153Chuhan Yao_683814Hanxuan Bi_673831

4

[A] GROUPS EXPLORATION

5

6

Ourgroupisthebridgethatconnectsgroup1andgroup3workstothefinaloutcome.Wecreatethisprocessthat uses researched landscape from group 3 and interesting shapes generated by group 1 to produce a similar landscapetothesite.Weassignlogicandrulesonhowgroup1shapescanbeheneratedandhowgroup3land-scapecanbevisualised.

landscape geometry from group 3 voxel object geometry from group 1

convertedcsvfileof landscape convertedcsvfileof voxelobject

Unitymanagerpanelthatreadscsvfiles

actual gaming interface in Unity

PART 0: GROUPS EXPLORATIONInput / Process / Output

7

DESIGN OUTCOME: A STATIC SNAPSHOT OF THE PARK SYSTEM

8

[B] TUTORIALS AND UNDERSTANDING UNITY.

9

10

CLOCKAftergoingthroughsomebasictutorialsonhowtouseunity,Wethanmoveontosomethingsimplerbycreatingaclockandallowingittomoveatthesametimeasthecomputerdoes.

FRACTALAdefinatelymoreadvancecodingwestartgettinginto.Thiswasverydifferentfromtheinitialclocktutorialwehad.Itwasmorechallengingthantheclocktutorials.Wemoveontoamoreadvanceoneinlooking at how to spawn shapes using and object and when played the object would be able to rotate and move randomly

TUTORIALS

11

FRACTALThefractalusescodetorandomlygeneratesalistof shapesthatwasgiventoit.Itwillnevergeneratesthesameshapethenexttimeyoupresstheplaybutton.

12

Aftergettingusedtounity,wetried"seedingthelandscape".Withunityfilethatwasgiven,wefirsttriedtospawnasingleshapeintheheightmapthatwasprovidedtous.Afterunderstandinghowtheheightmapworks,WemoveontodoitwiththreedifferentpicturestotesthowtheCSVfileworks.

Wethanmoveevenfuthertotestouthavingdifferentshapespawningatdifferentnumbersof theheightmap.Insteadof justhavingacube,weaddedonsphere,cylinderandcapsule.Thanwestartexploringonhowtoincreasetheheightof theshapeatdifferentareasof themapgivingita3Dlandscapeview.

GENERATING THE LANDSCAPELandscape seeding - Trying out if statements and exploration of unity

// Update is called once per framevoid 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; }

myRenderer.enabled = false;

visitedTileNo = thisObject.GetComponent<xyzToI>().TileNo;

slaveVisited = manager.GetComponent<tileManager>().hasVisited [visitedTileNo]; slaveTimesVisited = manager.GetComponent<tileManager>().timesVisited [visitedTileNo]; hasSpawned = manager.GetComponent<tileManager>().hasSpawned[visitedTileNo];

if (manager.GetComponent<tileManager>().trace == true) { // visited colour if (slaveVisited == true && thisObject.GetComponent<xyzToI> ().tileWithinRange) { myRenderer.enabled = true; colourVal = new Vector4((float)slaveTimesVisited / 100, (float)slave TimesVisited / 100, (float)slaveTimesVisited / 100, 1); Color myColor = colourVal; //Color myColor = new Vector4 (slaveTimesVisited/10, slaveTimesVisited/10, slaveTimesVisited/10, 1); myRenderer.material.color = myColor; }

//////////////////////////////////////////////////////////////////////////////////// REF1 ////////////////////////////////////////////////////////////////////////////// if (accumColor > 0.5f && accumColor <= 0.6 && hasSpawned == false) { int SpawnChance = Random.Range (0, 2); if (SpawnChance > 0) { shapeInt = 0; shapeToHash (); } else { manager.GetComponent<tileManager> ().hasSpawned [visitedTileNo] = true; } }

13

The coding here is giving eachimagesintheCSVfilesanattributenumberto allow changes to be madeintheGameframe.

The if statements here allows me to indicate the tiles that i wanted to spawn objects when the readerscansthroughit.

14

15

HeyhowdoestheCSVfileworkinGrasshop-per?Icantseemtogetittowork.Itdoesnotreallygivemeanydata.

Imighthavethesameproblemasyou.Thedatathatisstatedintheexcelfileallcomesoutas0,0,0.Thereisnonumberingthatstatsthereisdatain.

That’s weird. Did you guys check that the plugins for Grasshopper are all in the correct position?

Yup!Allthepluginsarecorrect.Oristheresomething wrong with my images?

I dont think so. I have tried multiple images but it still works everytime I plugin. Or did u acci-cently press something for the image sampler.

IthinkImighthavegetit.MyproblemwasjustthatIhavepluginthewrongarea.TheImagesampler was suppose to go into entwine before goingintoAttributeCSVImighthaveaccident-ly tangled the connections

Hmm.Thatsstrangeallof theconnectionsarecorrectandtoplace.IhavedubleclicktheImag-es sampler and it does not really show is there is somethingwrongwithitornot.

When you double click the images sampler, directly choose the images from there. The interpolate must be tick in order for it to work. And your x and y domain both must be rang-ing from 0.0 to 0.1

Oh!Igotit.Ididntticktheinterpolatethatmightbethereason.Letmetryandseeif itsgoing to work this time round

GETTING CSV FILES TO WORK

16

[C] EXPLORING MID-SEMESTER PROTOTYPE

17

18

TREENESS

PATHWAY

PERSPECTIVE PLAN ELEVATION

INTERESTINGNESS

NOISENESS

AlltheshapesandlandscapeothergroupshavecreatedareconvertedinCSVfiles.TheCSVfilescontainedalistof numersindicatingthepositionof everyvoxelof theshape.WhenweimporttheCSVfilesintounity,wecanspawnacubeasavoxelsatthepositionrecordedinCSVfilestorepresenttheshapes.

SHAPESGENERATEDBYGROUP1(DEMOATTHISSTAGE)

COMBINATIONS OF DATA FROM GROUP 1 AND 3

19

PATHWAY

NOISENESSTREENESS

INTERESTINGNESS

LANDSCAPE GENERATED BY GROUP 2

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; } } myRenderer.enabled = true; }

20

ThespacesareconvertedintoCSVfiles.CSVfilesconsists of a list of numbers that records the position of everysinglevoxelsof theshape.Theyarerecordedasavaluebetween0to1.Itgivesusindicationdof wherethevoxelsaretobespawnat.

CSVfilesfromLandscapegrouphasfourexplorations,whichareTree,Path,NoiseandInterestingness.Thispane; enables us to quickly switch between the 4 attri-butes/Thisablesustodoworkmoreefficientlythanhavingtogobackagainandagaintochangethescript.

CSVfilesfromlandscapegroupwillbeimportedhere.

CSVfilesfromshapegroupwillbeimportedhere.ThroughscriptwecanalsomodifywhichCSVfileswewanttoshoworhowmanyCSVfileswewanttoshow.

PROCESS: THE DESIGN OF GAMING SYSTEM

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; } } myRenderer.enabled = true; }

21

This part of scripts indicates that for the different number we put in “ATT” panel on “Title Manager” reads corresponding partof theinformationintheCSVfiles.

This part of scripts indicates that for the CSVshapesputtingitinthe“element”panel,correspondingreadingthem.

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; shapeToHash (); }

22

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENTS

Thispartof If statementcanvarytocontrolhowmanyvoxelstobespawned.The larger the interval, The more voxels wouldspawn.Butahigherinterval[0.5-0.7comparedto0.6-0.8]doesnotneces-sarily mean more voxels are going to be spawned.Itdependsonthepropertiesof thecsvfiles.

TheIf statementsisthemostimportantpartof ourwholeintegratingsystem.ItdesideshowtheVoxelobjectwillbespawned.Thescriptsuggestif thereisanvalueinthelandscapeCSVfileloadedin“Attpanelthatisbetween0.5and0.7.Avoxelobjectasloadedin“CSVDATA”panelwillbespawnedatthatposition.

23

PESPECTIVEVIEWOFTREE,PATH,INTERESTINGNESSANDNOISESHAPESPAWNINGATDIF-FERENTSPACE.

However, at this stage the outcome looks very messy and has lots of overlapping intersections with one anoth-er.Inthiscase,Wecannotobservemuchinformationfromit.InaCSVfile,therearelotsof voxelobjectsthatwouldspawnoneverytiles.Andasthevoxelsobjectsareproducingvoxelsinalldirections,thechancesof themintersectingoneanotherisextremelyhigh.Topreventthisfromhappenandovercrowdingthearea,weintro-ducedtheconceotof deadzones.Deadzonereferstothezoningthatsurroundsaspawnedvoxelobject.Whereit indicates that nothing will spawn within that deadzone area overriding the rules of voxel object spawning at thatspace.

PROTOTYPE SYSTEM EXPLORATION: INITIAL EXPLORATION

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];

24

Thisisthescriptforgeneratingdeadzones.Itindicatesthataroundeveryspawnedvoxelobject, there would be a space around it where all the tiles are “dead” so nothing can be spawnedatthosedeadareas.Theradiusof thedeadzone can be altered in “deadzone” pane; in “voxel manager” [Note that one deadzone can onlybeappliedtooneCSVshapes.WeneedtosetdifferentdeadzonesfordifferentCSVshapes].

25

D=2

D=3

D=4

D=5

PERSPECTIVE PLAN ELEVATION

INTERESTINGNESS

FIRSTLYWEEXPLOREDHOWDIFFERENTDEADZONESWOU;DEFFECTASINGLEOBJECTANDHOWTOSHOWTHEBESTPRESENTATIONOFTHEVOBJECT.WEWANTTOSHOWANINTERESTINGREPRESENTATIONOFTHEPARKSYSTEMWITHVOBJECTSINTERSECTINGWITHEACHOTHERBUTSTILLDONOTLOOKMESSY.(KEY:D=DEADZONE)

BecausetheVoxelobjectsof interestingnessisrelativelybigandthespawningareasareclosertoeachother,ahigherdeadzoneshastobesetforit.Adeadzonerangingfrom4to6canshowaclearerstuctureandintersections.

PROTOTYPE SYSTEM EXPLORATION: DEADZONE EXPLORATION

26

D=2

D=3

D=4

D=5

PERSPECTIVE PLAN ELEVATION

PATHWAY

Thevoxelobjectsof pathdonotintersectwitheachotherandisnotcloselyspawned.Thereforarelativelylowerrangeof valueswouldbemoresutibleforit.Rangingfromdeadzones3to4wouldshowaricherpresentationwithoutlookingclustered.

PROTOTYPE SYSTEM EXPLORATION: DEADZONE EXPLORATION

27

D=2

D=3

D=4

D=5

PERSPECTIVE PLAN ELEVATION

NOISENESS

Thevoxelobjectsof noisepresentsasdiscretevoxelsthelowerdeadzonewechosetoused.Themoredensethevoxelswouldbe.Inordertoshowintersectionandnottomakethepresentationlookmessy.Arangeof deadzonesfrom2to3wouldbesutibleforthis.

28

TREENESS

D=2

D=3

D=4

D=5

PERSPECTIVE PLAN ELEVATION

Inorderforthetreevoxelstobevisualisedasliterallyatree,thetreesbasicallyhassomeareasthataredenseandsomeareaswhicharemoresparse.Tomakesuretohavethatidea,wetriedoutaviewrangeandrealisethatdeadzonesrangingfrom3to4canbeused.

PROTOTYPE SYSTEM EXPLORATION: DEADZONE EXPLORATION

29

Secondly, we begin to explore how different if statements with different intervals would effect the presentation of theparksystem.Wealsowanttoexploretheexperienceof differentvobjectexistingtogether,withadefaultdeadzoneof 3.(Key: I=interestingness N=noise P=path T=tree IS=if statement)

PERSPECTIVE PLAN ELEVATION

N+IIS:0.2-0.4

Fromthediagramwecanseethatnoiseisdenserforboth0.2to0.4and0.8to1.Soinordertocontrolthegrowthof noise,itisbettertokeepitwithin0.5to0.7.Also,interestingnessgrowsverydenseandtherestillisintersec-tionsin0.2to0.4.Sotobettervisualiseitwedecidetokeepitsif statementswithin0.2to0.4.

N+IIS:0.8-1

N+IIS:0.5-0.7

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

30

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT EXPLORATION

PERSPECTIVE PLAN ELEVATION

T+PIS:0.5-0.7

Intermsof thetreevobject,thereishardlyanyspawningwithin0.2to0.4anditiseasytohaveaclearviewof itbothin0.5to0.7and0.8to1.Forthepathvobject,aclearviewcanbeseeninboth0.2to0.4and0.8to1.Sotohaveabetterpresentationof bothvobjects,wecankeepbothvobjectin0.8to1.

T+PIS:0.8-1

T+PIS:0.2-0.4

31

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT EXPLORATION

P+I+NIS:0.5-0.7

PERSPECTIVE PLAN ELEVATION

P+I+NIS:0.8-1

In0.8to1,PathandInterestingnessjamstogetherandthewholeviewbecomesmessybecauseof overmuchintersection.Sowemakechangesof thePathvobjectinto0.2to0.4fromlastpagebecauseof thedensityof Interestingnessvobject.

P+I+NIS:0.2-0.4

32

P+I+N+TIS:0.2-0.4

P+I+N+TIS:0.5-0.7

P+I+N+TIS:0.8-1

Weputall4vobjectstogethertotestouttheeffect.0.2to0.4doesnothaveTreevobjectatallsoitonlyprovidesanincompleteview,andin0.8to1everythingjamstogetheranditishardtoview.Overall,0.5to0.7providesrelativelyclearviewof all4vobjects.

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT EXPLORATION

33

After that, we want to combine what we have explored before, to test out how different deadzones in different if statementseffecttheexperienceof parksystem.(Key: i=interestingness, id=interestingness deadzone N=noise, nd=noise deadzone P=path,pd=path deadzone T=tree, td=tree deadzoneIS=if statement) N+IIS:0.2-0.4ND=1ID=1

N+IIS:0.2-0.4ND=3ID=2

N+IIS:0.5-0.7ND=1ID=1

N+IIS:0.5-0.7ND=3ID=2

N+IIS:0.8-1ND=1ID=1

N+IIS:0.8-1ND=3ID=2

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT EXPLORATION

34

N+IIS:0.2-0.4ND=4 ID=1

N+IIS:0.2-0.4ND=5ID=5

N+IIS:0.5-0.7ND=4 ID=1

N+IIS:0.5-0.7ND=5ID=5

N+IIS:0.8-1ND=4 ID=1

N+IIS:0.8-1ND=5ID=5

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

35

T+PIS:0.2-0.4ND=1ID=1

T+PIS:0.2-0.4ND=2ID=3

T+PIS:0.5-0.7ND=1ID=1

T+PIS:0.5-0.7ND=2ID=3

T+PIS:0.8-1ND=1ID=1

T+PIS:0.8-1ND=2ID=3

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

36

T+PIS:0.2-0.4ND=4 ID=2

T+PIS:0.2-0.4ND=5ID=5

T+PIS:0.5-0.7ND=4 ID=2

T+PIS:0.5-0.7ND=5ID=5

T+PIS:0.8-1ND=4 ID=2

T+PIS:0.8-1ND=5ID=5

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

37

Guysss.Unitykeepsgivingoutrederrorsstatingthatthereisaproblemwiththescript.Ihavetried looking at the script but there seems to be noproblem.

Did you change the coding in the script to make sure it matches?

Ohokay!IthinkImighthsvegottenit.Ihaveforgotten to match the numberings with the elementsinthemanagerpage.

OkayIwilltake0.5to0.7forexplorations.

Yup! After getting the number than you will have to divide them each by 255 than sub in to the numbersinthecolourscript.

IF STATMENTS & COLOUR CODE

You need to make sure that ur numbering for theattributematchestheoneinyourmanager.Example if ur if statement is talking about att 1 that att should be the one in the manager stated aselement1.

Ohokay.ThanIwilltaketherange0.8to1.

OhandbeforeIforget.Ihavetakenthevaluesfrom0.2to0.4totestoutontheIf statements.

Justaquickquestion.Howdoweassigncolorsfrom our own colors scheme again?

IthinkyouneedtogetthenumbersfortheRGBvaluesfirst.Youcaneithergoonlinetogetthe numbers or you could just use photoshop to checkcolorvalue.

And dont forgot to add in f if there is a decimal point.

AlrightIgotit.Thanks!

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

N+I+PIS:0.2-0.4ND=1ID=1PD=1

N+I+PIS:0.2-0.4ND=3ID=1PD=3

N+I+PIS:0.2-0.4ND=4 ID=2PD=4

N+I+PIS:0.5-0.7ND=1ID=1PD=1

N+I+PIS:0.5-0.7ND=3ID=1PD=3

N+I+PIS:0.5-0.7ND=4 ID=2PD=4

N+I+PIS:0.8-1ND=1ID=1PD=1

N+I+PIS:0.8-1ND=3ID=1PD=3

N+I+PIS:0.8-1ND=4 ID=2PD=4

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

38

N+I+PIS:0.2-0.4ND=6ID=1PD=4

N+I+PIS:0.2-0.4ND=6ID=6PD=6

N+I+PIS:0.5-0.7ND=6ID=1PD=4

N+I+PIS:0.5-0.7ND=6ID=6PD=6

N+I+PIS:0.8-1ND=6ID=1PD=4

N+I+PIS:0.8-1ND=6ID=6PD=6

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

39

N+I+P+TIS:0.5-0.7ND=1ID=1PD=1TD=1

N+I+P+TIS:0.5-0.7ND=3ID=2PD=4TD=3

N+I+P+TIS:0.2-0.4ND=1ID=1PD=1TD=1

N+I+P+TIS:0.2-0.4ND=3ID=2PD=4TD=3

N+I+P+TIS:0.5-0.7ND=4 ID=2PD=3TD=2

N+I+P+TIS:0.2-0.4ND=4 ID=2PD=3TD=2

N+I+P+TIS:0.8-1ND=1ID=1PD=1TD=1

N+I+P+TIS:0.8-1ND=3ID=2PD=4TD=3

N+I+P+TIS:0.8-1ND=4 ID=2PD=3TD=2

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

40

N+I+P+TIS:0.5-0.7ND=6ID=2PD=4TD=2

N+I+P+TIS:0.5-0.7ND=6ID=6PD=6TD=6

N+I+P+TIS:0.2-0.4ND=6ID=2PD=4TD=2

N+I+P+TIS:0.2-0.4ND=6ID=6PD=6TD=6

N+I+P+TIS:0.8-1ND=6ID=2PD=4TD=2

N+I+P+TIS:0.8-1ND=6ID=6PD=6TD=6

PROTOTYPE SYSTEM EXPLORATION: IF STATEMENT & DEADZONE EXPLORATION

41

PROTOTYPE SYSTEM EXPLORATION: COMPUTATION EXPLORATION

20*8*20 Mesh Reader

25*8*25 Mesh Reader

42

PROTOTYPE SYSTEM EXPLORATION: COMPUTATION EXPLORATION

30*8*30 Mesh Reader

35*8*35 Mesh Reader

43

50*8*50 Mesh Reader

Wealsorunaramtesttoseehowwecanpresentmostof ourgamecontentwithoutruiningthegamingexperi-encebylagging.For20*8*20and25*8*25of themeshreadermycomputerrunssmoothlyat60fpsbutnotad-equatecontentisshown.For30*8*30and35*8*35of themeshreadercomputerrunsat30fpsandoccasionallydropsto15fpsbutthecontentshownisrich.ThenItriedtopushmycomputertothelimitandtried50*8*50of thevoxelmeshreader,anditisbasicallynotplayable,withthefpsbelow10.Afterdiscussionwedecidedtouse35*8*35of thevoxelmeshreader,whichdeliversenoughcontentanddoesnotruinthegamingexperience.

PROTOTYPE SYSTEM EXPLORATION: COMPUTATION EXPLORATION

44

PROTOTYPE SYSTEM EXPLORATION: MECHANICAL HIGHLIGHTS OF THE SYSTEM

THIS SCRIPT REFERS TO THE VOXEL MESH READER. THE MESH READER READS A CUBIC AREA SUR-ROUNDING THE PLAYER. WHENEVER THE PLAYER MOVES, THE VOXEL MESH READER MOVES AS WELL AND CHECK WHETHER 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.

PROTOTYPE SYSTEM EXPLORATION: COMPUTATION EXPLORATION

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 () { }}

45

46

[D] RESPONSE TO MID-SEMESTER PRESENTATION

47

Above is a set of pictures showing the screen shots we used in these projects, which the bottom onebeingthenewone.Forthis journalwere-doallof ourscreenshotsfromthepreviousprojectduetoseveralreasons.

Firstly, the previous screen shots does not show the complete view of the voxelmesh, since we didnotknowhowtosetthecameradistance.

Wealsohidethecsvmapforthenewscreenshotsbecausewethinkitcangiveaclearerview,similar for the background we change to white background so only the voxels are shown, which ismucheasierforcomparison.

RESPONSE FROM MID SEMESTER: LEGIBILITY IMAGES

48

IF STATE-MENT: 0.2 - 0.4

IF STATE-MENT: 0.5 - 0.7

IF STATE-MENT: 0.8 - 1

This sets of pictures shows the difference between the old and new screen shots. This is the same scenario with different value of if-statement. For the new screen shots we set the location of the camera so that each screen shots were taken at the same spot for better comparison.

BEFORE AFTER

By doing so we found something really interesting is that the ‘Noise’ type of voxels actually increases its amount when the if-statement is lower, completely different from the other type of voxels.

We could have not find this if the location were not the same as shown on the left,as the blue ‘Noise’ voxels changes irregularly, where on the right the purple ‘Noise’ voxels clearly gets more while the if statement decreases.

49

RESPONSE FROM MID SEMESTER: LEGIBILITY IMAGES

Thescreenshotsusedinmidsemesterpresentationarenotlocatedatthesamespot.Becausethespawnspotof the player is at the boundary of the landscape, so we have to control the player to the middle of the map to take screenshot.Soitisveryhardtogotothesamespoteverytimeweplaythegame.Also,themanthird-personcameradesignedforplayerchangesanglewhiletheplayermakesturns.Sothescreenshotspresentindifferentangleaswell.Thismakesaudiencesveryhardtoreadtheimagesandobservewhatischangingintheprocess.

So this time we standardised the camera angle and position, and the player will spawn at the middle of the land-scapewithapespectiveanglesoitismucheasiertotakescreenshotswithoutmovingtheplayer.Forexample,fromthesetwoscreenshotswecaneasilyobservethediffferenceandgrowthof thestructure.

Wealsofoundoutthatsimplyprintingscreenisnot a good enough method to generate screen-shots.Thepicturewillhaveunityinterfaceboundaries and resolution is not high enough to reach the rpesentation standard, and we need to change the camera angle and place for top, elevation view for every screeshot, which isverytime-consuming.Sothistimeweusedabuilt-insoftwarecalled“ÏnstantScreenshot”.Itallowsustotakehighresolutionscreenshotwith a custom size directly from different cam-eras.Soaslongaswehavepespective,top,ele-vation cameras ready to use, we can generate all the screenshots without changing any property of thecamera.

50

51

R u sure part c needs that much of screen shots? The plan and elevation looks quiet similar to part b, cause the scenarios r the same

OhhIsee.Ifinallygotit.Iwasstillabitcon-fusedIthoughtwewouldhavetoputdoubleof the160Imagesbutthisclearsthingsup.Thanks!

you only choose some photos out. That day alex said right. Choose only a selection of photo to compare the new and the old. 160 Images should be in part 2 where they wrote to include images in white background

Sorry but can you give me a more indepth of what should be written in part 3? About the part whereweresponsetomid-sem.

In Part 3 is reponse to midsem. So based on the different comments we got what did we do .

For example like the original problem we had was just to printscreen and crop images out which in negative point of view it is not cleared and might be pixalated

RESPONSE TO MID-SEMESTER

Ithinkwouldbebettertochooseonesetof dead zone and do a comparison to the part b ones on each scenario

Dicuss what did we do to improve the quality of the images. Than give an idea of how it worksLike comparing to other groups what are the difference and difficulty we faced when we were trying to prepare for the Mid-sem Preseanta-tion.

However we started exploring different tools of gettingimagesfromunity.Wewereabletodownload programs to help us get a clearer views

Yup Yup! You got it.

52

[E] EXPRESSION FROM MID-SEMESTER REDIFINING EXPLORATIONS

53

54

The idea here is to be surrounded by voxels which arecreatedbythesite.Thesitesuddenlybecomesaliveinfrontof you.Everycolourandshapesstarts

becomingrealfromthesite.

BEING IN THE WORLD FULL OF VOXELS.

55

Hereisaviewof youwalkinginthesite.YouarecurrentlybeingsurrowndedbyTrees,Paths,Interestingareas[playground]and

alsoareasthatproducesnoise.

56

BROWNSTANDSFORPATHWAYSTHATARECURRENTLYONSITE.

GREENLITERALLYSTANDSFORTREES THAT ARE CURRENTLY

THERE

WHAT DO WE SEE IN THE WORLD FULL OF VOXELS?

57

PURPLESTANDSFORNOISE.WHICHMEANSSOUNDSWASPRODUCEATTHISFEWAREAS

THATISWHYVOXELSARESPAWNING.

LIGHTPURPLESTANDSFORINTERESTING-NESS.THEREISSOMETHINGGOINGONIN

THOSEAREAS.ONEMIGHTBETHEREISAPLAY-GROUNDTHERE.

58

A different colour from all the other voxels sur-rounding it what could it mean? The voxels are being overlapped by Noise and Interestingnessthatiswhyadifferentcolourhasappearforthatspecificvoxels.

SPECIFIC DETAILS THAT WE CAN SPOT?

59

The same ideas as the previous ones this colour is being produce because interestingness is being overlappedbypath.Itcangiveanindicationthatin this path interesting things has happen here before.[Cyclistpassingthrough]

60

Surrounded by trees, Noise and Paths

Surrounded by trees, Paths and a little interesting areas

61

Surrounded by a huge degree of noise and a little Path and Trees

Surrounded by large amount of Paths and Interestingness

62

Gettingtodiscovermoreaboutcolourschemes.UsingthePluginColrwewereabletocomeoutwithavarietyof colourscehemeswhichintroducestheideaof usinggradient.Theideaof theGradientwastochoosetwocolorsanditwilllookslikethecolorswascombinetogether.IwasfairlyimpressasIwasabletoproduceahugevarieationsof gradientcolours.

Forthesefewimages,Ihadjustconstantlychoosetohaveallthedifferentsurfacestohaveacommoncolorgradientandtesteditout.

REDEFINING EXPLORATIONS

63

64

SERIES OF COLOR SCHEME

65

66

SERIES OF COLOR SCHEME

67

68

Gradient=WhiteandPinkGradient = Beige and Purple

NextIdiscoveredthatIcouldplayaroundwiththedifferentsurface.Icouldpickacolourforthefrontandanothercolourfortheback.Andthususingthisconcept,ItriedcombiningafewcoloursthatIoriginallyhaveaboveandtweakalittletoseehowitwouldappear.

COMBINATIONS OF GRADIENT IN A CUBE

69

Gradient = Grey and Orange

70

71

72

VARIETION OF COMBINING COLORS

73

74

[F] NEXT STEP FOR THE REST OF THE SEMSTER AND LEARNING OUTCOMES

75

76

Thefutureof ourprojectdevelopmentwillbeusing“GAMEOFLIFE”asaninspirationforourexplorations.Gameof lifeisacellularautomaton,itisa “game” with zero players, meaning that it is an automatic evolution deter-minedbyitsinitialstate.Orsimply,itisa“game”thatworksonitsown.

Theuniverseof theGameof lifeisaninfinitetwo-dimensionalorthogonalgrid of square cells, each cells follows a certain rules and determine its state baseonit.Baseontheserules[Examples,Boxwillspawnif 3ormoreboxesare together] the pattern that these cells constitute will change its form and as thegamescontinue,thecellswouldcreatefurthergenerations.

BelowisaImageshowingoneof thepatternsthatcontinouslychangeinitsform,basedonthesystemrulesthataresettoit.Asaresult,itstartsmovingalonga2dgridwithoutstopping.

77

The idea of the explorations is to have the players walking around the 2D gridfieldandabletointeractwiththevoxels.Thevoxelswouldbemovingbetween each grid plan view and also section view in which similiar to the

ideafromgameof life.

78

This is our exploration of the idea of the ‘Game of Life’, by dividing the player’splaygroundintothreeseparatelayersof grid.Differentthaningame of life is that it has three layers of the grid and each layer is a grid thatthecellscanmoveon.

79

Now the cells not only can transform in one grid but three of them and movingbetweenthelayers,creatingamorethree-dimensionalmovement.Also each layer can assign different interaction with the player, making the experiencemorediverse.Thisiswhatwethinkourdirectionforthefutureprojectshouldbe.

80

Throughout thewhole journey till now,We have started learning newprogrammesandoneinparticularisUnity.WestartedoutfromknowingnothingaboutUnitytonowwhereweunderstandbasicsof usingUnity.WecancreateIf statementsandunderstandpartsof thecodingandhowitactuallyworks.Wespendalargeamountof timeunderstandingUnityandtheframeworkof theprototypewewereassigntoworkin.

Using the data collected from other groups, we started creating if stat-mentsandrulesforthelandscape.Seedingthelandscapewemanagetogetthesiterepresentedasavirtualreality.Wedonotonlyjustmimicthesite, we also established a connection between the players and the land-scape.Theprototypethatwecreatedhelpenhancetheplayersinteractionandexperinceonthesite.

Using GPS as a tracking tool, Users will be able to download the game anduseitonsite.Thisgameallowsusertoexperienceadifferentworldguidingthemtoareaswheretheycanbetterexperiencethepark.

LEARNING OUTCOMES