核心——Object3D, Layers

Object3D

Object3D似乎是Three.js框架中最重要的类,相当一部分其他的类都是继承自Object3D类,比如场景类、几何形体类、相机类、光照类等等:他们都是3D空间中的对象,所以称为Object3D类。

构造函数

Object3D()

特性

  • castShadow: Boolean 投射阴影,默认false
  • children: Object3D 数组表示对象的子类
  • frustumCulled 默认true,设置后在每一帧渲染时检查对象在相机的截头体(四棱台)
  • id: Integer 只读,对象实例的唯一数字
  • isObject3D: Boolean
  • layers: Layers 只有该物体至少有一层与正在使用的照相机相同,该物体才是可见的
  • matrix: Matrix4 本地变换矩阵
  • matrixAutoUpdate: Boolean 默认true
  • matrixWorld: Matrix4 全局的变换矩阵,没有父对象则和本地转换一样
  • matrixWorldNeedsUpdate: Boolean 默认false。设置此项后,它将计算该帧中的matrixWorld并将此属性重置为false
  • modelViewMatrix: Matrix4 传递给着色器计算对象的位置
  • name: String 默认null,可选的对象的名
  • normalMatrix: Matrix3 传递给着色器来计算对象上的灯光
  • onAfterRender: Function 可选的渲染对象后的回调函数,参数 renderer, scene, camera, geometry, material, group.
  • onBeforeRender: Function
  • parent: Object3D
  • position: Vector3 对象的本地位置,默认(0,0,0)
  • quaternion: Quaternion 对象的本地旋转(四元数)
  • receiveShadow: Boolean 默认false,材料是否接收阴影
  • renderOrder: Number 默认0,呈现从低到高的方式
  • rotation: Eular 对象本地旋转(欧拉角,弧度)
  • scale: Vector3 默认(1,1,1) 缩放
  • up: Vector3 默认(0,1,0),LookAt()用它来确定结果的方向
  • userData: Object 存储用户自定义数据的对象
  • uuid: String 自动分配的不可编辑
  • visible: Boolean 默认true

静态特性

  • DefaultUp: Vector3 默认(0,1,0),用作直射光,聚光灯的默认位置
  • DefaultMatrixAutoUpdate: Vector3 新创建的Object3D对象默认设置matrixAutoUpdate

方法

  • EventDispatcher() 在这个类上可用
  • add(object: Object3D…) 给添加子对象,对象对多只能有一个父对象
  • applyMatrix(matrix: Mateix4): null 更新位置,旋转和缩放
  • applyQuaternion(quaternion: Quaternion) 更新旋转
  • clone(recursive: Boolean) 默认true,对象的后代也被克隆
  • copy(object: Object3D,recursive: Boolean): this 复制对象到当前对象
  • getObjectById(id: Integer): Object3D
  • getObjectByName(name: String): Object3D
  • getObjectByProperty(name: string,value: Float) : Object3D 搜索对象的子类,返回第一个匹配的值
  • getWorldposition(target: Vector3): Vector3
  • getWorldQuaternion(target: Quaternion): Quaternion
  • getWorldScale(target: Vector3): Vector3
  • getWorldDirection(target: Vector3): Vector3
  • localToWorld(vector: Vector3): Vector3 转换本地坐标到世界坐标
  • lootAt(vector: Vector3): null 不支持有旋转/转换的父类对象 旋转物体的面朝向世界坐标中的一个点
  • lookAt(x: Float,y: Float,z: Float): null 可以让摄像机追踪某个对象的位置
  • raycast(raycast: Raycast, intersects: Array): Array 获取投射线和对象之间的交集
  • remove(object: object3D…): null 移除任意数量的子对象
  • rotateOnAxis(axis: Vector3,angle: Float): this
  • rotateOnWorldAxis(axis: Vector3,angle: Float): this
  • rotateX/Y/Z(rad: Float): this 旋转轴是x/y/z轴,旋转rad弧度
  • setRotationFromAxisAngle(axis: Vector3,angle: Float): null
  • setRotationFromEular(eular: Eular): null
  • setRotationFromMatrix ( m : Matrix4 ) : null
  • setRotationFromQuaternion ( q : Quaternion ) : null
  • toJSON(q: Quaternion): null
  • translateOnAxis ( axis : Vector3, distance : Float ) : this
  • translateX/Y/Z ( distance : Float ) : this
  • traverse ( callback : Function ) : null 遍历,对象和后代均执行回调
  • traverseVisible ( callback : Function ) : null 只针对可见的对象
  • traverseAncestors ( callback : Function ) : null 对所有祖先执行回调
  • updateMatrix () : null 更新本地的变换,对象本地的位置,旋转,缩放发生变换时调用
  • updateMatrixWorld ( force : Boolean ) : null 更新对象和子类的世界变换
  • worldToLocal ( vector : Vector3 ) : Vector3 世界坐标转换本地坐标

Layers

默认所有的Object3D都是0层,总共32层,层数0~31 控制可见性

构造函数

Layers()

特性

  • mask:Integer 存储此层对象属于32层的哪一层

    方法

  • disable/enable/set/test/toggle(layer: Integer)

来源

threejs
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里只属于前端工程师。