Three.JS实现三维场景

  

最近在看一些Web3D的内容,觉得如果用纯opengl写一个简单的3 d场景太难了;不过还好,有很多现成的库可以使用。
  

  

(个人感觉):我知道的经常的是Three.JS和SceneJS。感觉Three.JS资料比较多,貌似好学一些吧;另一个是ScenenJS,感觉官方介绍比较好,适合做一些工程和医学上的模拟,实时性比较好,但是中文资料感觉比较少,不太好学习。我个人看的是Three.JS

  

学习中用到的一些工具和库:学习中用到一些库,也费了不少时间去整理,下载;
  用到的工具:WebStorm个人感觉还好,虽然说,开始学不建议IDE,但是起码有代码提示,会有函数的简单说明,起码知道你输入的代码(即使是照着教程抄)是否正确,如果智能提示有,那么至少说明你输入的代码是正确的。

  

sublimeText:一个文本工具,配置了也可以对代码有些提示,但是,提示功能不如专业IDE。速度很好。
  工具不上传了,太大,可以自己去官网下载。

  

用到的库:
  

  
      <李> Three.JS(介绍可以搜索):   <李> JQuery-1.9.0.JS:李   <李> JQuery-3.2.1.JS:李   <李> stats.JS:李   <李> dat.GUI.JS:李   <李> controlKit.JS:李   <李> SceneJS.js:李   
  

个人也是初学,工具用的是WebStorm、下面是three.JS的第一个例子,代码中添加了很详细的解释,照着写,仔细看看注释。学习的时候,个人建议把下载到库修改下名的字,和你写的HTML文件统一放到一个文件夹中,这样像下面的例子中,添加引用的库就可以了,要不就要指定引用库的全路径。

  

        & lt; !DOCTYPE html>   & lt; html lang=癳n”比;   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> 3。js第一章学习& lt;/title>   & lt; !——需要的基本JS库——比;   & lt;脚本src=" https://www.yisu.com/zixun/jquery19.js "祝辞& lt;/script>   & lt;脚本src=" https://www.yisu.com/zixun/three.js "祝辞& lt;/script>   & lt;脚本src=" https://www.yisu.com/zixun/stats.js "祝辞& lt;/script>   & lt;脚本src=" https://www.yisu.com/zixun/dat.gui.js "祝辞& lt;/script>   & lt;脚本src=" https://www.yisu.com/zixun/controlKit.js "祝辞& lt;/script>   & lt; !——给身体加入一个样式,边框为0(零),不显示边框);滚动条隐藏——比;   & lt;风格类型=" text/css "比;   身体{   保证金:0;   溢出:隐藏;   }   & lt;/style>   & lt;/head>   & lt; body>   & lt; !——建立一个DIV, WebGL渲染的基本物体会在此处输出——比;   & lt; div id=癢ebGL-output”比;      & lt;/div>      & lt; !——定义一个JQuery函数,所有的WebGL操作展示将在该函数中进行——比;   & lt;脚本type=" text/javascript祝辞   $(函数(){   & lt; !——构建场景——比;   var=new THREE.Scene场景();   & lt; !——建立相机,查看场景,透视相机——比;   var相机=new THREE.PerspectiveCamera(45岁window.innerWidth/window.innerHeight, 0.1, 1000);   & lt; !——构建渲染器,进行渲染——比;   var渲染器=new THREE.WebGLRenderer ();   & lt; !——渲染背景色,不知道为什么在此学习过程中,该函数setClearColorHex()老是提示错误?——比;//renderer.setClearColorHex (0 xeeeeee);   renderer.setClearColor (0 xaaffcc);   & lt; !——渲染尺寸——比;   renderer.setSize (window.innerWidth window.innerHeight);      & lt; !——添加一个辅助坐标轴——比;   var=new THREE.AxisHelper轴(20);   scene.add(轴);      & lt; !——构建一个平面,物体将会放置在这个平面上——比;   & lt; !——平面尺寸,100 x60宽度方向平分几分,高度方向平分几分,如果参数最后2位不是(1,1),平面会显示为网格平面——比;   var planeGeometry=new THREE.PlaneGeometry (100、60、10、10);   & lt; !——平面材质,仅仅指定颜色0 xcccccc——比;   var planeMaterial=new THREE.MeshBasicMaterial({颜色:0 xccaacc});   & lt; !——有尺寸和材质构建一个平面——比;   var飞机=new THREE.Mesh (planeGeometry planeMaterial);   & lt; !——把平面选择-90°,方便观察——比;   plane.rotation。x=-0.5 * Math.PI;   & lt; !——指定平面的位置——比;   plane.position。x=15;   plane.position。y=0;   plane.position。z=0;   & lt; !——把平面加入到场景中——比;   scene.add(飞机);   & lt; !——建立物体,一个立方体,一个球体——比;   & lt; !——建立一个立方体——比;   & lt; !——指定立方体的几何尺寸,长宽高,不包括位置——比;   var cubeGeometry=new THREE.CubeGeometry (4、4、4);   & lt; !——指定立方体的材质,仅仅指定颜色:0 xff0000是否使用线框模式显示:是——比;   var cubeMaterial=new THREE.MeshBasicMaterial({颜色:0 xff0000,线框:真});   & lt; !——以给定的几何尺寸和材质构建一个立方体——比;   var立方体=new THREE.Mesh (cubeGeometry cubeMaterial);   & lt; !——指定立方体的具体位置xyz——比;   cube.position。x=4;   cube.position。y=3;   cube.position。z=0;   & lt; !——把建立的立方体放入场景——比;   scene.add(立方体);      & lt; !——建立一个球球面体——比;   & lt; !——指定球体的几何尺寸,不包括位置;最后2个参数感觉是指定网格密度——比;   var sphereGeometry=new THREE.SphereGeometry (4、50,50);   & lt; !——指定球体材质,仅仅指定颜色:0 xff0000是否以线框形式显示:是——比;   var sphereMaterial=new THREE.MeshBasicMaterial({颜色:0 xff0000,线框:真});   & lt; !——以给定的几何尺寸和材质,建立一个球体——比;   var=new THREE.Mesh范围(sphereGeometry sphereMaterial);   & lt; !——指定球体的位置X Y Z——比;   sphere.position。x=20;   sphere.position.y=4;   sphere.position。z=0;   & lt; !——把建立的球体加入到场景中——比;   scene.add(球体);      & lt; !——指定相机的位置和方向,决定我们在场景中如何看,能看到什么——比;   camera.position。x=-30;   camera.position。y=40;   camera.position。z=30;   camera.lookAt (scene.position);      & lt; !——利用JQuery查找到ID为WebGL-output的DIV,并把渲染到的东西输出到该DIV——比;   $ (" # WebGL-output ") .append (renderer.domElement);   & lt; !——利用渲染器以给定的相机去渲染场景——比;   renderer.render(场景、摄像头等);   });   & lt;/script>         & lt;/body>   & lt;/html>

Three.JS实现三维场景