Build-your-own

Read our Wiki for detailed instructions about setting up Tangible Landscape and joining our community.

Multiplatform

Dependencies

Program Use
libfreenect2 Drivers for Kinect v2
PCL Point cloud processing
GRASS GIS 7 Geographic information system
Blender + BlenderGIS addon 3D modeling engine and GIS addon
guide

Software

ComponentsTypeUse
grass-tangible-landscape GRASS GIS plugin Tangible interface for GRASS GIS
r.in.kinect GRASS GIS addonImport data from Kinect
tangible-landscape-immersive-extension Blender addonImport and render 3D objects from Tangible Landscape

Hardware

TypeProductCost
Computer System 76 Oryx Pro $1500
Projector Optoma ML750 WXGA 700 DLP LED $500
Screen or VR headset Oculus Rift DK 2 $400
3D sensor Xbox One Kinect $100
Kinect Adapter $50
Stand Avenger 40-Inch C-Stand with Grip Kit $200
Avenger or Kupo Grip Head $30
Kupo 3 Way Clamp $35
Kupo Grip Arm Support $70
Avenger F800 3-Inch Baby Wall Plate $10
Avenger F800 3-Inch Baby Wall Plate $10
Peripherals HDMI cable $10
Extension cord $10
Modeling media Waba Fun Kinetic Sand 11 Lbs $50


Hardware setup

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.



Projector configurations


Model making

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.

Hand sculpting with difference analytic

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.

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)
						

Digital fabrication

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 reset your sand model by simply by casting it again.