为了快速入门threejs,学学threejs三大组件。

本文介绍Three.js的三个核心组件:场景、相机和渲染器。通过创建一个包含立方体、球体和地面的简单场景,展示了如何使用Three.js进行3D图形渲染。文章详细解释了每个组件的作用及如何在WebGL渲染器中设置它们。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>threejs三大组件</title>
        <script src="../js/three.js"></script>
    </head>
    <body>
    <!--    threejs的API很长,有很多概念和术语,理解了这些概念和术语,才能更好的使用threejs。下图简单整理了一下这些概念:-->
    
    <!--
    第一组件
    相机
    
    第二组件
    渲染器
    
    第三组件
    scene
    
    场景用来容纳图形元素。场景相当于宇宙,而图形元素就是星星,图形元素只有添加到场景中,其坐标、大小等才有意义。
    相机的作用是定义可视域,即确定哪些图形元素是可见的。
    渲染器则负责用如何渲染出图像,是使用WegGL还是Canvas。
    -->
    
    
    <canvas id="cc"></canvas>
    
    
    
<script type="text/javascript">

  

        // 创建一个场景,它将保存我们所有的元素,如物体、照相机和灯光。
        var scene = new THREE.Scene();

        // 创建一个摄像机,它定义了我们所处的位置.
        var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);

        // 创建渲染并设置大小 指定渲染canvas对象
        var renderer = new THREE.WebGLRenderer({canvas: document.querySelector("#cc")});

        renderer.setClearColor(0xEEEEEE);
        renderer.setSize(window.innerWidth, window.innerHeight);
        
        //创建一个xyz坐标轴,方便初学者理解三维坐标
        var axes = new THREE.AxisHelper( 20 );
        scene.add(axes);

        // 创建地面
        var planeGeometry = new THREE.PlaneGeometry(60,20,1,1);
        var planeMaterial = new THREE.MeshBasicMaterial({color: 0xcccccc});
        var plane = new THREE.Mesh(planeGeometry,planeMaterial);


        // 地面默认是垂直的。所以需要旋转一下地面。
        plane.rotation.x=-0.5*Math.PI;
        plane.position.x=15
        plane.position.y=0
        plane.position.z=0

        // 地面添加到场景里面去
        scene.add(plane);

        // 创建一个立方体
        var cubeGeometry = new THREE.CubeGeometry(4,4,4);
        var cubeMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, wireframe: true});
        var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);


        // 设置立方体坐标位置
        cube.position.x=-4;
        cube.position.y=3;
        cube.position.z=0;

         // 立方体放入场景
        scene.add(cube);
        
        
         // 创建一个球体
        var sphereGeometry = new THREE.SphereGeometry(4,20,20);
        var sphereMaterial = new THREE.MeshBasicMaterial({color: 0x7777ff, wireframe: true});
        var sphere = new THREE.Mesh(sphereGeometry,sphereMaterial);

        //设置球体坐标位置
        sphere.position.x=20;
        sphere.position.y=4;
        sphere.position.z=2;


         // 球体放入场景
        scene.add(sphere);

          //设置相机位置
        camera.position.x = -30;
        camera.position.y = 40;
        camera.position.z = 30;
        camera.lookAt(scene.position);

    

        // 执行一次渲染器,GPU渲染成图像,绘制到canvas里面呈现
        renderer.render(scene, camera);

</script>
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极彩视觉科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值