2.实现第一个three.js程序

实现第一个three.js程序

1.目标效果

在这里插入图片描述

注意一个版本问题:three.js版本并不稳定,几乎每个月都会更新一个小版本,尽可能使用固定版本进行开发,事实上我们入门的话,只掌握其中一个版本即可,如果使用新版本,需要查看新版本与旧版本的差异。这里使用96dev版本:

下载地址:https://download.csdn.net/download/qq_44849312/89884271

2.认识三大组建

在Three.js中,要渲染物体到网页中,我们需要3个组建:场景(scene)、相机(camera)和渲染器(renderer)。有了这三样东西,才能将物体渲染到网页中去。

相关代码如下

var scene = new THREE.Scene();  // 场景
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);// 透视相机
var renderer = new THREE.WebGLRenderer();   // 渲染器
renderer.setSize(window.innerWidth, window.innerHeight);    // 设置渲染器的大小为窗口的内宽度,也就是内容区的宽度
document.body.appendChild(renderer.domElement);

场景:

场景是所有物体的容器,如果要显示一个苹果,就需要将苹果对象加入场景中。

在Threejs中场景就只有一种,用THREE.Scene来表示,要构件一个场景也很简单,只要new一个对象就可以了,代码如下:

let scene = new THREE.Scene();

相机:

另一个组建是相机,相机决定了场景中那个角度的景色会显示出来。相机就像人的眼睛一样,人站在不同位置,抬头或者低头都能够看到不同的景色。

let camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);

渲染器:

最后一步就是设置渲染器,渲染器决定了渲染的结果应该画在页面的什么元素上面,并且以怎样的方式来绘制。这里我们定义了一个WebRenderer渲染器,代码如下所示:

var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

3.一个基础的three.js程序

一个最简单的three.js程序需要由以下几个步骤:

1.创建dom节点,用来放置three.js场景

2.创建场景scene

3.创建相机camera

4.创建渲染器renderer

5.渲染器挂载到dom节点中

6.通过动画帧函数requestAnimationFrame执行渲染

7.在场景中加入物体

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        body{
            margin: 0;
            padding: 0;
            overflow-y: hidden;
            overflow-x: hidden;
        }
    </style>
    <script src="../three.js-master/build/three.js"></script>
</head>
<body>
    <div id="three" style="width: 100%;height: 100%;"></div>
    <script>
        var scene = new THREE.Scene();
        
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
        
        var renderer = new THREE.WebGLRenderer();
        
        renderer.setSize(window.innerWidth, window.innerHeight);
        
        document.querySelector("#three").appendChild(renderer.domElement);
        
        var geometry = new THREE.CubeGeometry(1,1,1);
        var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
        var cube = new THREE.Mesh(geometry, material); 
        scene.add(cube);
        camera.position.z = 5;
        
        function render() {
            cube.rotation.x += 0.1;
            cube.rotation.y += 0.1;
            renderer.render(scene, camera);
            requestAnimationFrame(render);
        }
        render();
        
    </script>
</body>
</html>

视频演示:https://www.bilibili.com/video/BV1jRm3YQEGk/?vd_source=0f4eae2845bd3b24b877e4586ffda69a

猜你喜欢

转载自blog.csdn.net/qq_44849312/article/details/142907901
今日推荐