THREE.JS源码注释
文章平均质量分 81
本专栏包括THREE.js整个代码库的源码注释,从数学库,几何对象,相机,材质,纹理,灯光,着色器,内核,详尽细致的注释了每段代码,在注释中,尽可能的包括本人学习wegbl过程中遇到的数学问题,着色器问题,甚至是各种图形学的技术,都进行了详细的补充.
商域无疆
热爱,笨鸟
展开
-
three.js 源码注释(九十六)Cameras/CubeCamera.js
CubeCamera方法根据 near, far ,cubeResolution 生成立方体相机.CubeCamera对象的功能函数采用 定义构造的函数原型对象来实现. CubeCamera经常用来创建天空盒子.由六张图片拼接成一个场景.<summary>CubeCamera</summary><param name ="near" type="Number">指明相对于深度剪切面的近的距离,必须为正数,可选参数,如果未指定,初始化为0.1</param><param name ="far" ty原创 2015-02-01 20:33:49 · 3717 阅读 · 0 评论 -
three.js 源码注释(九十五)extras/core/Gyroscope.js
Gyroscope对象陀螺仪,听名字很神奇,一个陀螺仪对象的抽象基类.应该适用于移动端的.应该是将这个对象作为某个Object3D对象的子对象, 根据3d陀螺仪的数据,更新绑定对象的坐标,方位之类的.<summary>Gyroscope</summary>原创 2015-02-01 20:25:35 · 2096 阅读 · 0 评论 -
three.js 源码注释(九十四)extras/core/Shape.js
STEP 1 Create a path.1. 创建路径STEP 2 Turn path into shape.2. 将路径变成截面STEP 3 ExtrudeGeometry takes in Shape/Shapes3. 将截面拉伸成几何体STEP 3a - Extract points from each shape, turn to vertices3a. 导出所有的截面顶点到vertices属性中STEP 3b - Triangulate each shape, add faces原创 2015-02-01 20:22:13 · 2511 阅读 · 0 评论 -
three.js 源码注释(九十三)extras/core/Path.js
Path类创建2d的路径,包括点,线,和立方体,类似于HTML5 2D画布的API,curvePath类的扩展.<summary>Curve</summary><param name ="points" type="Vector2Array">2维向量数组</param>原创 2015-02-01 20:20:45 · 2380 阅读 · 0 评论 -
three.js 源码注释(九十一)extras/core/Curve.js
/************************************************************** * Abstract Curve base class 曲线抽象基类 **************************************************************/Curve对象曲线抽象基类,一个可扩展的曲线对象包含插值方法. 定义:样条曲线是经过一系列给定点的光滑曲线。最初,样条曲线都是借助于物理样条得到的,放样员把富有弹性的细木条(或原创 2015-02-01 20:12:14 · 2497 阅读 · 0 评论 -
three.js 源码注释(九十)extras/SceneUtils.js
/************************************************************** * SceneUtils scene对象的工具集 **************************************************************/createMultiMaterialObject方法创建一种新的Objec3D对象,每个网格对象对应一种材质.这里和一个网格的每个面使用Meshfacematerial 材质不同.这种方式适用于网原创 2015-02-01 20:07:59 · 1934 阅读 · 0 评论 -
three.js 源码注释(八十九)extras/ImageUtils.js
/************************************************************** * ImageUtils image对象的工具集,更方便的加载图片的辅助类. **************************************************************/ /*loadTexture加载url指定的位置的图片资源,并创建纹理,返回纹理对象.*/<summary>loadTexture</summary><param n原创 2015-02-01 20:05:44 · 3233 阅读 · 0 评论 -
three.js 源码注释(八十八)extras/GeometryUtils.js
/************************************************************** * GeometryUtils geometry对象的工具集 **************************************************************/merge方法将两个几何体对象或者Object3D里面的几何体对象合并,(使用对象的变换)将几何体的顶点,面,UV分别合并.NOTE: merge方法在新版本中已经放到了Geomet对象下原创 2015-02-01 20:03:42 · 2991 阅读 · 0 评论 -
three.js 源码注释(八十七)extras/FontUtils.js
* typeface.js and canvastext * For converting fonts and rendering with javascript * 使用javascript渲染和转换字体通过typeface.js,访问下面网站. * http://typeface.neocracy.org * * Triangulation ported from AS3 * Simple Polygon Triangulation * 简单的多边形三角化 * http原创 2015-02-01 19:59:48 · 1977 阅读 · 0 评论 -
three.js 源码注释(八十六)extras/geometries/TubeGeometry.js
TubeGeometry用来在三维空间内创建一个弯管对象. 用法: var CustomSinCurve = THREE.Curve.create( function ( scale ) { //custom curve constructor this.scale = (scale === undefined) ? 1 : scale; }, function ( t ) { //getPoint: t is between原创 2015-02-01 17:32:30 · 2138 阅读 · 0 评论 -
three.js 源码注释(八十五)extras/geometries/PolyhedronGeometry.js
PolyhedronGeometry用来在三维空间内创建一个多面体对象,二十面体,八面体,四面体都会调用当前对象. 用法: var vertices = [ 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 ]; var indices = [ 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 ]; var geometry = new THREE.Polyh原创 2015-02-01 17:31:08 · 1842 阅读 · 0 评论 -
three.js 源码注释(八十四)extras/geometries/ParametricGeometry.js
ParametricGeometry用来在三维空间内通过参数func的定义,生成一个几何体.有了这个对象,各种你想要的集合体,发挥你的数学天赋吧. 用法: var func = function(u,v){ var point = new THREE.Vector3(); point.x = 100 + Math.cos(u); point.y = 100 + Math.sin(v); return point; }; var geometry原创 2015-02-01 10:12:19 · 2231 阅读 · 0 评论 -
three.js 源码注释(八十三)extras/geometries/TorusKnotGeometry.js
TorusKnotGeometryy用来在三维空间内创建一个圆环结或者环形结对象.是由圆环体通过打结构成的扩展三维几何体,常用于制作管状,缠绕.带囊肿类的造型. 关于环形结的几何特征,参考:http://en.wikipedia.org/wiki/Torus_knot 各种漂亮的demo:http://katlas.math.toronto.edu/wiki/36_Torus_Knots 用法: var geometry = new THREE.TorusKnotGeometry(5,32,32);原创 2015-02-01 10:09:40 · 1652 阅读 · 1 评论 -
three.js 源码注释(八十二)extras/geometries/RingGeometry.js
RingGeometry用来在三维空间内创建一个二维圆环面对象. 用法: var geometry = new THREE.RingGeometry(1,5,32); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var Ring = new THREE.Mesh(geometry,material); scene.add(Ring);<summary>TorusGeometry</summar原创 2015-02-01 10:06:36 · 1879 阅读 · 0 评论 -
three.js 源码注释(八十一)extras/geometries/TetrahedronGeometry.js
TetrahedronGeometry用来在三维空间内创建一个四面体对象. 用法: var geometry = new THREE.TetrahedronGeometry(70); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var icos = new THREE.Mesh(geometry,material); scene.add(icos);<summary>TetrahedronGe原创 2015-02-01 10:03:13 · 1512 阅读 · 0 评论 -
three.js 源码注释(八十)extras/geometries/OctahedronGeometry.js
OctahedronGeometry用来在三维空间内创建一个八面体对象. 用法: var geometry = new THREE.OctahedronGeometry(70); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var icos = new THREE.Mesh(geometry,material); scene.add(icos);<summary>OctahedronGeome原创 2015-02-01 10:00:24 · 1301 阅读 · 0 评论 -
three.js 源码注释(七十九)extras/geometries/TorusGeometry.js
TorusGeometry用来在三维空间内创建一个圆环体对象. 用法: var geometry = new THREE.TorusGeometry(3,1,12,18); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var torus = new THREE.Mesh(geometry,material); scene.add(torus);<summary>TorusGeometry</s原创 2015-02-01 09:57:36 · 1496 阅读 · 0 评论 -
three.js 源码注释(七十七)extras/geometries/LatheGeometry.js
LatheGeometry类通过截面顶点数组(points)创建旋转几何体. 用法: var points = []; for ( var i = 0; i < 10; i ++ ) { points.push( new THREE.Vector3( Math.sin( i * 0.2 ) * 15 + 50, 0, ( i - 5 ) * 2 ) ); } var geometry = new THREE.LatheGeometry( points ); var mater原创 2015-01-30 23:55:12 · 1601 阅读 · 0 评论 -
three.js 源码注释(七十八)extras/geometries/IcosahedronGeometry.js
IcosahedronGeometry用来在三维空间内创建一个二十面体对象. 用法: var geometry = new THREE.IcosahedronGeometry(70); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var icos = new THREE.Mesh(geometry,material); scene.add(icos);<summary>IcosahedronG原创 2015-01-31 01:20:28 · 1890 阅读 · 0 评论 -
three.js 源码注释(七十六)extras/geometries/SphereGeometry.js
SphereGeometry用来在三维空间内创建一个球体对象. 用法: var geometry = new THREE.SphereGeometry(5,32,32); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var sphere = new THREE.Mesh(geometry,material); scene.add(sphere);<summary>SphereGeometry<原创 2015-01-30 23:24:54 · 1704 阅读 · 1 评论 -
three.js 源码注释(七十五)extras/geometries/ShapeGeometry.js
ShapeGeometry用来通过截面(参数shape)和参数选项(options)生成形状几何体.<summary>ShapeGeometry</summary><param name ="shapes" type="THREE.Shape">形状几何体截面</param><param name ="options" type="Object">拉伸几何体参数选项</param> * Creates a one-sided polygonal geometry from a path shape.原创 2015-01-30 22:35:11 · 1804 阅读 · 0 评论 -
three.js 源码注释(七十四)extras/geometries/ExtrudeGeometry.js
ExtrudeGeometry用来通过截面(参数shape)生成拉伸几何体.<summary>ExtrudeGeometry</summary><param name ="shapes" type="THREE.Shape">拉伸几何体截面</param><param name ="options" type="Object">拉伸几何体参数选项</param> * parameters = { * * curveSegments: <int>, // number of points on原创 2015-01-30 19:55:45 · 2883 阅读 · 2 评论 -
three.js 源码注释(七十三)extras/geometries/TextGeometry.js
TextGeometry用来生成文字,不过要生成中文3d文字,需要将中文字体利用typeface.js将字体转换成js格式的形文件.<summary>TextGeometry</summary><param name ="text" type="string">文字内容</param><param name ="parameters" type="Object">文字参数选项</param> For creating 3D text geometry in three.js Text =原创 2015-01-30 01:37:02 · 2692 阅读 · 2 评论 -
three.js 源码注释(七十二)extras/geometries/PlaneGeometry.js
PlaneGeometry用来在三维空间内创建一个平面对象. 用法: var geometry = new THREE.PlaneGeometry(5,5,20,32); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var plane = new THREE.Mesh(geometry,material); scene.add(plane);<summary>PlaneGeometry</su原创 2015-01-27 22:04:49 · 2614 阅读 · 0 评论 -
three.js 源码注释(七十一)extras/geometries/CylinderGeometry.js
CylinderGeometry用来在三维空间内创建一个圆柱,圆锥,圆桶对象. NOTE: 和CircleGeometry对象一样,如果我们把参数radialSeagments的值设置成4,是不是就变成了棱台了,设置成3,并且radiusTop设置成0,是不是就是金字塔了???? 用法: var geometry = new THREE.CircleGeometry(5,5,20,32); var material = new THREE.MeshBasicMaterial({color:原创 2015-01-27 21:55:21 · 2750 阅读 · 0 评论 -
three.js 源码注释(七十)extras/geometries/CubeGeometry.js
CubeGeometry用来在三维空间内创建一个立方体盒子对象.被BoxGeometry对象替换. 用法: var geometry = new THREE.BoxGeometry(1,1,1); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var cube = new THREE.Mesh(geometry,material); scene.add(cube);<summary>CubeGe原创 2015-01-26 14:51:59 · 1719 阅读 · 0 评论 -
three.js 源码注释(六十九)extras/geometries/CircleGeometry.js
CircleGeometry用来在三维空间内创建一个圆形对象,因为圆形对象是由参数segments指定的一个个三角形围绕圆心拼接而成,所以也可以是多边形对象. 用法: var radius = 5, segments = 32; var geometry = new THREE.CircleGeometry(radius,segments); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var c原创 2015-01-26 14:50:14 · 1608 阅读 · 0 评论 -
three.js 源码注释(六十八)extras/geometries/BoxGeometry.js
BoxGeometry用来在三维空间内创建一个立方体盒子对象. 用法: var geometry = new THREE.BoxGeometry(1,1,1); var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var cube = new THREE.Mesh(geometry,material); scene.add(cube);<summary>BoxGeometry</summary><p原创 2015-01-26 14:48:20 · 2365 阅读 · 0 评论 -
three.js 源码注释(五十五)Material /SpriteCanvasMaterial.js
SpriteCanvasMaterial方法根据参数parameters创建适用于canvas渲染器的Sprite(点精灵)的材质类型,parameters参数的格式看上面.SpriteCanvasMaterial对象的功能函数采用,定义构造的函数原型对象来实现.大部分属性方法继承自材质的基类Material.TODO: SpriteCanvasMaterial和SpriteMaterial除了几个属性不一样,不知道是不是应用场景也不一样?<summary>SpriteCanvasMaterial<原创 2014-12-28 21:05:14 · 4466 阅读 · 0 评论 -
three.js 源码注释(六十七)objects/PointCloud.js
PointCloud点云对象,在场景中方便的改变大量的点精灵对象大小,位置等属性.<summary>PointCloud</summary><param name ="geometry" type="THREE.Geometry">Geometry对象点云对象里的点集合</param><param name ="material" type="THREE.PointCloudMaterial">PointCloudMaterial对象(点云材质对象)</param><returns type="Po原创 2015-01-21 17:38:44 · 3172 阅读 · 1 评论 -
three.js 源码注释(六十六)objects/Sprite.js
Sprite对象,点精灵对象,对应粒子对象,具体的实现是通过BufferGeometry创建一个总是面对相机的平面. 用法:var map = THREE.ImageUtils.loadTexture("sprite.png"); //加载image对象 var material = new THREE.SpriteMaterial({map:map,color: 0xffffff,fog: true}); //创建材质对象,这里有专门适用于Sprite对象的材质对象SpriteMateria原创 2015-01-21 14:38:40 · 3305 阅读 · 1 评论 -
three.js 源码注释(六十五)objects/MorphAnimMesh.js
MorphAnimMesh对象,最终的网格对象,和Mesh对象不同的是,这个对象是专门针对变形动画的,增加了许多角色变形动画的内容.有高人把图形学建模比作是制作灯笼,先用Geometry创建灯笼的框架, 然后将材质material贴在框架上,最后形成的总体灯笼,就是Mesh对象.下面看一下Mesh对象的用法和具体实现. 用法:var geometry = new THREE.Geometry(1,1,1); //创建geometry对象(灯笼的框架), //有一下可原创 2015-01-21 14:02:35 · 1631 阅读 · 0 评论 -
three.js 源码注释(六十四)objects/Skeleton.js
Skeleton是骨架对象,是骨骼对象的几何,是蒙皮对象的一部分,用来制作支持骨骼动画,当前有两种模型动画的方式:顶点动画和骨骼动画。顶点动画中,每帧动画其实就是模型特定姿态的一个“快照”。通过在帧之间插值的方法, 引擎可以得到平滑的动画效果。在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。 骨骼动画比顶点动画要求更高的处理器性能,但同时它也具有更多的优点,骨骼动画可以更容易、更快捷地创建。不同的骨骼动画可以被结合到一起——比如, 模型可以转动头部、射原创 2015-01-20 22:06:52 · 1739 阅读 · 0 评论 -
three.js 源码注释(六十三)objects/Bone.js
Bone是骨骼对象,是蒙皮对象的一部分,用来制作支持骨骼动画,当前有两种模型动画的方式:顶点动画和骨骼动画。顶点动画中,每帧动画其实就是模型特定姿态的一个“快照”。通过在帧之间插值的方法, 引擎可以得到平滑的动画效果。在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。 骨骼动画比顶点动画要求更高的处理器性能,但同时它也具有更多的优点,骨骼动画可以更容易、更快捷地创建。不同的骨骼动画可以被结合到一起——比如, 模型可以转动头部、射击并且同时也在走路。一些引原创 2015-01-20 22:05:37 · 1651 阅读 · 0 评论 -
three.js 源码注释(六十二)objects/SkinnedMesh.js
SkinnedMesh对象,蒙皮网格对象,蒙皮网格用于渲染人物。人物动画使用的骨骼,而且每个骨骼影响网格的一部分.<summary>SkinnedMesh</summary><param name ="geometry" type="THREE.Geometry">Geometry对象(灯笼的框架)</param><param name ="material" type="THREE.Material">Material对象(材质对象)</param><param name ="useVertex原创 2015-01-20 22:02:37 · 1704 阅读 · 3 评论 -
three.js 源码注释(六十一)objects/LOD.js
LOD对象,LOD技术即Levels of Detail的简称,意为多细节层次。LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。 注释摘抄自http://blog.csdn.net/u011209953/article/details/37863701用法: var geometry = [ [ new THREE.IcosahedronGeometry( 100, 4 ), 50 ], [原创 2015-01-20 14:17:18 · 3643 阅读 · 0 评论 -
three.js 源码注释(六十)objects/Line.js
Line对象,创建一条线,或者一组线. 用法:var geometry = new THREE.Geometry(); //创建geometry对象 var material = new THREE.LineBasicMaterial({color: 0xffff00}); //创建材质对象,这里有专门适用于line对象的材质对象LineBasicMaterial. geometry.verteces.push(new THREE.Vector3(-10,0,0), //为geome原创 2015-01-20 12:31:26 · 2969 阅读 · 0 评论 -
three.js 源码注释(五十九)objects/Mesh.js
Mesh对象,最终的网格对象,有高人把图形学建模比作是制作灯笼,先用Geometry创建灯笼的框架,然后将材质material贴在框架上,最后形成的总体灯笼,就是Mesh对象.下面看一下Mesh对象的用法和具体实现. 用法:var geometry = new THREE.Geometry(1,1,1); //创建geometry对象(灯笼的框架), //有一下可选对象BoxGeometry,CircleGeometry,CubeGeometry,CylinderGe原创 2015-01-20 00:33:07 · 3426 阅读 · 1 评论 -
three.js 源码注释(五十八)Material /RawShaderMaterial.js
RawShaderMaterial方法根据参数parameters创建为自定义着色器创建材质类型,这样的材质对象让用户扩充材质类型,有了无限的可能.这个类和ShaderMaterial工作方式一样,除了自定义的uniforms和attribute属性不会自动追加到GLSL着色器代码中.parameters参数的格式看上面.ShaderMaterial对象的功能函数采用,定义构造的函数原型对象来实现.大部分属性方法继承自材质的基类ShaderMaterial. Example: var mate原创 2014-12-28 21:12:54 · 1780 阅读 · 0 评论 -
three.js 源码注释(五十七)Material /ShaderMaterial.js
ShaderMaterial方法根据参数parameters创建为自定义着色器创建材质类型,这样的材质对象让用户扩充材质类型,有了无限的可能.parameters参数的格式看上面.ShaderMaterial对象的功能函数采用,定义构造的函数原型对象来实现.大部分属性方法继承自材质的基类Material. Example: var material = new THREE.ShaderMaterial({ uniforms: { time:{type: "f", value:原创 2014-12-28 21:11:21 · 2455 阅读 · 0 评论