three.js入门指南_js基础知识大全[通俗易懂]

three.js入门指南_js基础知识大全[通俗易懂]文章目录一、Three.js是什么?1.介绍2.环境配置3.WebGL和Three.js学习顺序?二、麻雀虽小而五脏俱全的例子1.引入资源包2.创建场景和添加2个以上的3D对象(可选)3.添加辅助


一、Three.js 是什么?

1.介绍

Three.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多、使用最广泛的三维引擎。

2.环境配置

js作为一个跨端语言,可作为IDE的软件有很多,笔者这里使用的是 websotrm,它的好处是改动一处便可直接显示。

在此给出Three.js的官方GitHub库,[Three.js-GitHub](https://github.com/mrdoob/three.js),请提前下载

3.WebGL和Three.js学习顺序?

引用自Three教程
如果你急于要实现一个Web3D功能,时间有限,也没有图形学基础,个人建议直接学习先Three.js即可,以后想深入掌握,可以学习原生WebGL和图形学相关知识。

如果时间比较充足,又希望有更大的成长空间,学习底层原生WebGL肯定是必要的,可以WebGL和Threejs结合着学习,顺序也不是非常重要。

二、麻雀虽小而五脏俱全的例子

1.引入资源包

<head>
    <meta charset="UTF-8">
    <title>第一个three.js文件_WebGL三维场景</title>
    <style> body { 
     margin: 0; overflow: hidden; /* 隐藏body窗口区域滚动条 */ } </style>
    <!-- 引入three.js三维引擎-->
    <script src="./three.js-r95/build/three.js"></script>
    <!-- 引入OrbitControls.js鼠标操作三维场景-->
    <script src="./three.js-r95/examples/js/controls/OrbitControls.js"></script>


</head>

2.创建场景和添加2个以上的3D对象

    /** * 创建场景对象Scene */
    var scene = new THREE.Scene();

    /** * 创建网格模型,并添加到场景 */
    var geometry = new THREE.BoxGeometry(25, 50, 50); //创建一个立方体几何对象Geometry
    var material = new THREE.MeshLambertMaterial({ 
   
        color: 0xff00ff,  //颜色 16进制
        opacity:0.9,      //透明度 0-1
        transparent:true, //开启透明度,默认关闭
        wireframe:false   //线框,默认关闭
    }); //材质对象Material
    var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
    scene.add(mesh); //网格模型添加到场景中

    var geometry2 = new THREE.BoxGeometry(25, 50, 50); //创建一个球体几何对象
    var material2 = new THREE.MeshLambertMaterial({ 
   
        color: 0xffffff,
        opacity:0.9,      //透明度 0-1
        transparent:true  //开启透明度
    }); //材质对象Material2
    var mesh2 = new THREE.Mesh(geometry2,material2)
    mesh2.translateX(-100);
    mesh2.translateZ(-30);
    // mesh2.translateY(30); //球体网格模型沿Y轴正方向平移
    scene.add(mesh2)

(可选)3.添加辅助坐标系

    /** * 辅助坐标系 参数1000表示坐标系大小 */
    var axisHelper = new THREE.AxisHelper(1000);
    scene.add(axisHelper)

4.光源和相机设置

    /** * 光源设置 */
        //点光源
    var point = new THREE.PointLight(0xfffffff);
    point.position.set(100, 100, 100); //点光源位置
    scene.add(point); //点光源添加到场景中
    //环境光
    var ambient = new THREE.AmbientLight(0x444444);
    scene.add(ambient);


    /** * 相机设置 */
    var width = window.innerWidth; //窗口宽度
    var height = window.innerHeight; //窗口高度
    var k = width / height; //窗口宽高比
    var s = 100; //三维场景显示范围控制系数,系数越大,显示的范围越大
    //创建相机对象
    // var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
    var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
    camera.position.set(200, 0, 0); //设置相机位置
    camera.lookAt(scene.position); //设置相机方向(指向的场景对象)position

5.渲染得到结果

    /** * 创建渲染器对象 */
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(width, height);//设置渲染区域尺寸
    renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
    document.body.appendChild(renderer.domElement); //body元素中插入canvas对象

    function render() { 
   
        console.log(camera.position)
        renderer.render(scene,camera);//执行渲染操作
    }
    render();
    var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象
    controls.addEventListener('change', render);//监听鼠标、键盘事件

结果图如下:
在这里插入图片描述

总结及完整源码

以上就是今天要讲的内容,本文仅仅简单介绍了Three.js的使用。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>第一个three.js文件_WebGL三维场景</title>
    <style> body { 
     margin: 0; overflow: hidden; /* 隐藏body窗口区域滚动条 */ } </style>
    <!-- 引入three.js三维引擎-->
    <script src="./three.js-r95/build/three.js"></script>
    <!-- 引入OrbitControls.js鼠标操作三维场景-->
    <script src="./three.js-r95/examples/js/controls/OrbitControls.js"></script>


</head>

<body>
<script> /** * 创建场景对象Scene */ var scene = new THREE.Scene(); /** * 创建网格模型,并添加到场景 */ var geometry = new THREE.BoxGeometry(25, 50, 50); //创建一个立方体几何对象Geometry var material = new THREE.MeshLambertMaterial({ 
     color: 0xff00ff, //颜色 16进制 opacity:0.9, //透明度 0-1 transparent:true, //开启透明度,默认关闭 wireframe:false //线框,默认关闭 }); //材质对象Material var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh scene.add(mesh); //网格模型添加到场景中 var geometry2 = new THREE.BoxGeometry(25, 50, 50); //创建一个球体几何对象 var material2 = new THREE.MeshLambertMaterial({ 
     color: 0xffffff, opacity:0.9, //透明度 0-1 transparent:true //开启透明度 }); //材质对象Material2 var mesh2 = new THREE.Mesh(geometry2,material2) mesh2.translateX(-100); mesh2.translateZ(-30); // mesh2.translateY(30); //球体网格模型沿Y轴正方向平移 scene.add(mesh2) /** * 辅助坐标系 参数1000表示坐标系大小 */ var axisHelper = new THREE.AxisHelper(1000); scene.add(axisHelper) /** * 光源设置 */ //点光源 var point = new THREE.PointLight(0xfffffff); point.position.set(100, 100, 100); //点光源位置 scene.add(point); //点光源添加到场景中 //环境光 var ambient = new THREE.AmbientLight(0x444444); scene.add(ambient); /** * 相机设置 */ var width = window.innerWidth; //窗口宽度 var height = window.innerHeight; //窗口高度 var k = width / height; //窗口宽高比 var s = 100; //三维场景显示范围控制系数,系数越大,显示的范围越大 //创建相机对象 // var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000); var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 ); camera.position.set(200, 0, 0); //设置相机位置 camera.lookAt(scene.position); //设置相机方向(指向的场景对象)position /** * 创建渲染器对象 */ var renderer = new THREE.WebGLRenderer(); renderer.setSize(width, height);//设置渲染区域尺寸 renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色 document.body.appendChild(renderer.domElement); //body元素中插入canvas对象 function render() { 
     console.log(camera.position) renderer.render(scene,camera);//执行渲染操作 } render(); var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象 controls.addEventListener('change', render);//监听鼠标、键盘事件 </script>
</body>

</html>

今天的文章three.js入门指南_js基础知识大全[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79178.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注