打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Three.js 3D特效学习
http://www.open-open.com/lib/view/open1386744727080.html
Three.js   2013-12-11 15:26:44 发布
您的评价:
0.0
3收藏
一、Three.js基本介绍
Three.js是JavaScript编写的WebGL第三方库。提供了非常多的3D显示功能。Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精采的演示。不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏,基本没有中文的)Three.js的代码托管在github上面。
二、基本 Demo
1.最基本的Hello World:http://stemkoski.github.io/Three.js/HelloWorld.html
2.在网页上调用摄像头:http://stemkoski.github.io/Three.js/Webcam-Texture.html
3.体感操作:http://stemkoski.github.io/Three.js/Webcam-Motion-Detection-Texture.html
4.支持游戏手柄:http://stemkoski.github.io/Three.js/Mesh-Movement-Gamepad.html
5.3D建模和方向键控制移动方向:http://stemkoski.github.io/Three.js/Model-Animation-Control.html
6.SkyBox和三个气泡的渲染:http://stemkoski.github.io/Three.js/Metabubbles.html
7.3D红蓝偏光的名车展:http://threejs.org/examples/webgl_materials_cars_anaglyph.html
8.跑车游戏:http://hexgl.bkcore.com/
三、Three.js编写环境准备
1.Three.js库文件下载:https://github.com/mrdoob/three.js/
2.已安装IIS或Tomcat或Apache,这些例子必须挂到服务器上才能正常运行,本地打开会出现各种无法理解的问题。
四、动手编写第一个 Demo
<!doctype html> <html lang="en"> <head> <title>Template (Three.js)</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> <link rel=stylesheet href="css/base.css" /> </head> <body> <script src="../js/Three.js"></script> <!-- 这个是Three.js引擎的js --> <script src="../js/Detector.js"></script> <script src="../js/Stats.js"></script> <script src="../js/OrbitControls.js"></script> <script src="../js/THREEx.KeyboardState.js"></script> <script src="../js/THREEx.FullScreen.js"></script> <script src="../js/THREEx.WindowResize.js"></script> <script src="../js/Texture.js"></script> <!-- 一些js工具类,现在不深究 --> <div id="ThreeJS" style="z-index: 1; position: absolute; left: 0px; top: 0px"></div> <!-- 这个div就是整个画布 --> <script> ////////// // MAIN // ////////// // standard global variables var container, scene, camera, renderer, controls, stats; // 几个变量代表的含义:容器、场景、摄像机(视角)、渲染器、控制装置 var keyboard = new THREEx.KeyboardState(); var clock = new THREE.Clock(); // custom global variables var cube; // initialization init(); // animation loop / game loop animate(); /////////////// // FUNCTIONS // /////////////// function init() { // 初始化 /////////// // SCENE // /////////// scene = new THREE.Scene(); // 定义场景 //////////// // CAMERA // //////////// // set the view size in pixels (custom or according to window size) // var SCREEN_WIDTH = 400, SCREEN_HEIGHT = 300; var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight; // camera attributes var VIEW_ANGLE = 45, ASPECT = SCREEN_WIDTH / SCREEN_HEIGHT, NEAR = 0.1, FAR = 20000; // set up camera camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR); // 定义视角 // add the camera to the scene scene.add(camera); // the camera defaults to position (0,0,0) // so pull it back (z = 400) and up (y = 100) and set the angle towards the scene origin camera.position.set(-400, 150, 200); // 视角的位置 camera.lookAt(scene.position); ////////////// // RENDERER // ////////////// // create and start the renderer; choose antialias setting. if (Detector.webgl) renderer = new THREE.WebGLRenderer({ antialias : true }); else renderer = new THREE.CanvasRenderer(); renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT); // attach div element to variable to contain the renderer container = document.getElementById('ThreeJS'); // alternatively: to create the div at runtime, use: // container = document.createElement( 'div' ); // document.body.appendChild( container ); // attach renderer to the container div container.appendChild(renderer.domElement); //////////// // EVENTS // //////////// // automatically resize renderer THREEx.WindowResize(renderer, camera); // toggle full-screen on given key press THREEx.FullScreen.bindKey({ charCode : 'm'.charCodeAt(0) }); ////////////// // CONTROLS // ////////////// // move mouse and: left click to rotate, // middle click to zoom, // right click to pan controls = new THREE.OrbitControls(camera, renderer.domElement); // 设置控制,这里只有鼠标操作 /////////// // STATS // /////////// // displays current and past frames per second attained by scene stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.bottom = '0px'; stats.domElement.style.zIndex = 100; container.appendChild(stats.domElement); /////////// // LIGHT // /////////// // create a light var light = new THREE.PointLight(0xffffff); // 设置光源 light.position.set(0, 250, 0); scene.add(light); // CUBE var cubeGeometry = new THREE.CubeGeometry(260, 35, 185, 1, 1, 1); // 定义一个立方体,就是那本书的模型 var cubeMaterialArray = []; cubeMaterialArray.push(new THREE.MeshBasicMaterial({ map : new THREE.ImageUtils.loadTexture('img/side-up.png') // 给每一面上贴图,下同 })); cubeMaterialArray.push(new THREE.MeshBasicMaterial({ map : new THREE.ImageUtils.loadTexture('img/side-up.png') })); cubeMaterialArray.push(new THREE.MeshBasicMaterial({ map : new THREE.ImageUtils.loadTexture('img/up.png') })); cubeMaterialArray.push(new THREE.MeshBasicMaterial({ map : new THREE.ImageUtils.loadTexture('img/down.png') })); cubeMaterialArray.push(new THREE.MeshBasicMaterial({ map : new THREE.ImageUtils.loadTexture('img/side-right.png') })); cubeMaterialArray.push(new THREE.MeshBasicMaterial({ map : new THREE.ImageUtils.loadTexture('img/side-left.png') })); var cubeMaterials = new THREE.MeshFaceMaterial(cubeMaterialArray); cube = new THREE.Mesh(cubeGeometry, cubeMaterials); cube.position.set(0, 0, 0); // 立方体放置的位置 scene.add(cube); } function animate() { requestAnimationFrame(animate); render(); update(); } function update() { // delta = change in time since last call (in seconds) var delta = clock.getDelta(); controls.update(); stats.update(); } function render() { renderer.render(scene, camera); } </script> </body> </html> 来自:http://blog.csdn.net/techzero/article/details/9362263
同类热门经验
Vue.js + webpack 项目实践
JS的ZIP压缩和解压缩工具 Zip.js
功能强大的JavaScript数学工具包: Math.js
画扑克牌的JS库 - Poker.JS
jQuery评论显示插件 Quovolver
dhtmlxSpreadsheet是一个基于Ajax Web的电子表格控件
阅读目录
相关文档  —更多
Three.js 精髓.pdf
ASP.NET MVC 5 with Bootstrap and Knockout.js.pdf
Data Visualization with D3.js Cookbook.pdf
D3.js实战.pdf
《D3.js数据可视化实战手册 》迷你书.pdf
利用d3.js实现数据可视化(Data Visualization with d3.js).pdf
《D3.js 数据可视化实战手册 》迷你书.pdf
Learning HTML5 Game Programming.pdf
数据可视化实战:使用D3.js设计交互式图表.pdf
开源JS报表工具汇总.pptx
Direct3d Succinctly.pdf
JS基础学习笔记.doc
Three20使用图文教程.pdf
《Ext JS 3.2 学习指南》(Learning Ext JS 3.2)英文文字版.pdf
最快乐的node.js中文学习手册.pdf
js时钟.doc
封装js.doc
You Don’t Know JS: this & Object Prototypes.pdf
js函数大全.pdf
js 函数集.doc
相关经验  —更多
JavaScript三维模型库 Three.js
3D 旋转滑动插件:Image Gallery Threejs
3D城市构建工具:3d.city
Three.js入门
ECharts-X:3D(WebGL)版的 ECharts
Three.js之渲染器
前端开发指南:汇集主流学习资源
以开发者的视角整理编排的前端开发所使用语言的主流学习资源
一个简单的webVR体验 experience
主流HTML5游戏框架的分析和对比(Construct2、ImpactJS、CreateJS、Cocos2d-html5)
企业中的 IBM 和 Node.js: 针对 IBM SDK for Node.js 的核心转储调试
HTML5塔防游戏:Tower-Defense
大量 D3.js 示例
HTML5 游戏引擎深度测评
相关讨论  —更多
三款顶级Javascript图表图形类库介绍和比对
阿里云应用开发失败总结[转载]
11个实用的Apache .htaccess配置
浅谈JavaScript编程语言的编码规范
什么是Node.js?
Echarts插件,求简答获得不了option.legend.data属性
10个超实用的PHP代码片段
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
室内房间全景图(基于three.js)
Web端cad测量面积的示例代码(网页CAD测量面积功能开发)
js模板引擎,哪个好
android webview 中 js 模板引擎的使用
jQuery-easyUI防止panel,dialog,window窗口超出父元素边界
使用three.js加载obj+mtl模型完整案例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服