test
by omgazero
HTML
<div id="info">
test
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/96/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>
</script>
<script src="https://jyunming-chen.github.io/tutsplus/js/KeyboardState.js"></script>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ff0000;
}
JavaScript
var frame, scene, light, camera, renderer, controls, stats;
var path;
init();
animate();
function init() {
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.y = 120;
camera.position.z = 200;
controls = new THREE.OrbitControls(camera, renderer.domElement);
stats = new Stats();
stats.showPanel(0);
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.body.appendChild(stats.domElement);
light = new THREE.SpotLight(0xffffff, 1, 400);
light.angle = 0.37;
light.penumbra = 0.3;
light.position.set(0, 300, 0);
scene.add(light);
var ambientLight = new THREE.AmbientLight(0x444444);
scene.add(ambientLight);
var gridXZ = new THREE.GridHelper(200, 20, 'red', 'white');
scene.add(gridXZ);
path = new THREE.Path();
path.moveTo(-100,20);
path.bezierCurveTo(20,100,200,100,200,20);
//path.bezierCurveTo(10,100,20,-30,30,19);
// path.bezierCurveTo(40,-5,50,150,60,-39);
var points = path.getPoints();
var geometry = new THREE.BufferGeometry().setFromPoints( points );
var material = new THREE.LineBasicMaterial( { color: 0xffffff } );
var line = new THREE.Line( geometry, material );
scene.add( line );
frame = new THREE.Object3D();
frame.add( new THREE.Mesh( new THREE.CylinderGeometry(20, 20, 10, 20), new THREE.MeshNormalMaterial()) );
scene.add(frame);
}
var progress = 0;
function animate() {
stats.begin();
controls.update();
progress += 0.003;
let point = path.getPointAt(progress);
if(point){
frame.position.set(point.x,point.y,0);
}else{
progress = 0;
}
stats.end();
...