biped targets
by Nally
HTML
<div id="info">biped feet
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js">
</script>
<script src="https://rawgit.com/mrdoob/three.js/dev/examples/js/Gyroscope.js"></script>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
body {
overflow: hidden;
}
JavaScript
var camera, scene, renderer;
var clock;
var foot;
init();
animate();
function init() {
scene = new THREE.Scene();
clock = new THREE.Clock();
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 500;
camera.position.y = 300
var gridXZ = new THREE.GridHelper(2000, 20, 'red', 'white');
scene.add(gridXZ);
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
let controls = new THREE.OrbitControls(camera, renderer.domElement);
document.body.appendChild(renderer.domElement);
///////////////////////////////////////////////////////////
cg = new THREE.Mesh (new THREE.SphereGeometry (4), new THREE.MeshBasicMaterial({color:'white'}))
scene.add (cg)
foot1 = new THREE.Mesh (new THREE.SphereGeometry (4), new THREE.MeshBasicMaterial({color:'red'}))
scene.add (foot1)
foot2 = new THREE.Mesh (new THREE.SphereGeometry (4), new THREE.MeshBasicMaterial({color:'green'}))
scene.add (foot2)
Hh = 8.3*5
Hr = 0.6*5
Ls = 5.3*5
Fc = 1.0*5
Ts = 1
Vf = Ls/Ts
t = 0
foot2.position.x = Ls
gyro = new THREE.Gyroscope();
cg.add (gyro)
gyro.add (camera)
}
function animate() {
//var t = clock.getElapsedTime();
//var dt = clock.getDelta();
dt = 0.01;
t += dt;
var n = Math.floor (t/Ts);
var tt = t % Ts;
if (n % 2 === 1) { // is odd
y1 = 0;
dx1 = 0;
y2 = Fc/2 - Fc/2*Math.cos(2*Math.PI*tt/Ts)
dx2 = 2*Vf*dt
} else {
y1 = Fc/2 - Fc/2*Math.cos(2*Math.PI*tt/Ts)
dx1 = 2*Vf*dt
y2 = 0
dx2 = 0
}
cg.position.x = Ls/2 + Ls*t/Ts
cg.position.y = Hh - Hr/2*Math.cos(2*Math.PI*t/Ts)
foot1.position.x += dx1;
foot1.position.y = y1;
foot2.position.x += dx2;
foot2.position.y = y2;
console.log (foot2.position.x)
requestAnimationFrame(animate);
render();
}
function render() {
renderer.render(scene, camera);
}