Better experimentation

This commit is contained in:
Sam Gateau 2018-04-12 01:32:20 -07:00
parent 9c4c1bf10f
commit d0ed5466be

View file

@ -3,29 +3,33 @@
var GRID_WORLD_SIZE = 100.0; var GRID_WORLD_SIZE = 100.0;
var GRID_WORLD_MARGIN = 5.0; var GRID_WORLD_MARGIN = 5.0;
var GRID_WORLD_RESOLUTION = 30.0; var GRID_WORLD_RESOLUTION = 30.0;
var GRID_WORLD_DROP_HEIGHT = 5.0;
var GRID_SIZE = GRID_WORLD_RESOLUTION;
var BACKDROP_SIZE = GRID_WORLD_RESOLUTION; var GRID_HALFSIZE = GRID_SIZE *0.5;
var BACKDROP_HALFSIZE = BACKDROP_SIZE *0.5;
var BACKDROP_MIN_C = -2;
var ROOT_Z_OFFSET = -3; var ROOT_Z_OFFSET = -3;
var ROOT_Y_OFFSET = -0.1; var ROOT_Y_OFFSET = -0.1;
var TILE_UNIT = GRID_WORLD_SIZE / BACKDROP_SIZE; var TILE_UNIT = GRID_WORLD_SIZE / GRID_SIZE;
var TILE_DIM = { x: TILE_UNIT, y: TILE_UNIT, z: TILE_UNIT}; var TILE_DIM = { x: TILE_UNIT, y: TILE_UNIT, z: TILE_UNIT};
var GRID_TILE_OFFSET = Vec3.multiply(0.5, TILE_DIM); var GRID_TILE_OFFSET = Vec3.multiply(0.5, TILE_DIM);
var GRID_DROP_C = GRID_WORLD_DROP_HEIGHT / TILE_UNIT;
function updateWorldResolution(res) { function updateWorldResolution(res) {
GRID_WORLD_RESOLUTION = res; GRID_WORLD_RESOLUTION = res;
BACKDROP_SIZE = GRID_WORLD_RESOLUTION; GRID_SIZE = GRID_WORLD_RESOLUTION;
BACKDROP_HALFSIZE = BACKDROP_SIZE *0.5; GRID_HALFSIZE = GRID_SIZE *0.5;
TILE_UNIT = GRID_WORLD_SIZE / BACKDROP_SIZE; TILE_UNIT = GRID_WORLD_SIZE / GRID_SIZE;
TILE_DIM = { x: TILE_UNIT, y: TILE_UNIT, z: TILE_UNIT}; TILE_DIM = { x: TILE_UNIT, y: TILE_UNIT, z: TILE_UNIT};
GRID_TILE_OFFSET = Vec3.multiply(0.5, TILE_DIM); GRID_TILE_OFFSET = Vec3.multiply(0.5, TILE_DIM);
GRID_DROP_C = GRID_WORLD_DROP_HEIGHT / TILE_UNIT;
print("TILE_UNIT = " + TILE_UNIT)
print("GRID_DROP_C = " + GRID_DROP_C)
} }
var OBJECT_DIM = { x: 0.5, y: 0.5, z: 0.5}; var OBJECT_DIM = { x: 0.5, y: 0.5, z: 0.5};
@ -47,9 +51,7 @@ function getTileColor(a, b, c) {
} }
function addObject(a, b, c, lifetime) { function addObject(a, b, c, lifetime) {
var center = Vec3.sum(stageTileRoot, Vec3.multiply(a, stageAxisA)); var center = getStagePosOriAt(a, b, v).pos;
center = Vec3.sum(center, Vec3.multiply(b, stageAxisB));
center = Vec3.sum(center, Vec3.multiply(c, stageAxisC));
return (Entities.addEntity({ return (Entities.addEntity({
type: "Shape", type: "Shape",
@ -72,17 +74,17 @@ function addObject(a, b, c, lifetime) {
} }
function addObjectGrid(backdrop, lifetime) { function addObjectGrid(backdrop, lifetime) {
for (i = BACKDROP_HALFSIZE; i > -BACKDROP_HALFSIZE; i--) { for (i = GRID_HALFSIZE; i > -GRID_HALFSIZE; i--) {
for (j = -BACKDROP_HALFSIZE; j < BACKDROP_HALFSIZE; j++) { for (j = -GRID_HALFSIZE; j < GRID_HALFSIZE; j++) {
backdrop.push(addObject(i, j, BACKDROP_MIN_C + 2, lifetime)); backdrop.push(addObject(i, j, GRID_DROP_C, lifetime));
} }
} }
} }
function addFloor(lifetime) { function addFloor(lifetime) {
var floorDim = { x:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN, y:TILE_DIM.y, z:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN}; var floorDim = { x:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN, y: TILE_DIM.y, z:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN};
var center = getStagePosOriAt(0, 0, -1).pos; var center = getStagePosOriAt(0, 0, -0.5).pos;
return (Entities.addEntity({ return (Entities.addEntity({
type: "Shape", type: "Shape",
@ -107,7 +109,7 @@ function addFloor(lifetime) {
function addZone(hasKeyLight, hasAmbient, lifetime) { function addZone(hasKeyLight, hasAmbient, lifetime) {
var zoneDim = { x:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN, y:GRID_WORLD_SIZE, z:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN}; var zoneDim = { x:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN, y:GRID_WORLD_SIZE, z:GRID_WORLD_SIZE + 2 * GRID_WORLD_MARGIN};
var center = getStagePosOriAt(0, 0, -2).pos; var center = getStagePosOriAt(0, 0, -1).pos;
var lightDir = Vec3.normalize(Vec3.sum(Vec3.multiply(-1, Quat.getUp(stageOrientation)), Vec3.multiply(-1, Quat.getRight(stageOrientation)))) var lightDir = Vec3.normalize(Vec3.sum(Vec3.multiply(-1, Quat.getUp(stageOrientation)), Vec3.multiply(-1, Quat.getRight(stageOrientation))))
@ -162,7 +164,6 @@ function addTestScene(name, lifetime) {
// Stage position and orientation initialised at setup // Stage position and orientation initialised at setup
stageOrientation = Quat.fromPitchYawRollDegrees(0.0, 0.0, 0.0); stageOrientation = Quat.fromPitchYawRollDegrees(0.0, 0.0, 0.0);
stageRoot = {"x":0.0,"y":0.0,"z":0.0}; stageRoot = {"x":0.0,"y":0.0,"z":0.0};
stageTileRoot = {"x":0.0,"y":0.0,"z":0.0};
stageAxisA = Vec3.multiply(TILE_UNIT, Quat.getForward(stageOrientation)); stageAxisA = Vec3.multiply(TILE_UNIT, Quat.getForward(stageOrientation));
stageAxisB = Vec3.multiply(TILE_UNIT, Quat.getRight(stageOrientation)); stageAxisB = Vec3.multiply(TILE_UNIT, Quat.getRight(stageOrientation));
stageAxisC = Vec3.multiply(TILE_UNIT, Quat.getUp(stageOrientation)); stageAxisC = Vec3.multiply(TILE_UNIT, Quat.getUp(stageOrientation));
@ -181,7 +182,6 @@ setupScene = function (lifetime) {
stageRoot = Vec3.sum(MyAvatar.position, Vec3.multiply(-ROOT_Z_OFFSET, Quat.getForward(orientation))); stageRoot = Vec3.sum(MyAvatar.position, Vec3.multiply(-ROOT_Z_OFFSET, Quat.getForward(orientation)));
stageRoot = Vec3.sum(stageRoot, Vec3.multiply(ROOT_Y_OFFSET, Quat.getUp(orientation))); stageRoot = Vec3.sum(stageRoot, Vec3.multiply(ROOT_Y_OFFSET, Quat.getUp(orientation)));
stageTileRoot = Vec3.sum(stageRoot, GRID_TILE_OFFSET);
return addTestScene("Physics_stage_backdrop", lifetime); return addTestScene("Physics_stage_backdrop", lifetime);
} }
@ -217,7 +217,7 @@ getResolution = function() {
} }
getNumObjects = function() { getNumObjects = function() {
return BACKDROP_SIZE * BACKDROP_SIZE; return GRID_SIZE * GRID_SIZE;
} }
bumpUpFloor = function() { bumpUpFloor = function() {