Webgl(一)three入门篇

本文详细介绍使用three.js在浏览器中渲染3D物体的过程,包括创建相机、场景和渲染器,以及如何实现线和几何体的创建。同时,文章还介绍了如何添加动画效果和阴影,为3D场景增添真实感。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在浏览器使用three.js 显示物体需要以下几步:
创建相机 创建场景(物体容器) 渲染(添加相机和场景)
1 创建相机
相机分两种 正交相机(物体大小不变) 透视相机(距离近的大,距离远的小)
position 设置相机位置
lookAt 设置相机观察点

/*相机透视相机与正交相机,透视相机距离远小,距离近大,最后两个参数都是可见范围,倒数第二为近范围*/
        /*camera = new THREE.PerspectiveCamera( 510, window.innerWidth / window.innerHeight, 0.01, 10 );
        */
        camera = new THREE.OrthographicCamera(-111, 111, 111, -111, -100, 500);
        camera.position.z = 55
        camera.position.x = 55
        camera.position.y = 55
        camera.lookAt(zeroPoint);

2 创建场景

scene = new THREE.Scene();

场景是容器,用于装物体
物体的创建分两种,一种是线,一种是几何体
线的创建分两步
一步是创建起点和终点
二获取点集
三创建几何体
四将点集添加到几何体
五创建材质
六组合物体

var splineX = new THREE.CatmullRomCurve3([
        new THREE.Vector3(111, 0, 0),
        new THREE.Vector3(0, 0, 0),
        ]);
        pointsX = splineX.getPoints(20);
        function objectline(points,linewidth)
    {
        var geometry = new THREE.Geometry()
        geometry.vertices = points
        var material = new THREE.LineBasicMaterial(
        {
            color:0xffffff,
            linewidth: linewidth,
        }
        )
        return new THREE.Line(geometry,material)
    }

创建几何体分两步
一 创建几何体
二 创建材质
三 组合物体

function objectsphere()
    {
        /*第一个参数半径,第二个参数与第三个参数是多边形数量,越多越圆*/
        var geometry = new THREE.SphereGeometry(20, 33, 33)
        var material = new THREE.MeshBasicMaterial( { wireframe:true,color: 0x0fffff } )
        return new THREE.Mesh(geometry,material)
    }

3 渲染
渲染分三步
一 创建渲染器
二 设置渲染器大小
三 将渲染器添加到某个元素
四 将相机和物体放入渲染器中渲染

		renderer = new THREE.WebGLRenderer( { antialias: true } );
        renderer.setSize( window.innerWidth, window.innerHeight );
        renderer.shadowMap.enabled = true;
        document.body.appendChild( renderer.domElement );
        renderer.render( scene, camera );

动画效果递归死循环函数根据渲染频率自动刷新,刷新后需要重新渲染相机和场景,可以将旋转,平移等放入渲染器中,显示动画效果

function animate() {
        requestAnimationFrame( animate );
        renderer.render( scene, camera );
    }

阴影

		//告诉平行光需要开启阴影投射
        directionalLight.castShadow = true;
        //告诉渲染器开启阴影
        renderer.shadowMap.enabled = true;
        //告诉地面开启阴影
        ground.receiveShadow = true;
        //告诉几何体开启阴影
        meshsphere.castShadow = true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值