three.js探索笔记一 (three.js 的起步及渲染思…
2018-06-24 01:28:50来源:未知 阅读 ()
这个探索笔记主要讲的,我一个没搞过3D的小小前端,到建造6层楼的心得体会。
前言
“哈?要搞3D?”
“恩,之后一个项目要建造一栋楼,要靠你了少年!”
于是我默默的打开了 webgl新手入门手册 http://www.hewebgl.com/article/getarticle/27
后来,我成功的完成了这个这个3d楼层。http://wisdom.pppppc.com/home/index/threes.html (网站较卡,建议好点的电脑进行查看)
这个过程中,我经历了很多。接下来我将分享我过程中的心得。
第一步:新手教程
方法一:进入webgl官网 three.js新手教程。(我就是这样干的,花了3-4天通了遍基础)
方法二:找之前大神的基础教程。
方法三:加webgl相关QQ群,假扮萌妹,求帮助~~
以下是个画网格的例子,通过这个例子,我给大家分析画一个3d的需要(不是导入模型~)
var renderer,camera,scene,light; var width,height; //物体 var cube; //初始化渲染器函数 function initThree(){ width = document.getElementById("canvas3d").clientWidth; height = document.getElementById("canvas3d").clientHeight; //初始化渲染器 (花括号里面为:锯齿优化) renderer = new THREE.WebGLRenderer({antialias:true}); //大小 renderer.setSize(width,height); document.getElementById("canvas3d").appendChild(renderer.domElement); //背景颜色 renderer.setClearColor(0xFFFFFF,1.0); } //初始化相机函数 function initCamera(){ camera = new THREE.PerspectiveCamera(45,width/height,1,5000); camera.position.x=0; camera.position.y=1000; camera.position.z=0; camera.up.x = 0; camera.up.y = 0; camera.up.z = 1; camera.lookAt({x:0,y:0,z:0}); } //初始化场景函数 function initScene(){ scene = new THREE.Scene(); } //初始光函数 function initLight(){ light = new THREE.DirectionalLight(0xff0000,1.0,0); light.position.set(200,200,200); scene.add(light); } //初始化物体函数 function initObj(){ var geometry = new THREE.Geometry(); var material = new THREE.LineBasicMaterial({vertexColors:true}); var color1 = new THREE.Color("#444444"),color2= new THREE.Color("#ff0000"); var p1 = new THREE.Vector3(-500,0,0); var p2 = new THREE.Vector3(500,0,0); geometry.vertices.push(p1); geometry.vertices.push(p2); geometry.colors.push(color1,color2); for(var i=0;i<21;i++){ var line = new THREE.Line(geometry,material,THREE.LinePieces); line.position.z=(i*50)-500; scene.add(line); var line = new THREE.Line(geometry,material,THREE.LinePieces); line.position.x=(i*50)-500; line.rotation.y=90*Math.PI/180; scene.add(line); } } //整体初始化 function threeStart(){ initThree(); initScene(); initLight(); //对象 initObj();
initCamera();
renderer.clear();
renderer.render(scene, camera);
}
对应着代码,我解释一下:
1,变量:renderer 渲染器
首先我们的最终目标是要将我们代码画的物体渲染到网页上!
渲染的实现就是 :
renderer.render(scene, camera);
2. 变量 : camera 相机 (废话,我们tm要你翻译?)
这玩意叫相机,就相当于我们的眼睛。它是代替我们在3D世界里面看的东西。它有视野大小,视野最近/最远,位置坐标的定义。一般情况,我们移动它位置和方向来控制我们的视野。
3.变量:scene 场景 (这就是我们看到的一切)
场景里面主要有2个东西,
①物体,用three画的\加载的模型等,一般情况,我会将所要的物体全部放到initObj()里面。
②光,没有光,那么物体确实存在在那儿,但是你看不到~~
这些物体和光都需要在渲染前放到场景内。
scene.add(light); scene.add(line);
总结:
一个3d效果的流程:
①初始化渲染器
initThree();
②初始化场景
initScene();
③初始化物体、光 add到场景中
initLight();
initObj();
④把我们的眼睛(相机)给放好位置(初始化)(相机初始位置最终渲染前就行)
initCamera();
⑤最后把场景和相机放到渲染器中,咔咔咔咔咔咔~~噗 页面就出来了。
renderer.render(scene, camera);
哈哈哈哈哈哈哈,详细的那些相机~~光啊~~~什么的建议看webgl官网或者这个大神的博客:http://blog.csdn.net/birdflyto206/article/category/6132005
下一次,我主要这个楼宇项目的起步。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Jquery插件写法笔记整理 2020-03-29
- manifest.json 解析--手机web app开发笔记(三-2) 2019-08-14
- es6学习笔记(二) 2019-08-14
- 前端笔记之微信小程序(四)WebSocket&Socket.io&am 2019-08-14
- 前端笔记之微信小程序(三)GET请求案例&文件上传和 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash