mvp progress

This commit is contained in:
Faye Li Si Fi 2016-12-08 16:01:50 -08:00
parent 52b54dbf0c
commit 33142d6a7f
3 changed files with 825 additions and 0 deletions

View file

@ -0,0 +1,167 @@
<html>
<head>
<title>Photo Booth</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../system/html/css/edit-style.css">
<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>
<script>
var EventBridge;
var openEventBridge = function (callback) {
var WebChannel = new QWebChannel(qt.webChannelTransport, function (channel) {
EventBridge = WebChannel.objects.eventBridgeWrapper.eventBridge;
callback();
});
};
var emit = function (eventType, data) {
data = data || {};
data.type = eventType;
EventBridge.emitWebEvent(JSON.stringify(data));
};
function loaded () {
openEventBridge(function () {
emit("onLoad", {value: "faye"});
var elModelURL = document.getElementById("model-url");
var elReloadModelButton = document.getElementById("reload-model-button");
var elCamera = document.getElementById("property-camera");
//var elLightingPreset = document.getElementById("property-lighting-preset");
var elPictureButton = document.getElementById("picture-button");
elReloadModelButton.addEventListener('click', function() {
emit("onClickReloadModelButton", {value: elModelURL.value});
});
elCamera.addEventListener('change', function() {
emit("onSelectCamera", {value: this.value});
});
// elLightingPreset.addEventListener('change', function() {
// emit("onSelectLightingPreset", {value: "faye"});
// });
elPictureButton.addEventListener('click', function() {
emit("onClickPictureButton", {value: "faye"});
});
});
// Drop downs
function setDropdownText(dropdown) {
var lis = dropdown.parentNode.getElementsByTagName("li");
var text = "";
for (var i = 0; i < lis.length; i++) {
if (lis[i].getAttribute("value") === dropdown.value) {
text = lis[i].textContent;
}
}
dropdown.firstChild.textContent = text;
}
function toggleDropdown(event) {
var element = event.target;
if (element.nodeName !== "DT") {
element = element.parentNode;
}
element = element.parentNode;
var isDropped = element.getAttribute("dropped");
element.setAttribute("dropped", isDropped !== "true" ? "true" : "false");
}
function setDropdownValue(event) {
var dt = event.target.parentNode.parentNode.previousSibling;
dt.value = event.target.getAttribute("value");
dt.firstChild.textContent = event.target.textContent;
dt.parentNode.setAttribute("dropped", "false");
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
dt.dispatchEvent(evt);
}
var elDropdowns = document.getElementsByTagName("select");
for (var i = 0; i < elDropdowns.length; i++) {
var options = elDropdowns[i].getElementsByTagName("option");
var selectedOption = 0;
for (var j = 0; j < options.length; j++) {
if (options[j].getAttribute("selected") === "selected") {
selectedOption = j;
}
}
var div = elDropdowns[i].parentNode;
var dl = document.createElement("dl");
div.appendChild(dl);
var dt = document.createElement("dt");
dt.name = elDropdowns[i].name;
dt.id = elDropdowns[i].id;
dt.addEventListener("click", toggleDropdown, true);
dl.appendChild(dt);
var span = document.createElement("span");
span.setAttribute("value", options[selectedOption].value);
span.textContent = options[selectedOption].firstChild.textContent;
dt.appendChild(span);
var span = document.createElement("span");
span.textContent = "5"; // caratDn
dt.appendChild(span);
var dd = document.createElement("dd");
dl.appendChild(dd);
var ul = document.createElement("ul");
dd.appendChild(ul);
for (var j = 0; j < options.length; j++) {
var li = document.createElement("li");
li.setAttribute("value", options[j].value);
li.textContent = options[j].firstChild.textContent;
li.addEventListener("click", setDropdownValue);
ul.appendChild(li);
}
}
elDropdowns = document.getElementsByTagName("select");
while (elDropdowns.length > 0) {
var el = elDropdowns[0];
el.parentNode.removeChild(el);
elDropdowns = document.getElementsByTagName("select");
}
}
</script>
<style>
</style>
</head>
<body onload="loaded()">
<div id="properties-list">
<div class="property url refresh">
<label>Model URL</label>
<input type="text" id="model-url"></input>
<input type="button" id="reload-model-button" class="glyph" value="F">
</div>
<!--
<div class="property dropdown">
<label>Lighting Preset</label>
<select id="property-lighting-preset">
<option>Default Lighting</option>
<option>Sam's Cool Light</option>
<option>Alan's Light Magic</option>
</select>
</div>
-->
<div class="property dropdown">
<label>Camera</label>
<select id="property-camera">
<option>First Person Camera</option>
<option>Main Camera</option>
<option>Left Camera</option>
<option>Right Camera</option>
</select>
</div>
<div class="property">
<input id="picture-button" type="button" class="blue" value="Take Picture">
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,176 @@
(function () {
var SNAPSHOT_DELAY = 500; // 500ms
var PHOTOBOOTH_WINDOW_HTML_URL = Script.resolvePath("./html/photobooth.html");
var PHOTOBOOTH_SETUP_JSON_URL = Script.resolvePath("./photoboothSetup.json");
var toolbar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
var MODEL_BOUNDING_BOX_DIMENSIONS = {x: 1.0174,y: 1.1925,z: 1.0165};
var PhotoBooth = {};
PhotoBooth.init = function () {
var success = Clipboard.importEntities(PHOTOBOOTH_SETUP_JSON_URL);
var frontFactor = 10;
var frontUnitVec = Vec3.normalize(Quat.getFront(MyAvatar.orientation));
var frontOffset = Vec3.multiply(frontUnitVec,frontFactor);
var rightFactor = 3;
var rightUnitVec = Vec3.normalize(Quat.getRight(MyAvatar.orientation));
var spawnLocation = Vec3.sum(Vec3.sum(MyAvatar.position,frontOffset),rightFactor);
if (success) {
this.pastedEntityIDs = Clipboard.pasteEntities(spawnLocation);
this.processPastedEntities();
}
};
PhotoBooth.processPastedEntities = function () {
var cameraResults = {};
var modelResult;
var modelPos;
this.pastedEntityIDs.forEach(function(id) {
var props = Entities.getEntityProperties(id);
var parts = props["name"].split(":");
if (parts[0] === "Photo Booth Camera") {
cameraResults[parts[1]] = id;
}
if (parts[0] === "Photo Booth Model") {
modelResult = id;
modelPos = props.position;
}
});
print(JSON.stringify(cameraResults));
print(JSON.stringify(modelResult));
this.cameraEntities = cameraResults;
this.modelEntityID = modelResult;
this.centrePos = modelPos;
};
// replace the model in scene with new model
PhotoBooth.changeModel = function (newModelURL) {
// deletes old model
Entities.deleteEntity(this.modelEntityID);
// create new model at centre of the photobooth
var newProps = {
type: "Model",
modelURL: newModelURL,
position: this.centrePos
};
var newModelEntityID = Entities.addEntity(newProps);
// scale model dimensions to fit in bounding box
var scaleModel = function () {
newProps = Entities.getEntityProperties(newModelEntityID);
var myDimensions = newProps.dimensions;
print("myDimensions: " + JSON.stringify(myDimensions));
var k;
if (myDimensions.x > MODEL_BOUNDING_BOX_DIMENSIONS.x) {
k = MODEL_BOUNDING_BOX_DIMENSIONS.x / myDimensions.x;
myDimensions = Vec3.multiply(k, myDimensions);
}
if (myDimensions.y > MODEL_BOUNDING_BOX_DIMENSIONS.y) {
k = MODEL_BOUNDING_BOX_DIMENSIONS.y / myDimensions.y;
myDimensions = Vec3.multiply(k, myDimensions);
}
if (myDimensions.z > MODEL_BOUNDING_BOX_DIMENSIONS.z) {
k = MODEL_BOUNDING_BOX_DIMENSIONS.z / myDimensions.z;
myDimensions = Vec3.multiply(k, myDimensions);
}
// position the new model on the table
var y_offset = (MODEL_BOUNDING_BOX_DIMENSIONS.y - myDimensions.y) / 2;
var myPosition = Vec3.sum(newProps.position, {x:0, y:-y_offset, z:0});
Entities.editEntity(newModelEntityID,{position: myPosition, dimensions: myDimensions});
};
// add a delay before scaling to make sure the entity server have gotten the right model dimensions
Script.setTimeout(function () {
scaleModel();
}, 400);
this.modelEntityID = newModelEntityID;
};
PhotoBooth.destroy = function () {
this.pastedEntityIDs.forEach(function(id) {
Entities.deleteEntity(id);
});
Entities.deleteEntity(this.modelEntityID);
};
var main = function () {
PhotoBooth.init();
var photoboothWindowListener = {};
photoboothWindowListener.onLoad = function (event) {
print("loaded" + event.value);
if (!event.hasOwnProperty("value")){
return;
}
};
photoboothWindowListener.onSelectCamera = function (event) {
print("selected camera " + event.value);
if (!event.hasOwnProperty("value")){
return;
}
if (event.value === "First Person Camera") {
Camera.mode = "first person";
} else {
Camera.mode = "entity";
var cameraID = PhotoBooth.cameraEntities[event.value];
Camera.setCameraEntity(cameraID);
}
};
photoboothWindowListener.onSelectLightingPreset = function (event) {
print("selected lighting preset" + event.value);
if (!event.hasOwnProperty("value")){
return;
}
};
photoboothWindowListener.onClickPictureButton = function (event) {
print("clicked picture button");
// hide HUD tool bar
toolbar.writeProperty("visible", false);
// hide Overlays (such as Running Scripts or other Dialog UI)
Menu.setIsOptionChecked("Overlays", false);
// hide mouse cursor
Reticle.visible = false;
// giving a delay here before snapshotting so that there is time to hide toolbar and other UIs
// void WindowScriptingInterface::takeSnapshot(bool notify, bool includeAnimated, float aspectRatio)
Script.setTimeout(function () {
Window.takeSnapshot(false, false, 1.91);
// show hidden items after snapshot is taken
toolbar.writeProperty("visible", true);
Menu.setIsOptionChecked("Overlays", true);
// unknown issue: somehow we don't need to reset cursor to visible in script and the mouse still returns after snapshot
// Reticle.visible = true;
}, SNAPSHOT_DELAY);
};
photoboothWindowListener.onClickReloadModelButton = function (event) {
print("clicked reload model button " + event.value);
PhotoBooth.changeModel(event.value);
};
var photoboothWindow = new OverlayWebWindow({
title: 'Photo Booth',
source: PHOTOBOOTH_WINDOW_HTML_URL,
width: 450,
height: 450,
visible: true
});
photoboothWindow.webEventReceived.connect(function (data) {
var event = JSON.parse(data);
if (photoboothWindowListener[event.type]) {
photoboothWindowListener[event.type](event);
}
});
};
main();
function cleanup() {
Camera.mode = "first person";
PhotoBooth.destroy();
}
Script.scriptEnding.connect(cleanup);
}());

View file

@ -0,0 +1,482 @@
{
"Entities": [
{
"clientOnly": 0,
"collisionless": 1,
"color": {
"blue": 149,
"green": 245,
"red": 245
},
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.05000000074505806,
"y": 0.05000000074505806,
"z": 0.0099999997764825821
},
"id": "{4a7b6258-ccc5-472e-ba41-dfd224115bee}",
"ignoreForCollisions": 1,
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"name": "Photo Booth Camera:Right Camera",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"parentID": "{838ac5ff-5e06-4768-9389-9796577c5bc5}",
"position": {
"x": -0.022934332489967346,
"y": -0.25898283720016479,
"z": 0.17889007925987244
},
"queryAACube": {
"scale": 0.071414284408092499,
"x": 15.183169364929199,
"y": -192.90565490722656,
"z": 25.429607391357422
},
"rotation": {
"w": -7.62939453125e-05,
"x": -1.52587890625e-05,
"y": 1,
"z": -4.57763671875e-05
},
"shape": "Cube",
"type": "Box",
"visible": 0
},
{
"clientOnly": 0,
"collisionless": 1,
"color": {
"blue": 149,
"green": 245,
"red": 245
},
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.05000000074505806,
"y": 0.05000000074505806,
"z": 0.0099999997764825821
},
"id": "{81ae005c-4738-4359-8860-98d00c8dd3a4}",
"ignoreForCollisions": 1,
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"name": "Photo Booth Camera:Main Camera",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"parentID": "{d5d16926-6f05-4411-931a-3ff8c897d728}",
"position": {
"x": -0.021826114505529404,
"y": -0.25215747952461243,
"z": 0.17469465732574463
},
"queryAACube": {
"scale": 0.071414284408092499,
"x": 16.758693695068359,
"y": -193.97714233398438,
"z": 24.816326141357422
},
"rotation": {
"w": -1.52587890625e-05,
"x": -1.52587890625e-05,
"y": 1,
"z": -1.52587890625e-05
},
"shape": "Cube",
"type": "Box",
"visible": 0
},
{
"clientOnly": 0,
"collisionless": 1,
"color": {
"blue": 149,
"green": 245,
"red": 245
},
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.05000000074505806,
"y": 0.05000000074505806,
"z": 0.0099999997764825821
},
"id": "{77817ac3-0862-46b6-8648-fdb8b855e4cb}",
"ignoreForCollisions": 1,
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"name": "Photo Booth Camera:Left Camera",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"parentID": "{2fc83747-6652-4fd1-bf21-c3d44ad610ea}",
"position": {
"x": -0.021829158067703247,
"y": -0.25214886665344238,
"z": 0.17469853162765503
},
"queryAACube": {
"scale": 0.071414284408092499,
"x": 18.187423706054688,
"y": -193.3980712890625,
"z": 25.408010482788086
},
"rotation": {
"w": -1.52587890625e-05,
"x": -7.62939453125e-05,
"y": 1,
"z": -1.52587890625e-05
},
"shape": "Cube",
"type": "Box",
"visible": 0
},
{
"clientOnly": 0,
"collisionless": 1,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.43360000848770142,
"y": 0.65679997205734253,
"z": 0.42160001397132874
},
"gravity": {
"x": 0,
"y": -9,
"z": 0
},
"id": "{d5d16926-6f05-4411-931a-3ff8c897d728}",
"ignoreForCollisions": 1,
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222",
"name": "35 MM SLR by Lazybones",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 2.5208168029785156,
"y": 2.11322021484375,
"z": 1.1888446807861328
},
"queryAACube": {
"scale": 0.89282792806625366,
"x": 2.0744028091430664,
"y": 1.6668062210083008,
"z": 0.74243068695068359
},
"rotation": {
"w": 1,
"x": -1.52587890625e-05,
"y": -1.52587890625e-05,
"z": -1.52587890625e-05
},
"scriptTimestamp": 1479859505510,
"shapeType": "simple-hull",
"type": "Model",
"userData": "{\"grabbableKey\":{\"grabbable\":true},\"wearable\":{\"joints\":{\"LeftHand\":[{\"x\":-0.23937,\"y\":0.334177,\"z\":0.150116},{\"x\":-0.31183,\"y\":0.535888,\"z\":-0.37311,\"w\":-0.69021}],\"RightHand\":[{\"x\":0.11031082272529602,\"y\":0.19449540972709656,\"z\":0.0405043363571167},{\"x\":0.2807741165161133,\"y\":0.6332069635391235,\"z\":0.2997693121433258,\"w\":-0.6557632088661194}]}}}"
},
{
"clientOnly": 0,
"collisionless": 1,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.43360000848770142,
"y": 0.65679997205734253,
"z": 0.42155000567436218
},
"gravity": {
"x": 0,
"y": -9,
"z": 0
},
"id": "{838ac5ff-5e06-4768-9389-9796577c5bc5}",
"ignoreForCollisions": 1,
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222",
"name": "35 MM SLR by Lazybones",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 0.86136627197265625,
"y": 3.2271270751953125,
"z": 1.8821067810058594
},
"queryAACube": {
"scale": 0.89280432462692261,
"x": 0.41496410965919495,
"y": 2.7807250022888184,
"z": 1.4357045888900757
},
"rotation": {
"w": 0.91699087619781494,
"x": 0.11256575584411621,
"y": 0.37981235980987549,
"z": -0.046890974044799805
},
"scriptTimestamp": 1479859456707,
"shapeType": "simple-hull",
"type": "Model",
"userData": "{\"grabbableKey\":{\"grabbable\":true},\"wearable\":{\"joints\":{\"LeftHand\":[{\"x\":-0.23937,\"y\":0.334177,\"z\":0.150116},{\"x\":-0.31183,\"y\":0.535888,\"z\":-0.37311,\"w\":-0.69021}],\"RightHand\":[{\"x\":0.11031082272529602,\"y\":0.19449540972709656,\"z\":0.0405043363571167},{\"x\":0.2807741165161133,\"y\":0.6332069635391235,\"z\":0.2997693121433258,\"w\":-0.6557632088661194}]}}}"
},
{
"clientOnly": 0,
"collisionless": 1,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.43360000848770142,
"y": 0.65679997205734253,
"z": 0.42155000567436218
},
"gravity": {
"x": 0,
"y": -9,
"z": 0
},
"id": "{2fc83747-6652-4fd1-bf21-c3d44ad610ea}",
"ignoreForCollisions": 1,
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/caitlyn/production/lazybonesToybox/cameras/35mm%20camera.fbx?232222",
"name": "35 MM SLR by Lazybones",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 4.0442371368408203,
"y": 2.7116241455078125,
"z": 1.869842529296875
},
"queryAACube": {
"scale": 0.89280432462692261,
"x": 3.5978350639343262,
"y": 2.2652220726013184,
"z": 1.4234403371810913
},
"rotation": {
"w": 0.92196536064147949,
"x": 0.056198954582214355,
"y": -0.38243687152862549,
"z": 0.023208975791931152
},
"scriptTimestamp": 1479859451129,
"shapeType": "simple-hull",
"type": "Model",
"userData": "{\"grabbableKey\":{\"grabbable\":true},\"wearable\":{\"joints\":{\"LeftHand\":[{\"x\":-0.23937,\"y\":0.334177,\"z\":0.150116},{\"x\":-0.31183,\"y\":0.535888,\"z\":-0.37311,\"w\":-0.69021}],\"RightHand\":[{\"x\":0.11031082272529602,\"y\":0.19449540972709656,\"z\":0.0405043363571167},{\"x\":0.2807741165161133,\"y\":0.6332069635391235,\"z\":0.2997693121433258,\"w\":-0.6557632088661194}]}}}"
},
{
"clientOnly": 0,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 1.0173832178115845,
"y": 1.1924686431884766,
"z": 1.0164898633956909
},
"id": "{541efd7c-7e5f-40d5-b6ed-8e195afe9197}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/alan/dev/Test-Object-7-metal.fbx",
"name": "Photo Booth Model:Default",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 2.5627613067626953,
"y": 1.8016510009765625,
"z": 3.6444053649902344
},
"queryAACube": {
"scale": 1.8682348728179932,
"x": 1.6286438703536987,
"y": 0.86753356456756592,
"z": 2.7102880477905273
},
"rotation": {
"w": 1,
"x": -1.52587890625e-05,
"y": -1.52587890625e-05,
"z": -1.52587890625e-05
},
"shapeType": "static-mesh",
"type": "Model"
},
{
"clientOnly": 0,
"created": "2016-11-29T23:44:49Z",
"dimensions": {
"x": 1.1263399124145508,
"y": 0.55930328369140625,
"z": 1.0736434459686279
},
"id": "{5a286dd0-d6d8-4ed9-a579-1c0587b63fbc}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "atp:/jimi/tutorialroom/table3.fbx",
"name": "Photo Booth Stool",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 2.5654888153076172,
"y": 0.9199371337890625,
"z": 3.7379035949707031
},
"queryAACube": {
"scale": 1.6535331010818481,
"x": 1.7387223243713379,
"y": 0.093170583248138428,
"z": 2.9111371040344238
},
"shapeType": "static-mesh",
"type": "Model"
},
{
"clientOnly": 0,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 1.3296165466308594,
"y": 3.0967316627502441,
"z": 2.4247901439666748
},
"id": "{a0cd3304-e7e3-4522-8fbb-c4cf8d234eca}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/Examples%20Content/production/basketball/hoop.fbx",
"name": "Photo Booth Stand Right",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 0,
"y": 2.207672119140625,
"z": 0.97442245483398438
},
"queryAACube": {
"scale": 4.1517748832702637,
"x": -2.0758874416351318,
"y": 0.13178467750549316,
"z": -1.1014649868011475
},
"rotation": {
"w": -0.37505149841308594,
"x": -1.52587890625e-05,
"y": 0.92700088024139404,
"z": 1.52587890625e-05
},
"shapeType": "static-mesh",
"type": "Model"
},
{
"clientOnly": 0,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 0.6701958179473877,
"y": 3.0894412994384766,
"z": 6.0362682342529297
},
"id": "{f3c937d3-4493-41a1-8928-0cae4c4ce19f}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://mpassets.highfidelity.com/af67a13f-7610-49b4-9723-b284fb8ff37a-v1/Dungeon-Wall-6X3.fbx",
"name": "Photo Booth Backdrop",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 2.4534530639648438,
"y": 2.0988006591796875,
"z": 5.0006065368652344
},
"queryAACube": {
"scale": 6.8139815330505371,
"x": -0.9535377025604248,
"y": -1.3081901073455811,
"z": 1.5936157703399658
},
"rotation": {
"w": -0.70128941535949707,
"x": 1.52587890625e-05,
"y": 0.71288621425628662,
"z": -1.52587890625e-05
},
"shapeType": "box",
"type": "Model"
},
{
"clientOnly": 0,
"color": {
"blue": 201,
"green": 252,
"red": 255
},
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 8.0457677841186523,
"y": 1.3176910877227783,
"z": 8.4534158706665039
},
"id": "{7e4f4bed-a47b-449f-acb2-cb0410847e84}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 2.4956779479980469,
"y": 0,
"z": 2.2972354888916016
},
"queryAACube": {
"scale": 11.744400024414062,
"x": -3.3765220642089844,
"y": -5.8722000122070312,
"z": -3.5749645233154297
},
"rotation": {
"w": 1,
"x": -1.52587890625e-05,
"y": -1.52587890625e-05,
"z": -1.52587890625e-05
},
"shape": "Cube",
"type": "Box"
},
{
"clientOnly": 0,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 1.3296165466308594,
"y": 1.5271610021591187,
"z": 2.4247901439666748
},
"id": "{891fb90c-ca13-46fb-b21e-0da6063ad07b}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/Examples%20Content/production/basketball/hoop.fbx",
"name": "Photo Booth Stand Middle",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 2.4825477600097656,
"y": 1.4576416015625,
"z": 0
},
"queryAACube": {
"scale": 3.1590676307678223,
"x": 0.90301394462585449,
"y": -0.12189221382141113,
"z": -1.5795338153839111
},
"rotation": {
"w": -1.52587890625e-05,
"x": -4.57763671875e-05,
"y": 1,
"z": -1.52587890625e-05
},
"shapeType": "static-mesh",
"type": "Model"
},
{
"clientOnly": 0,
"created": "2016-11-29T23:20:47Z",
"dimensions": {
"x": 1.3296165466308594,
"y": 2.3939504623413086,
"z": 2.4247901439666748
},
"id": "{3773db2f-5bd8-4d23-a3cc-53ffcc7c30e9}",
"lastEditedBy": "{d74cd0af-624e-4d3d-a930-f6cb7e47667d}",
"modelURL": "http://hifi-content.s3.amazonaws.com/Examples%20Content/production/basketball/hoop.fbx",
"name": "Photo Booth Stand - Left",
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
"position": {
"x": 4.8861484527587891,
"y": 1.8541412353515625,
"z": 0.99666976928710938
},
"queryAACube": {
"scale": 3.6576614379882812,
"x": 3.0573177337646484,
"y": 0.025310516357421875,
"z": -0.83216094970703125
},
"rotation": {
"w": 0.38268101215362549,
"x": -4.57763671875e-05,
"y": 0.92385745048522949,
"z": -1.52587890625e-05
},
"shapeType": "static-mesh",
"type": "Model"
}
],
"Version": 65
}