Part B Journal
-
Upload
hattie-ong-si-min -
Category
Documents
-
view
222 -
download
2
description
Transcript of Part B Journal
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