一直对WEBGL感兴趣,终于提起精神学习了,前路漫漫啊~

来源:WEBGL中文网 http://www.hewebgl.com

1、三大组建

在Three.js中,要渲染物体到网页中,我们需要3个组建:场景(scene)、相机(camera)和渲染器(renderer)。有了这三样东西,才能将物体渲染到网页中去。

记住关建语句:有了这三样东西,我们才能够使用相机将场景渲染到网页上去。

2、相机

另一个组建是相机,相机决定了场景中那个角度的景色会显示出来。相机就像人的眼睛一样,人站在不同位置,抬头或者低头都能够看到不同的景色。

场景只有一种,但是相机却又很多种。和现实中一样,不同的相机确定了呈相的各个方面。比如有的相机适合人像,有的相机适合风景,专业的摄影师根据实际用途不一样,选择不同的相机。对程序员来说,只要设置不同的相机参数,就能够让相机产生不一样的效果。

3、渲染器

最后一步就是设置渲染器,渲染器决定了渲染的结果应该画在页面的什么元素上面,并且以怎样的方式来绘制。注意,渲染器renderer的domElement元素,表示渲染器中的画布,所有的渲染都是画在domElement上的,所以这里的appendChild表示将这个domElement挂接在body下面,这样渲染的结果就能够在页面中显示了。

4、添加物体到场景中

5、渲染

6、渲染循环

实例一,初探:

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>初探</title><style>canvas { width: 100%;height:100%}</style><script src="lib/three.js"></script>
</head>
<body><script>var scene = new THREE.Scene();//场景var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);//透视相机var renderer = new THREE.WebGLRenderer(); //渲染器renderer.setSize(window.innerWidth, window.innerHeight);// 设置渲染器的大小为窗口的内宽度,也就是内容区的宽度document.body.appendChild(renderer.domElement);        //将物体添加到场景中var geometry = new THREE.CubeGeometry(1,1,1);var material = new THREE.MeshBasicMaterial({color: 0x00ff00});var cube = new THREE.Mesh(geometry, material); scene.add(cube);camera.position.z = 5;function render() {requestAnimationFrame(render);cube.rotation.x += 0.1;cube.rotation.y += 0.1;renderer.render(scene, camera);}render();</script></body>
</html>

转载于:https://www.cnblogs.com/xiaoluoli/p/6215538.html

webGL学习笔记一相关推荐

  1. WebGL学习笔记七点一

    第六章讲的是一些GL的一些语法,前面已经涉及,学习时直接跳过,来看第七章,第七章是真正意义的三维立体的出现,其实图形绘制方法是差不多的,就是Z坐标此时不再为0,所以很容易能构造出一些立体图形,但是立体 ...

  2. WebGL学习笔记(3)

    根据上篇笔记,在对3D对象可进行普通的控制后,以及学习了http://hiwebgl.com的教程第10章内容:世界模型的载入以及控制镜头移动,经过多次调试矩阵代码,已经可以实现在世界中旋转镜头/控制 ...

  3. WebGL学习笔记(二)

    目录 绘制多个顶点 使用缓冲区对象 类型化数组 使用drawArrays()函数绘制图形 图形的移动 图形的旋转 图形的缩放 绘制多个顶点 使用缓冲区对象 创建缓冲区对象 var vertexBuff ...

  4. WebGL学习笔记(基础知识篇)

    WEBGL基础知识介绍 1.场景(scene) 场景如其名,即显示3D空间内物体的容器,就好比一个箱子是一个3D场景. 2.坐标系: webgl使用笛卡尔坐标系(宽度.高度和深度),我们也可以指定使用 ...

  5. WebGL学习笔记(4)

    本篇笔记加强了上篇笔记示例代码的程序,实现了使用nodejs-websocket来广播每个玩家的坐标数据并在同一个世界模型中进行多人在线交互. websocket服务端: 安装nodejs与npm,创 ...

  6. WebGL学习笔记 第三章绘制和变换三角形

  7. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

  8. 【带着canvas去流浪(11)】Three.js入门学习笔记

    [摘要] three.js 入门学习笔记 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 资料推荐及建议 1.官方文档 很详细,但是API部分单独 ...

  9. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  10. 2012年9月9日参加中国软件开发者大会学习笔记

    2012年9月9日参加中国软件开发者大会学习笔记 全文请访问:http://bbs.hpx-party.org/thread-74667-1-1.html 欢迎转发新浪微博:http://weibo. ...

最新文章

  1. Linux那些事儿 之 戏说USB(29)驱动的生命线(一)
  2. 网域环境如何让用户自行修改密码
  3. 12岁女孩零编程经验开发系统千人用,80岁初代程序员300多天打卡学AI
  4. 成为优秀程序员应该具备的8个特质
  5. WPF 读取Docx文件并显示(附下载链接)
  6. 搭建hexo博客并部署到github上
  7. 理解Python的With语句
  8. ninjala服务器维护,Ninjala2.0版本更新内容一览
  9. 对于纯Java项目,JVM 各个类加载器的加载目标是什么?
  10. 浅析ERP软件企业资源的关系与发展
  11. python读取redis数据
  12. oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向
  13. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)
  14. 从 Vue 的视角学 React(二)—— 基本语法
  15. python热图怎么截取对角线的一半_python-控制seaborn热图中的单个线宽
  16. c语言课程设计类层次图,C语言课程设计————写下流程图! 谢谢
  17. 【转】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  18. 并发编程游玩---ExecutorService的isShutdown()和isTerminated(),以及一些方法的区别
  19. Java后端开发框架
  20. CSS3设置按钮的样式

热门文章

  1. Android入门笔记06
  2. Linux统计文件夹下文件数量
  3. 30096大学计算机应用基础,300道计算机应用基础试题(附答案)
  4. 清华大学操作系统OS学习(五)——物理内存管理:非连续内存分配
  5. 在matlab中实现PCA算法
  6. 【论文笔记】DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition
  7. python-random
  8. 三星手机怎么看html5,高端手机什么样?看三星S20 FE 5G就知道了
  9. webstorm运行的端口在哪看_webstorm(10.0.2)的端口号修改
  10. Hyperledger Fabric教程(1)--Hyperledger Fabric 老版本 1.1.0 快速部署安装