WebGL与three.js
前面学习了一些webgl的基础知识,现在就用一下three.js写一个小例子,记录一下学习的过程。
效果图:

1.去github下载three.js,然后将它加载到网页中
<script src="js/three.js"></script>
2接着就该写一下参数了,主要的四大组件一个不能少
2.1生成“场景”组件
var scene = new THREE.Scene();
2.2生成“相机”组件
var camera = new THREE.PerspectiveCamera(45 , window.innerWidth/window.innerHeight, 1, 1000);
四个参数
第一个参数:是夹角
第二个参数:宽高比
第三个参数:最近距离
第四个参数:最远距离
2.3生成“渲染器”组件
var renderer = new THREE.WebGLRenderer();
因为渲染器有许多种,按需求生成
2.4生成“几何体”组件
var geometry = new THREE.CubeGeometry(2,2,2);
这里生成了一个立方体,同样也可以生成多种几何体
3.最后渲染出图形
function render(){
//add animation
requestAnimationFrame(render);
//rotating
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
//renderer cube
renderer.render(scene,camera);
}
其中requestAnimationFrame是新的方法,也可以用setTimeout 代替
详细代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="js/three.js"></script> </head>
<body>
<script>
//create scenc
var scene = new THREE.Scene();
//create Camera
var camera = new THREE.PerspectiveCamera(45 , window.innerWidth/window.innerHeight, 1, 1000);
//create renderer
var renderer = new THREE.WebGLRenderer();
//clean renderer color
renderer.setClearColor('#FFFFFF');
//set renderer size
renderer.setSize(window.innerWidth,window.innerHeight);
//put rendererDom into body
document.body.appendChild(renderer.domElement);
//create geometry
var geometry = new THREE.CubeGeometry(2,2,2);
//create naterial
var material = new THREE.MeshBasicMaterial({color:0xff0000});
//create cube
var cube = new THREE.Mesh(geometry,material);
//put cube into scene
scene.add(cube); //Point of view see the cube
camera.position.z = 10; function render(){
//add animation
requestAnimationFrame(render);
//rotating
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
//renderer cube
renderer.render(scene,camera);
}
render();
</script>
</body>
</html>
学习资料:
[1]:WebGL中文网:http://www.hewebgl.com
[2]:three.js在Github地址:https://github.com/Billshuai/three.js
[3]:一些案例:https://threejs.org/
[4]:易百webgl教程:http://www.yiibai.com/webgl/webgl_context.html
WebGL与three.js的更多相关文章
- Web3D编程入门总结——WebGL与Three.js基础介绍
/*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...
- 转:WebGL、Asm.js和WebAssembly概念简介
WebGL.Asm.js和WebAssembly概念简介 转:http://www.techbrood.com/zh/news/webgl/webgl%E3%80%81asm_js%E5%92%8Cw ...
- 学废了系列 - WebGL与Node.js中的Buffer
WebGL 和 Node.js 中都有 Buffer 的使用,简单对比记录一下两个完全不相干的领域中 Buffer 异同,加强记忆. Buffer 是用来存储二进制数据的「缓冲区」,其本身的定义和用途 ...
- webGL之three.js入门3--材料篇
这几天在看李鹏程翻译的[美]Jos Dirksen的<Three.js开发指南>,看到第八章了,现在来总结一下threejs中材料的相关知识.顺带也看完了上海交大的张雯莉出的<thr ...
- webGL之three.js入门2
入门建议: webGL中文翻译教程,基于NeHe的openGL教程:http://www.hiwebgl.com/?p=42 . WebGL中文网 http://www.hewebgl.com/ ,里 ...
- webGL之three.js入门1
开场白 最近开始学前端,看了极客学院的前端教学视频,其实有C++或者java基础的人学前端还是很快的.但是html的标签和CSS的样式还是得多code才能熟练,熟能生巧,学以致用. 还在看js,因为有 ...
- webGL和three.js的关系
如今浏览器的功能越来越强大,而且这些功能可能通过JavaScript直接调用.你可以用HTML5标签轻松地添加音频和视频,而且可以在HTML5画布上创建各种交互组件.现在这个功能集合里又有了一个新成员 ...
- webGL之three.js入门4--ThreeJS Editor入门篇
因为工作需要,要看threejs editor的源码,顺便记录过程. github下载的源码目录是这样的 但是editor和其他文件夹内的内容的关联的,我需要将其独立出来并且编辑editor. 进入e ...
- WebGL框架 -- three.js
http://segmentfault.com/a/1190000002421007 http://www.cnblogs.com/shawn-xie/archive/2012/08/16/26425 ...
随机推荐
- 遍历Map的方法
1.使用 entrySet() entrySet() --> 官方推荐将Map转换成Map.Entry对象的Set集合 Set entrys = map.entrySet(); Iterat ...
- 前端构建工具之gulp_常用插件
gulp常用插件的使用 今天来看看一下gulp的常用插件的使用 就像gruntjs需要一个Gruntfile.js文件一样,gulp也需要一个文件作为它的主文件,在gulp中这个文件叫做gulpfil ...
- pywin32 创建一个窗口
import win32con,win32gui class MyWindow(): def __init__(self): #注册一个窗口类 wc = win32gui.WNDCLASS() wc. ...
- 前端工具HBuilder安装Sass插件
HBuilder自带未安装的less插件,但是sass插件却没有,需要自己安装,步骤如下: 1.安装sass,参考: http://www.w3cplus.com/sassguide/install. ...
- Oracle:试图访问正在使用的事务临时表
处理步骤为 1.找到表ID select * from dba_objects where object_name like 'TPT_RPWORPA1_QRY' 2.通过表ID查找正在使用的事务 s ...
- 我的LaTeX中文文档模板
中文LaTeX处理模板 环境MiTex内核 编辑环境WinEdit 源码如下: \documentclass[a4paper,12pt]{article} \usepackage{CJK} %设定字号 ...
- 【Kubernetes】K8S 网络隔离 方案
参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...
- C++11智能指针读书笔记;
智能指针是一个类对象,而非一个指针对象. 原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 它的一种通用实现 ...
- mysql nonInstall 版本的安装与配置
最近用到mysql,发现如果想使用最新版本64 bit mysql 需要独特的配置和使用方式 结合最近的研究总结一下安装过程. 首先下载:http://dev.mysql.com/downloads/ ...
- JSTL 操作符
el表达式的取值默认顺序: pageScope requestScope sessionScope applicationScope 结构,采用.导航,也称为存取器 ${us ...