JavaScript
// scene
const scene = new THREE.Scene();
// camera
const camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 4000 );
camera.position.set(-4484.2, -19.6, 2207.8);
camera.lookAt(new THREE.Vector3(-4571.8, 307.2, 2084.7));
// curve
const curve = new THREE.CatmullRomCurve3( [
new THREE.Vector3(-4692.1, 199.0, 2029.2), new THREE.Vector3(-4690.6, 219.6, 2027.9), new THREE.Vector3(-4688.9, 240.0, 2026.6), new THREE.Vector3(-4686.6, 259.9, 2025.4), new THREE.Vector3(-4683.5, 278.8, 2024.2), new THREE.Vector3(-4679.3, 296.7, 2023.1), new THREE.Vector3(-4673.7, 313.2, 2022.0), new THREE.Vector3(-4666.5, 327.9, 2021.1), new THREE.Vector3(-4657.4, 340.7, 2020.2), new THREE.Vector3(-4646.2, 351.3, 2019.5), new THREE.Vector3(-4632.5, 359.3, 2019.0), new THREE.Vector3(-4616.0, 364.6, 2018.6), new THREE.Vector3(-4602.9, 391.4, 2005.6), new THREE.Vector3(-4598.0, 458.3, 1970.6), new THREE.Vector3(-4598.9, 556.6, 1918.3), new THREE.Vector3(-4603.7, 677.3, 1853.7), new THREE.Vector3(-4610.0, 811.4, 1781.8), new THREE.Vector3(-4615.7, 950.1, 1707.3), new THREE.Vector3(-4618.6, 1084.4, 1635.1), new THREE.Vector3(-4616.5, 1205.5, 1570.3), new THREE.Vector3(-4607.3, 1304.4, 1517.6), new THREE.Vector3(-4588.7, 1372.2, 1481.9), new THREE.Vector3(-4558.6, 1400.0, 1468.1), new THREE.Vector3(-4526.8, 1388.5, 1478.4), new THREE.Vector3(-4503.8, 1347.3, 1509.1), new THREE.Vector3(-4487.8, 1280.6, 1556.4), new THREE.Vector3(-4477.3, 1192.9, 1616.5), new THREE.Vector3(-4470.8, 1088.4, 1685.6), new THREE.Vector3(-4466.5, 971.5, 1760.0), new THREE.Vector3(-4462.9, 846.5, 1835.9), new THREE.Vector3(-4458.4, 717.7, 1909.4), new THREE.Vector3(-4451.4, 589.5, 1976.9), new THREE.Vector3(-4440.2, 466.2, 2034.4), new THREE.Vector3(-4423.4, 352.1, 2078.3), new THREE.Vector3(-4395.3, 239.6, 2106.4), new THREE.Vector3(-4354.4, 119.6, 2121.5), new THREE.Vector3(-4305.0, -6.0, 2127.0), new THREE.Vector3(-4251.2, -135.3,...