Three.js绘制管

简介: 使用Three.js绘制中空的圆柱管道

  

<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        body {
            margin: 0;
            overflow: hidden;
            /* 隐藏body窗口区域滚动条 */
        }
    </style>
    <script src="../resources/js/three.js"></script>
    <script src="../resources/js/OrbitControls.js"></script>
</head>
<body>
<script>
    let scene = new THREE.Scene();
    let bigCircle = new THREE.Shape();
    bigCircle.moveTo(0, 0);
    //大圆
    bigCircle.arc(0, 0, 20, 0, Math.PI * 2);
    //小圆
    let smallCircle = new THREE.Shape();
    smallCircle.arc(0, 0, 10, 0, Math.PI * 2);
    //挖空
    bigCircle.holes.push(smallCircle);
    let tube = new THREE.ExtrudeGeometry(bigCircle, {
        amount: 300,
        bevelEnabled: false,
        curveSegments: 100,
        steps: 100
    });
    let material = new THREE.MeshLambertMaterial({
        color: new THREE.Color("#fc0101")
    });
    let mesh = new THREE.Mesh(tube, material); //网格模型对象Mesh
    scene.add(mesh); //网格模型添加到场景中
    //环境光
    let ambient = new THREE.AmbientLight(0x444444);
    ambient.intensity=2;
    scene.add(ambient);
    let width = window.innerWidth; //窗口宽度
    let height = window.innerHeight; //窗口高度
    let k = width / height; //窗口宽高比
    let s = 200; //三维场景显示范围控制系数,系数越大,显示的范围越大
    //创建相机对象(正射投影相机)
    let camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
    camera.position.set(200, 300, 200); //设置相机位置
    camera.lookAt(scene.position); //设置相机方向(指向的场景对象),拍照方向
    let renderer = new THREE.WebGLRenderer({
        //抗锯齿
        antialias: true,
        alpha: true
    });
    renderer.setSize(width, height);//设置渲染区域尺寸
    renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
    document.body.appendChild(renderer.domElement); //body元素中插入canvas对象
    //执行渲染操作   指定场景、相机作为参数
    renderer.render(scene, camera);
    //控制视野运动
    function render() {
        renderer.render(scene, camera);//执行渲染操作
    }
    render();
    let controls = new THREE.OrbitControls(camera, renderer.domElement);//创建控件对象
    controls.addEventListener('change', render);//监听鼠标、键盘事件
</script>
</body>
</html>

image.gif

效果图如下:

image.gif

image.gif


目录
相关文章
|
前端开发 JavaScript 定位技术
threejs绘制风羽
threejs绘制风羽
315 0
|
存储 前端开发 JavaScript
three.js 纹理
纹理是添加到材料中的图像或颜色,以提供更多细节或美感。纹理是Three.js中必不可少的主题。在本节中,我们将了解如何将基本纹理应用于我们的材质。
110 0
|
3月前
Threejs绘制圆锥体
这篇文章讲解了如何在Three.js中创建并正确定向圆锥体,确保其在不同场景下的稳定显示,涵盖了生成圆锥体几何体、设置材质和纹理以及解决可能的倾斜显示问题等内容。
62 1
Threejs绘制圆锥体
|
3月前
ThreeJs绘制贝塞尔曲线
这篇文章介绍了如何利用Three.js绘制贝塞尔曲线,并提供了实现的代码示例与说明。
60 2
ThreeJs绘制贝塞尔曲线
|
3月前
|
JSON 数据格式
Cesium绘制一个正方体
这篇文章详细说明了如何在Cesium中创建并精确控制一个厘米级精度的立方体模型。
63 2
Cesium绘制一个正方体
|
3月前
Threejs绘制传送带
这篇文章详细介绍了如何使用Three.js绘制一个动态的传送带模型,包括传送带的几何体创建、纹理应用以及实现带体循环移动的动画效果。
56 0
Threejs绘制传送带
|
3月前
|
定位技术 调度
Pixi绘制各种图形
这篇文章作为Pixi.js入门教程的一部分,详细介绍了如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的实现代码。
62 0
Pixi绘制各种图形
|
3月前
ThreeJs绘制圆柱体
这篇文章介绍了在Three.js中绘制圆柱体的方法,包括创建圆柱体几何体、设置材质以及将其正确放置在三维场景中的技巧。
71 0
ThreeJs绘制圆柱体
|
3月前
ThreeJs创建圆环
这篇文章介绍了如何在Three.js中创建一个圆环(torus),包括设置圆环的几何形状、材质以及将其添加到场景中的具体步骤。
81 0
ThreeJs创建圆环
|
5月前
|
API
【threejs教程】threejs中的边边角角:几何体详解
【8月更文挑战第6天】threejs中的几何体详解
146 4