JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script>
</script>
CSS
body {
overflow: hidden;
margin: 0;
}
JavaScript
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.set(0, 8, 1);
var renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var controls = new THREE.OrbitControls(camera, renderer.domElement);
var light = new THREE.DirectionalLight(0xffffff, 0.75);
light.position.setScalar(10);
scene.add(light);
scene.add(new THREE.AmbientLight(0xffffff, 0.25));
var helper = new THREE.GridHelper(8, 8);
scene.add(helper);
const polygon = [
new THREE.Vector3(0.29817594703998757,1.1102230246251565e-16,0.2372048620318852),
new THREE.Vector3(-0.034438051775584594, 0,0.158501620481902),
new THREE.Vector3(-0.18295794198718396, 0, 0.4212412875063676),
new THREE.Vector3(0.014660458381481917, 0, 0.4727155454658266),
new THREE.Vector3(-0.029499948109584062,-1.1102230246251565e-16, 0.3837217062633901)
]
let curve = new THREE.CatmullRomCurve3( polygon );
curve.closed = true;
let curveGeometry = new THREE.Geometry();
curveGeometry.vertices = curve.getPoints(polygon.length)
let curveMaterial = new THREE.LineBasicMaterial({color: "red"});
let curveLine = new THREE.Line(curveGeometry, curveMaterial);
scene.add(curveLine)
render();
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}