最近在看一些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实现三维场景