diff options
author | Justin Berger <j.david.berger@gmail.com> | 2018-04-13 10:20:27 -0600 |
---|---|---|
committer | Justin Berger <j.david.berger@gmail.com> | 2018-04-13 10:23:49 -0600 |
commit | 7acbf4e2a2cf564b1792d0b67f483fdd20e19b3e (patch) | |
tree | 6c6af8934a242d305ecfeb6278373fe8e1dea9bc | |
parent | 45997fb0ee9eb7a4d89da3f15165bf2593f4a87a (diff) | |
download | libsurvive-7acbf4e2a2cf564b1792d0b67f483fdd20e19b3e.tar.gz libsurvive-7acbf4e2a2cf564b1792d0b67f483fdd20e19b3e.tar.bz2 |
Added FPV and reference shapes
-rw-r--r-- | tools/viz/index.html | 3 | ||||
-rw-r--r-- | tools/viz/survive_viewer.js | 102 |
2 files changed, 84 insertions, 21 deletions
diff --git a/tools/viz/index.html b/tools/viz/index.html index 2987555..4d8d65d 100644 --- a/tools/viz/index.html +++ b/tools/viz/index.html @@ -12,7 +12,8 @@ <body> <div id="ThreeJS" style="z-index: 1; position: absolute; left:0px; top:0px"></div> <div id="cam-control" style="z-index: 2;border:1px solid white;position:absolute"> - <input type="checkbox" id="trails">Trails</input><br/> + <input type="checkbox" id="trails" checked>Trails</input><br/> + <input type="checkbox" id="fpv" checked>FPV</input><br/> <button id="toggleBtn"> Toggle 2D View </button> diff --git a/tools/viz/survive_viewer.js b/tools/viz/survive_viewer.js index c1d613d..26f77a6 100644 --- a/tools/viz/survive_viewer.js +++ b/tools/viz/survive_viewer.js @@ -8,7 +8,7 @@ var oldDrawTime = 0; var timecode = {}; var oldPoseTime = 0, poseCnt = 0; var oldPose = [0, 0, 0]; -var scene, camera, renderer, floor; +var scene, camera, renderer, floor, fpv_camera; $(function() { $("#toggleBtn").click(function() { $("#cam").toggle(); }); }); @@ -193,26 +193,26 @@ function create_tracked_object(info) { var trails; var MAX_LINE_POINTS = 100000; -$(function() { - $("#trails").change(function() { - if (this.checked) { - var geometry = new THREE.Geometry(); - var material = new THREE.LineBasicMaterial({color : 0x305ea8}); +function update_trails() { + if (this.checked) { + var geometry = new THREE.Geometry(); + var material = new THREE.LineBasicMaterial({color : 0x305ea8}); - for (i = 0; i < MAX_LINE_POINTS; i++) { - geometry.vertices.push(new THREE.Vector3(0, 0, 0)); - } - geometry.dynamic = true; + for (i = 0; i < MAX_LINE_POINTS; i++) { + geometry.vertices.push(new THREE.Vector3(0, 0, 0)); + } + geometry.dynamic = true; - trails = new THREE.Line(geometry, material); + trails = new THREE.Line(geometry, material); - scene.add(trails); - } else { - if (trails) - scene.remove(trails); - } - }); -}); + scene.add(trails); + } else { + if (trails) + scene.remove(trails); + } +} + +$(function() { $("#trails").change(update_trails); }); var survive_log_handlers = { "LH_POSE" : function(v) { @@ -256,7 +256,18 @@ var survive_log_handlers = { oldPose = obj.position; } - } + if ("HMD" === obj.tracker) { + var up = new THREE.Vector3(0, 1, 0); + var out = new THREE.Vector3(0, 0, 1); + + fpv_camera.up = up.applyQuaternion(objs[obj.tracker].quaternion); + var lookAt = out.applyQuaternion(objs[obj.tracker].quaternion); + lookAt.add(objs[obj.tracker].position); + + fpv_camera.position.set(obj.position[0], obj.position[1], obj.position[2]); + fpv_camera.lookAt(lookAt); + } + } }, "CONFIG" : function(v, tracker) { var configStr = v.slice(3).join(' '); @@ -389,11 +400,57 @@ init() { camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR); camera.up = new THREE.Vector3(0, 0, 1); + fpv_camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, .1, FAR); + scene.add(fpv_camera); + // add the camera to the scene scene.add(camera); camera.position.set(5, 2, 5.00); camera.lookAt(scene.position); + for (var z = 0; z < 5; z++) { + for (var i = -4; i < 5; i++) { + for (var j = 0; j < 5; j++) { + var size = .1; + var geometry = new THREE.BoxGeometry(size, size, size); + + var cube = new THREE.Mesh(geometry, material); + var x, y, zz = z, color; + switch (j) { + case 0: + x = i; + y = 5; + color = 0xff; + break; + case 1: + x = i; + y = -5; + color = 0xff00; + break; + case 2: + x = 5; + y = i; + color = 0xff0000; + break; + case 3: + x = -5; + y = i; + color = 0xffffff; + break; + case 4: + x = 2 * z - 5; + y = i; + zz = 5; + color = 0xffff00; + break; + } + var material = new THREE.MeshStandardMaterial({color : color}); + cube.position.set(x, y, zz); + scene.add(cube); + } + } + } + ////////////// // RENDERER // ////////////// @@ -432,6 +489,8 @@ init() { var axes = new THREE.AxesHelper(5); scene.add(axes); + + update_trails.call($("#trails")[0]); } function animate() { @@ -441,4 +500,7 @@ function animate() { redrawCanvas(timecode); } -function render() { renderer.render(scene, camera); } +function render() { + var use_fpv = $("#fpv")[0].checked; + renderer.render(scene, use_fpv ? fpv_camera : camera); +} |