Skip to content

根据THREE.js库学习WebGL的过程(一:一个正方体;二:多个正方体;三:一个旋转组合体;四:星星图;五:下雨图)

Notifications You must be signed in to change notification settings

lijinjiang01/WebGL-Three.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebGL-Three.js

使用工具

编辑器:Sublime Text 3
类库:three.js(版本号:91)

基础知识

Three.js 的三大组件

一.场景:

scene = new THREE.Scene(); /* 新建场景 */
在Three.js中添加的物体都是添加到场景中的。在程序最开始的时候进行实例化,然后将物体添加到场景中即可。

二.照相机:

使用的坐标系是右手坐标系
Three.js提供的照相机分为两种:

正交投影照相机:OrthographicCamera( left, right, top, bottom, near, far )

left — 该属性是可视范围的左平面。你可以将它当做是可渲染部分的左侧边界。
right — 跟left属性一样,不过这次是边界的另外一侧。比这个右侧边界更远的对象不会被渲染
top (上边界)— 可被渲染空间的最上面
bottom (下边界)— 可被渲染空间的最下面
near (近面)— 基于相机所在的位置,从这一点开始渲染场景
far (远面)— 基于相机所在的位置,一直渲染到场景中的这一点
这六个投影面围成的区域就是相机投影的可见区域。
三维空间内,只有在这个区域内的物体才会被相机看到。

透视投影照相机:PerspectiveCamera(fov, aspect, near, far)

fov - 可视角度
aspect - 为width/height,通常设置为canvas元素的高宽比。
near- 近端距离
far- 远端距离
只有离相机的距离大于near值,小于far值,且在相机的可视角度之内,才能被相机投影到。

三.渲染器

/创建渲染器/
renderer=new THREE.WebGLRenderer({
antialias:true,//antialias:true/false是否开启反锯齿
precision:"highp",//precision:highp/mediump/lowp着色精度选择
alpha:true,//alpha:true/false是否可以设置背景色透明
premultipliedAlpha:false,//?
stencil:false,//?
preserveDrawingBuffer:true,//preserveDrawingBuffer:true/false是否保存绘图缓冲
maxLights:1//maxLights:最大灯光数
});
WebGLRenderer()中有一些参数我们可以设置,以下这些参数来自于官方文档:
(1)antialias:
   值:true/false
   含义:是否开启反锯齿,设置为true开启反锯齿。
(2)precision:
   值:highp/mediump/lowp
   含义:着色精度选择。
(3)alpha:
   值:true/false
   含义:是否可以设置背景色透明。
(4)premultipliedAlpha:
   值:true/false
   含义:?
(5)stencil:
   值:true/false
   含义:?
(6)preserveDrawingBuffer:
   值:true/false
   含义:是否保存绘图缓冲,若设为true,则可以提取canvas绘图的缓冲。
(7)maxLights:
   值:数值int
   含义:最大灯光数,我们的场景中最多能够添加多少个灯光。

效果图如下:

第二份Three.js代码(源代码在chapter2中)

效果图如下:

第三份Three.js代码(源代码在chapter3中)

效果图如下:

第四份Three.js代码(源代码在chapter4中,建议新建一个Web项目打开html,不然控制台会报错:Access to Image at 'file:///C:/Users/%E6%9D%8E%E6%99%8B%E6%B1%9F/Desktop/Sublime/img/star.png' from origin 'null' has been blocked by CORS policy: Invalid response. Origin 'null' is therefore not allowed access.)

效果图如下:

第五份Three.js代码(源代码在chapter5中,建议新建一个Web项目打开html)

效果图如下:

About

根据THREE.js库学习WebGL的过程(一:一个正方体;二:多个正方体;三:一个旋转组合体;四:星星图;五:下雨图)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published