mirror of
https://github.com/lubosz/overte.git
synced 2025-04-24 09:23:17 +02:00
mvp progress
This commit is contained in:
parent
52b54dbf0c
commit
33142d6a7f
3 changed files with 825 additions and 0 deletions
|
@ -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>
|
176
scripts/developer/utilities/render/photobooth/photobooth.js
Normal file
176
scripts/developer/utilities/render/photobooth/photobooth.js
Normal 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);
|
||||
}());
|
|
@ -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
|
||||
}
|
Loading…
Reference in a new issue