-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathbuild.html
More file actions
408 lines (386 loc) · 12.9 KB
/
build.html
File metadata and controls
408 lines (386 loc) · 12.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
<!DOCTYPE HTML>
<!--
Template copyright and license:
Spatial by TEMPLATED
templated.co @templatedco
Released for free under the Creative Commons Attribution 3.0 license (templated.co/license)
-->
<html>
<head>
<title>Tangible Landscape</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<!--[if lte IE 8]><script src="js/html5shiv.js"></script><![endif]-->
<script src="js/jquery.min.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-layers.min.js"></script>
<script src="js/init.js"></script>
<link rel="shortcut icon" href="./images/tl_favicon.ico" />
<noscript>
<link rel="stylesheet" href="css/skel.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/style-xlarge.css" />
</noscript>
</head>
<body>
<!-- Header -->
<header id="header" class="alt">
<h1><strong><a href="https://geospatial.ncsu.edu/geoforall">NCSU</strong><span style="color: #222"> GeoForAll Lab</span></a></h1>
<nav id="nav">
<ul>
<li><a href="index.html">Concept</a></li>
<li><a href="applications.html">Applications</a></li>
<li><a href="support.html">Get-your-own</a></li>
<li><a href="build.html">Build-your-own</a></li>
<li><a href="publications.html">Publications</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</header>
<!-- Main -->
<section id="main" class="wrapper">
<div class="container">
<header class="major special">
<h2>Build-your-own</h2>
</header>
<p>Read our <a href="https://github.com/tangible-landscape/grass-tangible-landscape/wiki">Wiki</a>
for detailed instructions about setting up Tangible Landscape and joining our
<a href="https://github.com/tangible-landscape/grass-tangible-landscape/wiki/Community">community</a>.</p>
<!-- Overview -->
<header>
<h3>Multiplatform</h3>
</header>
<p>
<i class="fa fa-linux fa-2x" aria-hidden="true"></i>
<i class="fa fa-apple fa-2x" aria-hidden="true"></i>
<!--<i class="fa fa-windows fa-2x" aria-hidden="true"></i>-->
</p>
<!-- Installation -->
<header>
<h3>Dependencies</h3>
</header>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Program</th>
<th>Use</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/OpenKinect/libfreenect2">libfreenect2</a></td>
<td>Drivers for Kinect v2</td>
</tr>
<tr>
<td><a href="http://pointclouds.org/">PCL</a></td>
<td>Point cloud processing</td>
</tr>
<tr>
<td><a href="https://grass.osgeo.org/">GRASS GIS 7</td>
<td>Geographic information system</td>
</tr>
<tr>
<td><a href="https://www.blender.org/">Blender</a> + <a href="https://github.com/domlysz/BlenderGIS">BlenderGIS addon</a></td>
<td>3D modeling engine and GIS addon</td>
</tr>
</tbody>
</table>
</div>
<details>
<summary><i class="fa fa-apple fa-lg" aria-hidden="true"></i> guide</summary>
<ul class="alt">
<li>
Install PCL with Homebrew:
<a href="http://www.pointclouds.org/documentation/tutorials/installing_homebrew.php">http://www.pointclouds.org/documentation/tutorials/installing_homebrew.php</a>
</li>
<li>
Install GRASS GIS 7.0 with Homebrew using the OSGeo Mac Homebrew tap:
<a href="https://github.com/OSGeo/homebrew-osgeo4mac">https://github.com/OSGeo/homebrew-osgeo4mac</a>
</li>
<li>
Installing libfreenect2:
<a href="https://github.com/OpenKinect/libfreenect2#mac-osx">https://github.com/OpenKinect/libfreenect2#mac-osx</a>
</li>
</ul>
</details>
<br/>
<!-- Software -->
<header>
<h3>Software</h3>
</header>
<div class="table-wrapper">
<table>
<thead>
<tr><th>Components</th><th>Type</th><th>Use</th></tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/tangible-landscape/grass-tangible-landscape">grass-tangible-landscape</a></td>
<td>GRASS GIS plugin</td>
<td>Tangible interface for GRASS GIS</td>
</tr>
<tr>
<td><a href="https://github.com/tangible-landscape/r.in.kinect">r.in.kinect</a></td>
<td>GRASS GIS addon</td><td>Import data from Kinect</td>
</tr>
<tr>
<td><a href="https://github.com/tangible-landscape/tangible-landscape-immersive-extension">tangible-landscape-immersive-extension</a></td>
<td>Blender addon</td><td>Import and render 3D objects from Tangible Landscape</td>
</tr>
</tbody>
</table>
</div>
<!-- Hardware -->
<header>
<h3>Hardware</h3>
</header>
<div class="table-wrapper">
<table>
<thead>
<tr><th>Type</th><th>Product</th><th>Cost</th></tr>
</thead>
<tbody>
<tr>
<td>Computer</td>
<td>System 76 Oryx Pro</td>
<td>$1500</td>
</tr>
<tr>
<td>Projector</td>
<td>Optoma ML750 WXGA 700 DLP LED</td>
<td>$500</td>
</tr>
<tr>
<td>Screen or VR headset</td>
<td>Oculus Rift DK 2</td>
<td>$400</td>
</tr>
<tr>
<td>3D sensor</td>
<td>Xbox One Kinect</td>
<td>$100</td>
</tr>
<tr>
<td></td>
<td>Kinect Adapter</td>
<td>$50</td></tr>
<tr>
<td>Stand</td>
<td>Avenger 40-Inch C-Stand with Grip Kit</td>
<td>$200</td>
</tr>
<tr>
<td></td>
<td>Avenger or Kupo Grip Head</td>
<td>$30</td>
</tr>
<tr>
<td></td>
<td>Kupo 3 Way Clamp</td>
<td>$35</td>
</tr>
<tr>
<td></td>
<td>Kupo Grip Arm Support</td>
<td>$70</td>
</tr>
<tr>
<td></td>
<td>Avenger F800 3-Inch Baby Wall Plate</td>
<td>$10</td>
</tr>
<tr>
<td></td>
<td>Avenger F800 3-Inch Baby Wall Plate</td>
<td>$10</td>
</tr>
<tr>
<td>Peripherals</td>
<td>HDMI cable</td>
<td>$10</td>
</tr>
<tr>
<td></td>
<td>Extension cord</td>
<td>$10</td>
</tr>
<tr>
<td>Modeling media</td>
<td>Waba Fun Kinetic Sand 11 Lbs</td>
<td>$50</td>
</tr>
</tbody>
</table>
</div>
<!-- Setup -->
<br/>
<br/>
<header>
<h3>Hardware setup</h3>
</header>
<div class="container 100%">
<div class="row 100%">
<div class="6u 12u$(medium)">
<span class="image fit">
<img src="images/rendered_diagram_1.png" alt="" />
</span>
</div>
<div class="6u$ 12u$(medium)">
<p>
Place your physical model of a landscape on a table.
Mount the Kinect sensor on baby wall plate attached to a c-stand.
Adjust the height of the c-stand so that the Kinect is 0.7 m - 1 m above the model.
Mount the projector on another baby wall plate attached to another c-stand.
Connect the Kinect and projector to your computer.
</p>
</div>
</div>
</div>
<br/>
<br/>
<header>
<h4>Projector configurations</h4>
</header>
<div class="container 100%">
<div class="row 100%">
<div class="3u">
<span class="image fit">
<img src="images/projector_schema_center.png" alt="" />
</span>
</div>
<div class="3u">
<span class="image fit">
<img src="images/projector_schema_keystone.png" alt="" />
</span>
</div>
<div class="3u">
<span class="image fit">
<img src="images/projector_schema_short_throw.png" alt="" />
</span>
</div>
<div class="3u">
<span class="image fit">
<img src="images/projector_schema_ceiling.png" alt="" />
</span>
</div>
</div>
</div>
<br/>
<!-- Model making -->
</section id="model" class="wrapper">
<div class="container">
<header>
<h3>Model making</h3>
</header>
<p>
To sculpt with Tangible Landscape you need a malleable model made of a soft, deformable medium like polymer enriched sand.
When you are using Tangible Landscape for object detection you can use hard, rigid models such as 3D prints.
</p>
</section id="difference" class="wrapper">
<div class="container">
<header>
<h4>Hand sculpting with difference analytic</h4>
</header>
<p>
You can easily sculpt a model with polymer enriched sand using Tangible Landscape.
Project a digital elevation model and the derived contours onto the table.
Use this as a guide for sculpting.
You can also use Tangible Landscape to compute the difference between the scanned model that you have sculpted and the original digital elevation model.
Project the color coded difference (i.e. cut/fill) for a real-time guide of where to add or remove sand.
You can also vertically rescale and translate the scanned raster to match the original DEM using the module r.regression.line.
</p>
<div class="wrapper style4">
<iframe width="853" height="480" src="https://www.youtube.com/embed/GmOqo4FCehM?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>
<pre><code>import grass.script as gscript
def run_difference(real_elev, scanned_elev, env, **kwargs):
regression_params = gscript.parse_command('r.regression.line',
flags='g',
mapx=scanned_elev,
mapy=real_elev,
env=env)
gscript.mapcalc('{regression} = {a} + {b} * {before}'.format(
a=regression_params['a'],
b=regression_params['b']
before=scanned_elev,
regression='regression'),
env=env)
gscript.mapcalc('{difference} = {regression} - {after}'.format(
regression='regression',
after=real_elev,
difference='diff'),
env=env)
gscript.write_command('r.colors',
map='diff',
rules='-',
stdin="-100 black\n-20 red\n0 white\n20 blue\n100 black",
env=env)
</code></pre>
<!--
if __name__ == '__main__':
elevation = 'elev_lid792_1m'
sand_pile = 'sand_pile'
env = None
gscript.run_command('r.surf.fractal', output=sand_pile)
run_difference(real_elev=elevation, scanned_elev=sand_pile, env=env)
-->
</div>
</section>
</section id="fab" class="wrapper">
<div class="container">
<header>
<h4>Digital fabrication</h4>
</header>
<div class="box alt">
<div class="row 50% uniform">
<div class="4u"><span class="image fit"><img src="images/3d_print_1.jpg" alt="" /></span></div>
<div class="4u"><span class="image fit"><img src="images/3d_print_2.jpg" alt="" /></span></div>
<div class="4u$"><span class="image fit"><img src="images/3d_print_3.jpg" alt="" /></span></div>
</div>
<p>
You can build precise physical models using digital fabrication technologies like computer numerically controlled (CNC) manufacturing or 3D printing.
You can use CNC milled and 3D printed models as molds for casting polymer enriched sand into precise yet malleable models.
Cast models can precisely represent complex forms that are too challenging to model by hand.
You can <em>reset</em> your sand model by simply by casting it again.
</p>
</div>
</div>
</section>
</div>
</section>
</section id="fab" class="wrapper">
<div class="container">
<!-- alternative -->
<header>
<h3>Need help?</h3>
</header>
<p>
If you feel like you would rather have somebody do this for you,
check
<a href="support.html">Tangible Landscape support providers page</a>.
</p>
</div>
</section>
<!-- end of main -->
</div>
</section>
<!-- Footer -->
<footer id="footer">
<div class="container">
<ul class="icons">
<li><a href="https://github.com/tangible-landscape/"><i class="fa fa-github fa-lg" aria-hidden="true"></i></a></li>
<li><a href="https://plus.google.com/b/112857255995703553144/112857255995703553144"><i class="fa fa-google-plus fa-lg" aria-hidden="true"></i></a></li>
<li><a href="https://www.youtube.com/channel/UCc37pVh-WE46Xkqeq-KZQsA"><i class="fa fa-youtube fa-lg" aria-hidden="true"></i></a></li>
</ul>
<ul class="copyright">
<li title="Copyright and license (not applicable to linked materials)">
<a href="https://creativecommons.org/licenses/by-sa/4.0/"><i class="fa fa-creative-commons" aria-hidden="true"></i> BY-SA</a> 2016
<a href="https://geospatial.ncsu.edu/geoforall/">NCSU GeoForAll Lab</a></li>
<li>Design: <a href="http://templated.co">TEMPLATED</a></li>
</ul>
</div>
</footer>
</body>
</html>