JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r120/three.min.js"></script>

JavaScript

var camera, scene, renderer, geometry, material, mesh;

init();


function init() {

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
    camera.position.z = 100;
    scene.add(camera);
         var planes = [
            new THREE.Plane(new THREE.Vector3(1, 0,-0.5), -3),
        ];
   
    geometry = new THREE.CylinderGeometry(15, 15, 50, 64);
    material = new THREE.MeshNormalMaterial({
       clippingPlanes: planes,
       side: THREE.DoubleSide
    });

    mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);

    renderer = new THREE.WebGLRenderer({alpha: true});
    renderer.localClippingEnabled = true;
    renderer.setSize(window.innerWidth, window.innerHeight);

    document.body.appendChild(renderer.domElement);
    render();

}


function render() {

    mesh.rotation.x += 11;
    mesh.rotation.y += 1;
    mesh.rotation.z += -15;

    renderer.render(scene, camera);

}