threejs基础一

1.什么是webGL?
WebGL是在浏览器中实现三维效果的一套规范
2.什么是threejs?
threejs是一个开源项目。three表示3D的意思,js表示javascript的意思。那么合起来,three.js就是使用javascript 来写3D程序的意思,threejs是对webgl的封装。
3.threejs的下载。
threej的官方网站是:https://threejs.org/。在这里有一些例子可以查看:https://threejs.org/examples/#webgl_animation_cloth
比如第一个例子:
这里写图片描述

上图右下角有一个view source按钮,点击可以查看实例的源码。
4.源框架目录结构
解压软件解开下载的源码包,各个目录如下所示:
这里写图片描述
Build目录:包含三个文件,three.js ,three.min.js 和threejs。module。这是three.js最终被引用的文件。一个已经压缩,一个没有压缩的js文件。

Docs目录:这里是three.js的帮助文档,里面是各个函数的api,可惜并没有详细的解释,并且还是英文的。试图用这些文档来学会three.js是不可能的。

Editor目录:一个类似3D-max的简单编辑程序,它能创建一些三维物体。

Examples目录:一些很有趣的例子demo,可惜没有文档介绍。对图像学理解不深入的同学,学习成本非常高。

Src目录:源代码目录,里面是所有源代码。

Test目录:一些测试代码,基本没用。

Utils目录:存放一些脚本,python文件的工具目录。例如将3D-Max格式的模型转换为three.js特有的json模型。

.gitignore文件:git工具的过滤规则文件,没有用。

CONTRIBUTING.md文件:一个怎么报bug,怎么获得帮助的说明文档。

LICENSE文件:版权信息。

README.md文件:介绍three.js的一个文件,里面还包含了各个版本的更新内容列表。
5:开发环境的配置
Three.js本质上是Webgl,如果你的浏览器不支持Webgl,那么肯定你就不能完整的运行Three.js。支持Webgl的浏览器很多,例如Chrome、FireFox、360安 全浏览器6.0等,而IE浏览器对Webgl标准的支持就不太好。所以我们推荐使用Chrome和FireFox浏览器,刚安装好的Chrome浏览器不能打开本地的网页文件,这并不是浏览器不支持,这里需要进行一番设置,设置如下:右键Chrome的快捷方式->选择快捷方式->目标,在目标栏内容后添加 –enable-webgl –ignore-gpu-blacklist –allow-file-access-from-files
这里写图片描述
6:开发工具的选择
对于开发工具,理论上能写JavaScript的编辑器都行,但是好的编辑器会使工作事半功倍,这里推荐使用VS和WebStorm。
WebStorm的破解方法很简单,目前最新版是2017.2.4.破解方法是选择“license server” 输入:http://idea.imsxm.com,点击激活即可。
7:第一个实例
在你的项目中导入threejs框架,具体是在工程里导入build文件夹下js文件。然后实例如下:

<<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>lesson1-by-shawn.xie</title>
    <!--引入Three.js-->
    <script src="Three.js"></script>
    <script type="text/javascript">
        //开启Three.js渲染器
        var renderer;//声明全局变量(对象)
        function initThree() {
            width = document.getElementById('canvas3d').clientWidth;//获取画布「canvas3d」的宽
            height = document.getElementById('canvas3d').clientHeight;//获取画布「canvas3d」的高
            renderer=new THREE.WebGLRenderer({antialias:true});//生成渲染器对象(属性:抗锯齿效果为设置有效)
            renderer.setSize(width, height );//指定渲染器的高宽(和画布框大小一致)
            document.getElementById('canvas3d').appendChild(renderer.domElement);//追加 【canvas】 元素到 【canvas3d】 元素中。
            renderer.setClearColor(0x000000, 1.0);//设置canvas背景色(clearColor)
        }
        //设置相机
        var camera;
        function initCamera() {
            camera = new THREE.PerspectiveCamera( 45, width / height , 1 , 5000 );//设置透视投影的相机,默认情况下相机的上方向为Y轴,右方向为X轴,沿着Z轴朝里(视野角:fov 纵横比:aspect 相机离视体积最近的距离:near 相机离视体积最远的距离:far)
            camera.position.x = 0;//设置相机的位置坐标
            camera.position.y = 50;//设置相机的位置坐标
            camera.position.z = 100;//设置相机的位置坐标
            camera.up.x = 0;//设置相机的上为「x」轴方向
            camera.up.y = 1;//设置相机的上为「y」轴方向
            camera.up.z = 0;//设置相机的上为「z」轴方向
            camera.lookAt( {x:0, y:0, z:0 } );//设置视野的中心坐标
        }
        //设置场景
        var scene;
        function initScene() {
            scene = new THREE.Scene();
        }

        //设置光源
        var light;
        function initLight() {
            light = new THREE.DirectionalLight(0xff0000, 1.0, 0);//设置平行光源
            light.position.set( 200, 200, 200 );//设置光源向量
            scene.add(light);// 追加光源到场景
        }
        //设置物体
        var sphere;
        function initObject(){
            sphere = new THREE.Mesh(
                new THREE.SphereGeometry(20,20),                //width,height,depth
                new THREE.MeshLambertMaterial({color: 0xff0000}) //材质设定
            );
            scene.add(sphere);
            sphere.position.set(0,0,0);
        }
        //执行
        function threeStart() {
            initThree();
            initCamera();
            initScene();
            initLight();
            initObject();
            renderer.clear();
            renderer.render(scene, camera);
        }
    </script>
    <style type="text/css">
        div#canvas3d {
            border: none;
            cursor: move;
            width: 1400px;
            height: 600px;
            background-color: #000000;
        }
    </style>
</head>

<body onload='threeStart();'>
<!--盛放canvas的容器-->
<div id="canvas3d"></div>
</body>
</html>

最终的效果是:
这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值