1.0.1 • Published 6 months ago

amgl v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

WebGL

介绍

这是一个基于WebGL的基础库设计,用于快速搭建三维场景。库内对常用基础几何体进行了封装,如cuberectangular等,方便开发。

下载引入

  1. 执行 npm i amgl 安装基础库
  2. 执行 npm i 安装所有依赖

使用说明

  1. 在脚本中引入库,实例如下:

    Alt text

  2. 场景的搭建主要包含scene、camera、render及objects三个部分,其中scene和camera是必须的;

  3. 将camera和objects等通过scene.add()方法加入场景;

  4. 执行render.renderScene(scene,camera)方法(该方法接收两个参数,第一个是scene,第二个是camera)将场景渲染到页面。

API文档

1.Class BaseObjec(基础几何体类)

  • 属性

    属性名类型描述
    isBaseObjectbool标志是否是基础几何体类的实例
    idnumber物体id
    typestring物体类型,值为baseObject
    namestring名称属性
    parentobject对象
    childrenarray保存子对象
    positionVector3物体位置坐标
    lookAtMatrixMatrix4描述物体朝向的四阶矩阵
    upVector默认向上的方向为y轴方向
    matrixMatrix4物体的局部矩阵
    worldMatrixMatrix4物体对应的世界矩阵
    targetVector3对应物体朝向的目标位置
  • 方法

    函数名描述
    add(object)添加子对象,参数object为要添加的对象,可以是单个参数、多个参数或数组
    remove(object)移除子对象,参数object为要移除的对象,可以是单个参数、多个参数或数组
    removeFromParent()通过父对象移除自身
    setParent(parent)设置自身的父对象为parent
    clearChildren()移除所有子对象
    getObjectById(id)通过id查找指定子对象
    lookAt(x,y,z)设置朝向,(x,y,z)为目标位置
    updateWorldMatrix(parentWorldMatrix)更新物体的世界矩阵

2.Class Attribute(属性类):存放物体的数据

  • 属性

    属性名类型描述
    isAttributebool
    arrayarray属性的数据数组
    itemSizenumberarray中每组数据的数量
    countnumberarray中数据分组数
  • 方法

    函数名描述
    set(arr,offset)为array赋值,第一个参数为值数组,第二个参数为偏移量及itemSize的值
    applyMatrix4(m4)将属性的数据执行一个四维矩阵
    applyMatrix3(m3)将属性的数据执行一个三维矩阵

3.Class Color(颜色类)

  • 属性

    属性名类型描述
    r颜色rgb中的r值
    g颜色rgb中的g值
    b颜色rgb中的b值
  • 方法

    函数名描述
    setColor(r,g,b)为color实例设置颜色,接收的参数可以是颜色的rbg值,也可以是颜色对应的名称字符串,还可以是颜色对应的16进制

4.Class Camera(相机类)继承于BaseObject类

  • 属性

    属性名类型描述
    positionVector3相机位置
    projectionMatrixMatrix4相机对应的投影矩阵
  • 方法

    函数名描述
    setPosition(x,y,z)设置相机的位置,接收三个参数分别是位置对应的x,y,z坐标
    loogAt(x,y,z)设置相机朝向的目标位置

5.PerspectiveCamera(透视相机类)继承于Camera类

  • 属性

    属性名类型描述
    fovnumber相机视锥体垂直视野角度
    aspectnumber相机视锥体长宽比
    nearnumber相机视锥体近端面
    farnumber相机视锥体远端面

6.OrthographicCamera(正投影相机类)继承于Camera类

  • 属性

    属性名类型描述
    leftnumber相机视锥体左面
    rightnumber相机视锥体右面
    topnumber相机视锥体上面
    bottomnumber相机视锥体下面
    nearnumber相机视锥体近端面
    farnumber相机视锥体远端面

7.Class Event(事件类)

  • 方法

    函数名描述
    addEventListener(type,listener)添加事件,第一个参数为事件类型,第二个参数为要添加的事件对象
    hasEventListener(type,listener)判断是否包含listener事
    removeEventListener(type,listener)移除listener事件
    dispatchEvent(event)执行event事件

8.Class Geometry(几何体类)继承于BaseObject类

  • 属性

    属性名类型描述
    colorColor物体颜色
    attributesobject物体的顶点、法向量等属性
    drawRangeobject物体顶点的绘制范围,包含起点和数量
    drawTypestring绘制类型
  • 方法

    函数名描述
    setAttribute(name,value)为物体设置某属性,name为属性名,value为属性值
    getAttribute(name)获取物体某属性值
    applyMatrix4(matrix4)将物体进行四维矩阵变换
    setColor(r,g,b)设置物体颜色
    setPosition(x,y,z)设置物体位置
    makeRotation(angleX,angleY,angleZ)设置旋转,传入一个参数表示执行x轴旋转,以此类推,参数为旋转角度
    makeScale(x,y,z)设置物体缩放,参数分别对应x,y,z三个方向的缩放倍率

9.Class Cube(立方体类)继承于Geometry类

  • 属性

    属性名类型描述
    widthnumber几何体宽度
    heightnumber几何体长度
    depthnumber几何体深度

10.Class Rectangular(矩形类)继承于Geometry类

  • 属性

    属性名类型描述
    widthnumber矩形宽度
    heightnumber矩形的高

11.Class Light(灯光类)继承于BaseObject类

  • 属性

    属性名类型描述
    colorColor灯光颜色
  • 方法

    函数名描述
    setPosition(x,y,z)设置灯光位置
    setColor(r,g,b)设置灯光颜色

12.Class PointLight(点光源类)继承于Light类

13.Class DirectionLight(方向光源类)继承于Light类

  • 属性

    属性名类型描述
    directionVector3光的方向
  • 方法

    函数名描述
    setDirection(x,y,z)设置光的方向

14.Class SpotLitght(聚光灯类)继承于light类

  • 属性

    属性名类型描述
    anglenumber聚光灯照射范围角度
  • 方法

    函数名描述
    setAngle(angle)设置照射角度

15.Class Matrix4(四维矩阵类)

  • 属性

    属性名类型描述
    elementarray存放矩阵元素的数组
  • 方法

    函数名描述
    setElement(arr)设置element值

16.Class Vector3(三维向量类)

  • 属性

    属性名类型描述
    xx轴分量
    yy轴分量
    zz轴分量
  • 方法

    函数名描述
    set(x,y,z)设置向量值
    cross(vector3)与向量vector3进行叉乘运算,返回一个新向量
    subVector3(vector3)与向量vector3进行减法运算
    normalize()单位化向量
    applyMatrix4(matrix4)向量乘以一个四维矩阵
    applyMatrix3(matrix3)向量乘以一个三维矩阵

17.Class WebGLRenderer(渲染器类)

1.0.1

6 months ago

1.0.0

8 months ago