JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/93/three.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://threejs.org/examples/js/curves/NURBSSurface.js"></script>
<script src="https://threejs.org/examples/js/curves/NURBSUtils.js"></script>
<script src="https://threejs.org/examples/js/libs/dat.gui.min.js"></script>
JavaScript
var gui = new dat.GUI();
var params = {
v0_1_0: -200,
v0_1_1: -200,
v0_1_2: 100,
v0_2_0: -200,
v0_2_1: -100,
v0_2_2: -200,
v0_3_0: -200,
v0_3_1: 100,
v0_3_2: 250,
v0_4_0: -200,
v0_4_1: 200,
v0_4_2: 250,
v1_1_0: 0,
v1_1_1: -200,
v1_1_2: 0,
v1_2_0: 0,
v1_2_1: -100,
v1_2_2: -100,
v1_3_0: 0,
v1_3_1: 100,
v1_3_2: 150,
v1_4_0: 0,
v1_4_1: 200,
v1_4_2: 0,
v2_1_0: 200,
v2_1_1: -200,
v2_1_2: -100,
v2_2_0: 200,
v2_2_1: -100,
v2_2_2: 200,
v2_3_0: 200,
v2_3_1: 100,
v2_3_2: -250,
v2_4_0: 200,
v2_4_1: 200,
v2_4_2: 100
};
gui.add(params, 'v0_1_0').min(-250).max(250).step(10);
gui.add(params, 'v0_1_1').min(-250).max(250).step(10);
gui.add(params, 'v0_1_2').min(-250).max(250).step(10);
gui.add(params, 'v0_2_0').min(-250).max(250).step(10);
gui.add(params, 'v0_2_1').min(-250).max(250).step(10);
gui.add(params, 'v0_2_2').min(-250).max(250).step(10);
gui.add(params, 'v0_3_0').min(-250).max(250).step(10);
gui.add(params, 'v0_3_1').min(-250).max(250).step(10);
gui.add(params, 'v0_3_2').min(-250).max(250).step(10);
gui.add(params, 'v0_4_0').min(-250).max(250).step(10);
gui.add(params, 'v0_4_1').min(-250).max(250).step(10);
gui.add(params, 'v0_4_2').min(-250).max(250).step(10);
gui.add(params, 'v1_1_0').min(-250).max(250).step(10);
gui.add(params, 'v1_1_1').min(-250).max(250).step(10);
gui.add(params, 'v1_1_2').min(-250).max(250).step(10);
gui.add(params, 'v1_2_0').min(-250).max(250).step(10);
gui.add(params, 'v1_2_1').min(-250).max(250).step(10);
gui.add(params, 'v1_2_2').min(-250).max(250).step(10);
gui.add(params, 'v1_3_0').min(-250).max(250).step(10);
gui.add(params, 'v1_3_1').min(-250).max(250).step(10);
gui.add(params, 'v1_3_2').min(-250).max(250).step(10);
gui.add(params, 'v1_4_0').min(-250).max(250).step(10);
gui.add(params, 'v1_4_1').min(-250).max(250).step(10);
gui.add(params, 'v1_4_2').min(-250).max(250).step(10);
gui.add(params,...