A virtual walk through a sentient space with rt3DView

The screen capture above and video below are from a walk-through of a procedurally generated sentient space model with video and IoT data displays (derived from ZeroSensor data, rt-ai Edge and Manifold). This was made using rt3DView and the actual Unity video recording made with the aid of this very nice Unity store asset.

The idea of this model is that it reflects the major features of the real sentient space so that users of VR and AR can interact correctly. For example, an AR headset wearer in one of the rooms would also see the displays on the equivalent physical wall. This model is pretty basic but obviously a lot more bling could be added to get further along the road to realism. Plus I made no attempt to sort out the exterior for this test.

Now that the basics are working and the XR world is fully coupled to the rt-ai Edge design that is the real world element of the sentient space, the focus will move to more interaction. Instantiating new objects, positioning objects, real-time sharing of camera poses leading to avatars… The list is endless.

This is the design file used to generate the simple space in the video (two rooms joined by a corridor). More use of macros will make this more maintainable but, even now, new rooms can be added pretty rapidly.

# The first section is the space part
[space]

# This defines the name of the space
name:Space

# This part defines variables that can be used in later defs
[vars]

# variables are of the form name:value

thickness:0.2
frameWidth:0.5
frameHeight:0.2
roomHeight:9.5

# This part defines the walls

[walls]

# All wall shapes start with name, type, shape, front material, back material, x, y, z, xrot, yrot, zrot, thickness
# All in units of feet and degrees.
# Types: 0 = front wall, 1 = left wall, 2 = right wall, 3 = back wall, 4 = floor, 5 = ceiling
# Shapes: 0 = rectangle, 1 = triangle
# Specific wall shapes have extra params.
# Walls as width, height
# Triangles have x1, y1, x2, y2

wall:office_front, 0, 0, BeigeWall, BeigeWall, 0, 0, 0, 0, 0, 0, thickness, 14, 8.5
wall:office_right, 2, 0, BeigeWall, BeigeWall, 14, 0, 0, 0, 0, 0, thickness, 15, 8.5
wall:office_back, 3, 0, BeigeWall, BeigeWall, 14, 0, 15, 0, 0, 0, thickness, 14, 8.5
wall:office_left, 1, 0, BeigeWall, BeigeWall, 0, 0, 15, 0, 0, 0, thickness, 15, 8.5
wall:office_floor, 4, 0, BrownFloor, BrownFloor, 0, 0, 0, 0, 0, 0, thickness, 14, 15
wall:office_ceilingcenter, 5, 0, RedRoof, BeigeWall, 0, 13.5, 4, 0, 0, 0, thickness, 14, 7
wall:office_ceilingleft, 5, 0, RedRoof, BeigeWall, 0, 8.5, 0, -51, 0, 0, thickness, 14, 6.4
wall:office_ceilingright, 5, 0, RedRoof, BeigeWall, 0, 13.5, 11, 51, 0, 0, thickness, 14, 6.4
wall:office_ceilingfilletright, 2, 0, BeigeWall, BeigeWall, 14, 8.5, 4, 0, 0, 0, thickness, 7, 5
wall:office_ceilingfilletleft, 1, 0, BeigeWall, BeigeWall, 0, 8.5, 11, 0, 0, 0, thickness, 7, 5
wall:office_tri1, 2, 1, BeigeWall, BeigeWall, 14, 8.5, 0, 0, 0, 0, thickness, 4, 5, 4, 0 
wall:office_tri2, 2, 1, BeigeWall, BeigeWall, 14, 8.5, 11, 0, 0, 0, thickness, 0, 5, 4, 0 
wall:office_tri3, 1, 1, BeigeWall, BeigeWall, 0, 8.5, 15, 0, 0, 0, thickness, 4, 5, 4, 0 
wall:office_tri4, 1, 1, BeigeWall, BeigeWall, 0, 8.5, 4, 0, 0, 0, thickness, 0, 5, 4, 0 

wall:corr_front, 0, 0, BeigeWall, BeigeWall, -8, 0, 3, 0, 0, 0, thickness, 8, roomHeight
wall:corr_back, 3, 0, BeigeWall, BeigeWall, 0, 0, 12, 0, 0, 0, thickness, 8, roomHeight
wall:corr_ceil, 5, 0, RedRoof, WhiteWall, -8, roomHeight, 3, 0, 0, 0, thickness, 8, 9
wall:corr_floor, 4, 0, BrownFloor, BrownFloor, -8, 0, 3, 0, 0, 0, thickness, 8, 9

# 6 sided boxes can also be defined in one statement as:
# box:boxname, front material, back material, floor material, ceiling material, roof material, x, y, z, xrot, yrot, zrot, width, height, depth, wall thickness
# walls generated are named boxname_front, boxname_left, boxname_right, boxname_rear, boxname_floor, boxname_ceiling

box:livingroom, BeigeWall, BeigeWall, BrownFloor, WhiteWall, RedRoof, -28, 0, 0, 0, 0, 0, 20, roomHeight, 20, thickness

# This part defines wall features
[features]

# Add windows
# Window def is window:wallname, shape, material, x, y, width, height, frameWidth, frameheight
# Shapes are: 0 = rectangle

window:office_front, 0, WhiteFrame, 2.5, 2.7, 3.3, 5.5, frameWidth, frameHeight
window:office_front, 0, WhiteFrame, 8, 2.7, 3.3, 5.5, frameWidth, frameHeight
window:office_right, 0, WhiteFrame, 4, 2.7, 3.3, 5.5, frameWidth, frameHeight
window:office_right, 0, WhiteFrame, 8, 2.7, 3.3, 5.5, frameWidth, frameHeight
window:office_back, 0, WhiteFrame, 2.3, 2.7, 3.3, 5.5, frameWidth, frameHeight
window:office_back, 0, WhiteFrame, 7.8, 2.7, 3.3, 5.5, frameWidth, frameHeight

window:corr_front, 0, WhiteFrame, 2.2, 2.7, 3.5, 5.5, frameWidth, frameHeight
window:corr_back, 0, WhiteFrame, 2.2, 2.7, 3.5, 5.5, frameWidth, frameHeight

window:livingroom_left, 0, WhiteFrame, 2, 0, 4, 7, frameWidth, frameHeight
window:livingroom_left, 0, WhiteFrame, 6, 0, 4, 7, frameWidth, frameHeight
window:livingroom_left, 0, WhiteFrame, 10, 0, 4, 7, frameWidth, frameHeight
window:livingroom_left, 0, WhiteFrame, 14, 0, 4, 7, frameWidth, frameHeight
window:livingroom_back, 0, WhiteFrame, 2, 2.7, 7, 4.3, frameWidth, frameHeight
window:livingroom_back, 0, WhiteFrame, 11, 2.7, 7, 4.3, frameWidth, frameHeight
window:livingroom_front, 0, WhiteFrame, 2, 2.7, 7, 4.3, frameWidth, frameHeight
window:livingroom_front, 0, WhiteFrame, 11, 2.7, 7, 4.3, frameWidth, frameHeight

# Add doors
# Door def is door:wallname, shape, material, x, y, width, height, frameWidth, frameHeight
# Door shapes are: 0 = rectangle

door:office_left, 0, WhiteFrame, 5.8, 0, 3.6, 7, frameWidth, frameHeight
door:livingroom_right, 0, WhiteFrame, 5.6, 0, 3.6, 7, frameWidth, frameHeight

# This part defines the rooms
[rooms]

# Then a series of room definitions

[room]

# Name the room

name:Office

# Position room as pos:x, y, z, xrot, yrot, zrot

pos:0, 0, 0, 0, 0, 0

# Add walls to the room

walls:office_front, office_right, office_back, office_left, office_ceilingcenter, office_ceilingfilletright, office_ceilingfilletleft, office_ceilingright, office_ceilingleft, office_tri1, office_tri2, office_tri3, office_tri4

# Add lights
# Lights are light:x, y, z, intensity, range, red, green, blue

light:7, 10, 7.5, 2, 20, 1, 1, 0.9

# Add video panels as: videopanel:name, stream, wallname, isFront, x, y, z, width

videopanel:Office, ME5820_zero0v, office_left, false, 1, 3, 0, 4

# Add ZeroSensor panels as: zeropanel:name, stream, wallname, isFront, x, y, z, width

zeropanel:Office, ME5820_zero0s, office_left, false, 10, 3, 0, 4

[room]
name:livingroom
pos:-28, 0, 0, 0, 0, 0
light:5, roomHeight, 5, 2, 10, 1, 1, 0.9
light:5, roomHeight, 15, 2, 10, 1, 1, 0.9
light:15, roomHeight, 15, 2, 10, 1, 1, 0.9
light:15, roomHeight, 15, 2, 10, 1, 1, 0.9
videopanel:Living Room, ME5820_zero1v, livingroom_right, false, 3, 5.5, 0, 4
zeropanel:Living Room, ME5820_zero1s, livingroom_right, false, 3, 2, 0, 4

[room]
name:corr
pos:-8, 0, 3, 0, 0, 0
light:4, roomHeight, 4.5, 2, 10, 1, 1, 0.9

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.