【 three.js-02 】.初始

初始项目前,先引入three.js,引入方式请看上一篇文章CSDNicon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/134052424

引入three.js完成,那就正式开启three.js之旅吧!

1.初始化场景 

var scene = new THREE.Scene();

2.创建一个模型

var geometry = new THREE.BoxGeometry(100, 100, 100); //创建一个立方体几何对象Geometry

3.添加材质对象Material

 var material = new THREE.MeshLambertMaterial({

        color: 0x00ff00,

      });

4.添加网格模型对象Mesh

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

5.网格模型添加到场景中

scene.add(mesh); //网格模型添加到场景中

【注意:光源的设置需要在渲染之前!】

6.点光源

var point = new THREE.PointLight(0x444444); //创建了一个点光源对象

point.position.set(400, 200, 300); //点光源位置

 scene.add(point);//点光源添加到场景中

7.环境光

var ambient = new THREE.AmbientLight(0x444444);

scene.add(ambient);//环境光添加到场景中

8.初始化相机

 var width = window.innerWidth; //窗口宽度

      var height = window.innerHeight; //窗口高度

      var k = width / height; //窗口宽高比

      var s = 150;//类似于相机的缩放距离

//创建相机对象

      var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);

      camera.position.set(200, 300, 200); //设置相机位置

      camera.lookAt(scene.position); //设置相机方向(指向的场景对象)

9.初始化渲染器

var renderer = new THREE.WebGLRenderer();

      renderer.setSize(width, height); //设置渲染区域尺寸

      renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色

      document.body.appendChild(renderer.domElement); //body元素中插入canvas对象

10.执行渲染器

renderer.render(scene, camera);

按照以上步骤,实现了这样一个立体的四方体:

案例源码如下:

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8" />

    <title>1.初始化</title>

    <style>

      body {

        margin: 0;

        overflow: hidden;

        /* //取消滚动条 */

      }

    </style>

    <!-- //引入three.js -->

    <script src="http://www.yanhuangxueyuan.com/threejs/build/three.min.js"></script>

  </head>

  <body>

    <script>

      //【1.初始化场景】

      var scene = new THREE.Scene();

      //【2.创建一个模型】

      var geometry = new THREE.BoxGeometry(100, 100, 100); //创建一个立方体几何对象Geometry

      // 列如:

      //(1)长方体 参数:长,宽,高

      // var geometry = new THREE.BoxGeometry(100, 100, 100);

      //(2)球体 参数:半径60  经纬度细分数40,40

      // var geometry = new THREE.SphereGeometry(60, 40, 40);

      //(3) 圆柱  参数:圆柱面顶部、底部直径50,50   高度100  圆周分段数

      // var geometry = new THREE.CylinderGeometry(50, 50, 100, 25);

      //(4)正八面体

      // var geometry = new THREE.OctahedronGeometry(50);

      //(5)正十二面体

      // var geometry = new THREE.DodecahedronGeometry(50);

      //(6) 正二十面体

      // var geometry = new THREE.IcosahedronGeometry(50);

      //【3.材质对象Material】

      var material = new THREE.MeshLambertMaterial({

        color: 0x00ff00,

      });

      // 【4.网格模型对象Mesh】

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

      // 【5.网格模型添加到场景中】

      scene.add(mesh); //网格模型添加到场景中

      // 【注意:光源的设置需要在渲染之前!】

      // 【6.点光源】

      var point = new THREE.PointLight(0x444444); //创建了一个点光源对象

      point.position.set(400, 200, 300); //点光源位置

      //【6.点光源添加到场景中】

      scene.add(point);

      // 【7.环境光】

      var ambient = new THREE.AmbientLight(0x444444);

      scene.add(ambient);

      // 【8.初始化相机】

      var width = window.innerWidth; //窗口宽度

      var height = window.innerHeight; //窗口高度

      var k = width / height; //窗口宽高比

      var s = 150;

      //创建相机对象

      var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);

      camera.position.set(200, 300, 200); //设置相机位置

      camera.lookAt(scene.position); //设置相机方向(指向的场景对象)

      //【9.初始化渲染器】

      var renderer = new THREE.WebGLRenderer();

      renderer.setSize(width, height); //设置渲染区域尺寸

      renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色

      document.body.appendChild(renderer.domElement); //body元素中插入canvas对象

      //执行渲染器

      renderer.render(scene, camera);

    </script>

  </body>

</html>

如果直接看上面的代码不太理解,第一次接触会比较陌生,可以尝试更改代码的参数看看有什么效果,代码的功能都有注释, 看着注释也能大概猜出一个参数的含义。通过修改代码,同时刷新浏览器查看效果形成一个互动来提高自己学习的驱动力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值