Object3D.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <base href="../../../" />
  6. <script src="list.js"></script>
  7. <script src="page.js"></script>
  8. <link type="text/css" rel="stylesheet" href="page.css" />
  9. </head>
  10. <body>
  11. <h1>[name]</h1>
  12. <p class="desc">
  13. 该类是 three.js 中大多数对象的基类。它提供了一组属性和方法用于在 3D 空间下对对象进行操作。<br /><br />
  14. 注意,通过 [page:.add]( object ) 方法,该类可以被应用于成组的对象。然而更好的方式是使用 [page:Group]。
  15. </p>
  16. <h2>构造函数</h2>
  17. <h3>[name]()</h3>
  18. <p>
  19. 构造函数没有任何参数。
  20. </p>
  21. <h2>属性</h2>
  22. <h3>[property:Boolean castShadow]</h3>
  23. <p> 当前物体是否需要在阴影图 (shadow map)中被渲染,默认值为 *false*。</p>
  24. <h3>[property:Object3D children]</h3>
  25. <p> 子物体的队列。将对象成组的方法详见 [page:Group]。</p>
  26. <h3>[property:Boolean frustumCulled]</h3>
  27. <p>
  28. 当该值被设置时,在每帧渲染该物体前,都会检查物体是否在视锥内。
  29. 否则,物体在每帧时都会被渲染,即使物体不可见。默认值为 *true*。
  30. </p>
  31. <h3>[property:Integer id]</h3>
  32. <p>只读 – 当前物体唯一标识符。</p>
  33. <h3>[property:Boolean isObject3D]</h3>
  34. <p>
  35. 用于判断当前类或其派生类是 Object3D 对象。默认值为 *true*。<br /><br />
  36. 该值被用于内部优化,不应该被更改。
  37. </p>
  38. <h3>[property:Layers layers]</h3>
  39. <p>
  40. 当前物体所属图层信息。只有当该物体与摄像机至少共享一个图层时,该物体才可见。
  41. </p>
  42. <h3>[property:Matrix4 matrix]</h3>
  43. <p> 局部空间下的转移矩阵。</p>
  44. <h3>[property:Boolean matrixAutoUpdate]</h3>
  45. <p>
  46. 当设置该值时,对象会重新计算 matrixWorld 属性值,计算位置矩阵、旋转矩阵,并且在每帧都进行缩放。
  47. 默认值 [page:Object3D.DefaultMatrixAutoUpdate] 为 true。
  48. </p>
  49. <h3>[property:Matrix4 matrixWorld]</h3>
  50. <p>
  51. 对象的全局变换矩阵。如果 Object3D 没有父对象,则该矩阵与局部变换矩阵 [page:.matrix] 相同。
  52. </p>
  53. <h3>[property:Boolean matrixWorldNeedsUpdate]</h3>
  54. <p>
  55. 当该值设置时,对象会在这帧重新计算 matrixWorld,且将该值设置为 false。默认值为 *false*。
  56. </p>
  57. <h3>[property:Matrix4 modelViewMatrix]</h3>
  58. <p>
  59. 该值被传递给着色器,用于计算对象的坐标。
  60. </p>
  61. <h3>[property:String name]</h3>
  62. <p> 对象的可选别名(无需全局唯一)。默认值为空字符串。</p>
  63. <h3>[property:Matrix3 normalMatrix]</h3>
  64. <p>
  65. 该值传递给着色器用于计算对向的光照。该矩阵等价于 modelViewMatrix 的左上 3x3 子矩阵的逆矩阵的转置。
  66. 需要该矩阵的原因如下,如果单纯使用 modelViewMatrix 会导致法向量在对象缩放时长度未归一化或方向不垂直。<br /><br />
  67. This is passed to the shader and used to calculate lighting for the object.<br /><br />
  68. 另外 modelViewMatrix 中的位移信息在法向量计算时并不相关。因而,normalMatrix 使用 Matrix3 矩阵足矣。
  69. </p>
  70. <h3>[property:function onAfterRender]</h3>
  71. <p>
  72. 可选的回调函数,在每次 Object3D 对象渲染后会被立刻调用。
  73. 该函数参数列表如下:renderer, scene, camera, geometry, material, group。
  74. </p>
  75. <h3>[property:function onBeforeRender]</h3>
  76. <p>
  77. 可选的回调函数,在每次 Object3D 对象渲染前会被调用。
  78. 该函数参数列表如下:renderer, scene, camera, geometry, material, group。
  79. </p>
  80. <h3>[property:Object3D parent]</h3>
  81. <p> 对象的父对象 [link:https://en.wikipedia.org/wiki/Scene_graph scene graph]。每个对象最多可以有一个父对象。</p>
  82. <h3>[property:Vector3 position]</h3>
  83. <p> [page:Vector3] 向量,用于表示对象的局部坐标系下的位置。默认值为 (0, 0, 0)。</p>
  84. <h3>[property:Quaternion quaternion]</h3>
  85. <p> 对象的本地旋转四元组 [page:Quaternion Quaternion]。</p>
  86. <h3>[property:Boolean receiveShadow]</h3>
  87. <p> 判断当前材质是否接收阴影。默认值是 *false*。</p>
  88. <h3>[property:Number renderOrder]</h3>
  89. <p>
  90. 该值允许对象的默认渲染顺序 [link:https://en.wikipedia.org/wiki/Scene_graph scene graph] 被修改。
  91. 但不透明和透明物体依然分开进行渲染排序。渲染顺序的排序是从最低到最高。renderOrder 的默认值为 *0*。
  92. </p>
  93. <h3>[property:Euler rotation]</h3>
  94. <p>
  95. 物体本地坐标系下的旋转信息 (see [link:https://en.wikipedia.org/wiki/Euler_angles Euler angles]),度量单位为弧度。
  96. </p>
  97. <h3>[property:Vector3 scale]</h3>
  98. <p>
  99. 物体本地坐标系下的缩放信息。默认值是 [page:Vector3]( 1, 1, 1 )。
  100. </p>
  101. <h3>[property:Vector3 up]</h3>
  102. <p>
  103. 该值被用于 [page:.lookAt lookAt] 方法。例如,用于判断对象朝向。<br />
  104. 默认值 [page:Object3D.DefaultUp] 为 ( 0, 1, 0 )。
  105. </p>
  106. <h3>[property:object userData]</h3>
  107. <p>
  108. 用于存储 Object3D 的定制化数据的对象。该对象不应该保存任何函数的引用,这些值在对象被克隆时不会被拷贝。
  109. </p>
  110. <h3>[property:String uuid]</h3>
  111. <p>
  112. 当前对象实例的 [link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]。
  113. 该值会被自动赋值。不应该被修改。
  114. </p>
  115. <h3>[property:Boolean visible]</h3>
  116. <p> 如果该值为 *true*,则对象会被显示。默认值为 *true*。</p>
  117. <h2>静态属性</h2>
  118. <p>
  119. 不同于非静态属性和方法是按照对象定义的,静态属性和方法是按类定义的,即同一个类的不同实例间是共享静态属性及方法的。
  120. 这意味着改变 [page:Object3D.DefaultUp] 或 [page:Object3D.DefaultMatrixAutoUpdate],将会改变在这之后创建的
  121. <em>每个</em> Object3D 实例(或其派生类的示例)的 [page:.up up] 和 [page:.matrixAutoUpdate matrixAutoUpdate]
  122. 的值。已经被创建的 Object3D 实例不受影响。
  123. </p>
  124. <h3>[property:Vector3 DefaultUp]</h3>
  125. <p>
  126. 当前对象的默认的 [page:.up up] 方向,同样被用于 [page:DirectionalLight]、[page:HemisphereLight]、和
  127. [page:Spotlight](光线方向从上至下) 的默认空间位置。<br />
  128. 默认值为 ( 0, 1, 0 ) 。
  129. </p>
  130. <h3>[property:Vector3 DefaultMatrixAutoUpdate]</h3>
  131. <p>
  132. 新创建的 Object3D 的 [page:.matrixAutoUpdate matrixAutoUpdate] 的默认值。<br />
  133. </p>
  134. <h2>方法</h2>
  135. <h3>[page:EventDispatcher EventDispatcher] 可用于此类的方法。</h3>
  136. <h3>[method:null add]( [param:Object3D object], ... )</h3>
  137. <p>
  138. 将参数指定的 *object* 添加到当前对象。参数指定的对象会被添加一个随机数。由于每个对象只能有一个父对象,
  139. 在被设置新的父对象后,参数对象的原父对象将会被移除,并有当前对象替代。<br /><br />
  140. 手动将对象成组详情见 [page:Group]。
  141. </p>
  142. <h3>[method:null applyMatrix]( [param:Matrix4 matrix] )</h3>
  143. <p> 将参数指定的矩阵应用于对象,并且依据矩阵对对象进行位移、旋转和缩放。</p>
  144. <h3>[method:Object3D applyQuaternion]( [param:Quaternion quaternion] )</h3>
  145. <p> 将参数指定的四元数应用于对象,并对对象进行旋转。</p>
  146. <h3>[method:Object3D clone]( [param:Boolean recursive] )</h3>
  147. <p>
  148. recursive -- 如果为 true, 连同子对象一起克隆。默认值为 true.<br /><br />
  149. 返回该对象的克隆,并且依据参数可能同时返回子对象的克隆。
  150. </p>
  151. <h3>[method:this copy]( [param:Object3D object], [param:Boolean recursive] )</h3>
  152. <p>
  153. recursive -- 如果为 true, 参数指定的对象连同子对象一起被复制。默认值为 true.<br /><br />
  154. 将指定对象拷贝到当前对象。
  155. </p>
  156. <h3>[method:Object3D getObjectById]( [param:Integer id] )</h3>
  157. <p>
  158. id -- 对象实例的唯一数字标识符。<br /><br />
  159. 搜索对象的所有子对象,并返回第一个 id 与参数匹配的对象。<br />
  160. 注意,对象的 id 按照时间顺序依次生生成:1,2,3,...每有一个新物体被创建则 id 增加 1。
  161. </p>
  162. <h3>[method:Object3D getObjectByName]( [param:String name] )</h3>
  163. <p>
  164. name -- 匹配子对象 Object3D.name 属性的字符串。 <br /><br />
  165. 搜索对象的所有子对象,并返回第一个 Object3D.name 属性与参数匹配的对象。<br />
  166. 注意,对于大多数对象来说对象名称保持默认值,是一个空的字符串。需要你手动设置才会有意义。
  167. </p>
  168. <h3>[method:Object3D getObjectByProperty]( [param:String name], [param:Float value] )</h3>
  169. <p>
  170. name -- 要检索的属性的名称。 <br />
  171. value -- 要匹配的属性的值。 <br /><br />
  172. 搜索对象的子对象返回第一个属性名和属性值都匹配的对象。
  173. </p>
  174. <h3>[method:Vector3 getWorldPosition]( [param:Vector3 target] )</h3>
  175. <p>
  176. [page:Vector3 target] — 结果将被复制到这个三维矢量中。 <br /><br />
  177. 返回一个代表对象全局坐标的三维矢量。
  178. </p>
  179. <h3>[method:Quaternion getWorldQuaternion]( [param:Quaternion target] )</h3>
  180. <p>
  181. [page:Quaternion target] — 结果将被复制到这个四元数中. <br /><br />
  182. 返回代表对象全局旋转的四元数。
  183. </p>
  184. <h3>[method:Vector3 getWorldScale]( [param:Vector3 target] )</h3>
  185. <p>
  186. [page:Vector3 target] — 结果将被复制到这个三维矢量中。 <br /><br />
  187. 返回代表对象每个轴向的全局缩放参数的三维矢量。
  188. </p>
  189. <h3>[method:Vector3 getWorldDirection]( [param:Vector3 target] )</h3>
  190. <p>
  191. [page:Vector3 target] — 结果将被复制到这个三维矢量中。 <br /><br />
  192. 返回代表对象全局坐标系下 z 轴朝向的三维矢量。
  193. </p>
  194. <h3>[method:Vector3 localToWorld]( [param:Vector3 vector] )</h3>
  195. <p>
  196. vector - 代表本地(局部)坐标位置的三维矢量。<br /><br />
  197. 将参数指定的本地坐标矢量转换为全局坐标。
  198. </p>
  199. <h3>[method:null lookAt]( [param:Vector3 vector] )</br>
  200. [method:null lookAt]( [param:Float x], [param:Float y], [param:Float z] )</h3>
  201. <p>
  202. vector - 代表全局坐标位置的三维矢量。<br /><br />
  203. 另外, 参数可以由全局坐标的第一维 ([page:.x x]), 第二维([page:.y y]) 和 第三维([page:.z z])组成的参数列表代替。<br /><br />
  204. 旋转物体使得其朝向参数指定的全局坐标。<br /><br />
  205. 该方法旋转仅旋转对象及子对象,不会影响父对象的旋转或位移。
  206. </p>
  207. <h3>[method:Array raycast]( [param:Raycaster raycaster], [param:Array intersects] )</h3>
  208. <p>
  209. 抽象(空)方法,用于获取射线与对象的碰撞信息。
  210. 为使用射线检测,[page:Mesh], [page:Line], [page:Points] 子类实现了该方法。
  211. </p>
  212. <h3>[method:null remove]( [param:Object3D object], ... )</h3>
  213. <p>
  214. 将当前对象下,参数指定的子对象进行删除。该方法可能删除任意多个对象。
  215. </p>
  216. <h3>[method:this rotateOnAxis]( [param:Vector3 axis], [param:Float angle] )</h3>
  217. <p>
  218. axis -- 局部坐标系下的归一化向量。 <br />
  219. angle -- 以弧度代表的角度信息。<br /><br />
  220. 在局部坐标系下按照参数给定向量对物体进行旋转。参数 axis 为归一化的向量。
  221. </p>
  222. <h3>[method:this rotateOnWorldAxis]( [param:Vector3 axis], [param:Float angle] )</h3>
  223. <p>
  224. axis -- 全局坐标系下的归一化向量。 <br />
  225. angle -- 以弧度代表的角度信息。<br /><br />
  226. 在全局坐标系下按照参数给定向量对物体进行旋转。参数 axis 为归一化的向量。
  227. 该方法不会影响父对象旋转。
  228. </p>
  229. <h3>[method:this rotateX]( [param:Float rad] )</h3>
  230. <p>
  231. rad - 以弧度代表的旋转角度信息。<br /><br />
  232. 在局部坐标系下根据参数,绕 x 轴旋转物体。
  233. </p>
  234. <h3>[method:this rotateY]( [param:Float rad] )</h3>
  235. <p>
  236. rad - 以弧度代表的旋转角度信息。<br /><br />
  237. 在局部坐标系下根据参数,绕 x 轴旋转物体。
  238. </p>
  239. <h3>[method:this rotateZ]( [param:Float rad] )</h3>
  240. <p>
  241. rad - 以弧度代表的旋转角度信息。<br /><br />
  242. 在局部坐标系下根据参数,绕 x 轴旋转物体。
  243. </p>
  244. <h3>[method:null setRotationFromAxisAngle]( [param:Vector3 axis], [param:Float angle] )</h3>
  245. <p>
  246. axis -- 局部坐标系下的归一化向量。 <br />
  247. angle -- 以弧度代表的角度信息。<br /><br />
  248. 该方法将会在 [page:.quaternion] 中,调用
  249. [page:Quaternion.setFromAxisAngle setFromAxisAngle]( [page:Float axis], [page:Float angle] )。
  250. </p>
  251. <h3>[method:null setRotationFromEuler]( [param:Euler euler] )</h3>
  252. <p>
  253. euler -- 以欧拉角代表的旋转角度信息。<br />
  254. 该方法将会在 [page:.quaternion] 中,调用
  255. [page:Quaternion.setRotationFromEuler setRotationFromEuler]( [page:Euler euler])。
  256. </p>
  257. <h3>[method:null setRotationFromMatrix]( [param:Matrix4 m] )</h3>
  258. <p>
  259. m -- 按照参数给定矩阵旋转对象四元数。<br />
  260. 该方法将会在 [page:.quaternion] 中,调用
  261. [page:Quaternion.setFromRotationMatrix setFromRotationMatrix]( [page:Matrix4 m])。<br /><br />
  262. 注意,该方法假设参数 m 矩阵的左上 3x3 表示非缩放的旋转信息。
  263. </p>
  264. <h3>[method:null setRotationFromQuaternion]( [param:Quaternion q] )</h3>
  265. <p>
  266. q -- 归一化的四元数。<br /><br />
  267. 将参数指定四元数拷贝到 [page:.quaternion]。
  268. </p>
  269. <h3>[method:null toJSON]( [param:Quaternion q] )</h3>
  270. <p>
  271. 将对象转化为 JSON 格式。
  272. </p>
  273. <h3>[method:this translateOnAxis]( [param:Vector3 axis], [param:Float distance] )</h3>
  274. <p>
  275. axis -- 局部坐标系下的归一化向量。<br />
  276. distance -- 需要被位移的距离。<br /><br />
  277. 将物体沿参数给定方向移动指定距离。假设方向向量已经被归一化。
  278. </p>
  279. <h3>[method:this translateX]( [param:Float distance] )</h3>
  280. <p> 将对象沿 X 轴移动参数 *distance* 指定距离。</p>
  281. <h3>[method:this translateY]( [param:Float distance] )</h3>
  282. <p> 将对象沿 Y 轴移动参数 *distance* 指定距离。</p>
  283. <h3>[method:this translateZ]( [param:Float distance] )</h3>
  284. <p> 将对象沿 Z 轴移动参数 *distance* 指定距离。</p>
  285. <h3>[method:null traverse]( [param:Function callback] )</h3>
  286. <p>
  287. callback - 回调函数,第一个参数为 Object3D 对象。<br /><br />
  288. 在该对象及所有子对象上执行该函数。
  289. </p>
  290. <h3>[method:null traverseVisible]( [param:Function callback] )</h3>
  291. <p>
  292. callback - 回调函数,第一个参数为 Object3D 对象。<br /><br />
  293. 如同 traverse 函数,该函数只会在可见的对象及子对象上被调用。
  294. </p>
  295. <h3>[method:null traverseAncestors]( [param:Function callback] )</h3>
  296. <p>
  297. callback - 回调函数,第一个参数为 Object3D 对象。<br /><br />
  298. 在父对象及所有祖先上被调用。
  299. </p>
  300. <h3>[method:null updateMatrix]()</h3>
  301. <p>更新局部变换矩阵。</p>
  302. <h3>[method:null updateMatrixWorld]( [param:Boolean force] )</h3>
  303. <p>更新当前对象及子对象的全局变换信息。</p>
  304. <h3>[method:Vector3 worldToLocal]( [param:Vector3 vector] )</h3>
  305. <p>
  306. vector - 全局坐标向量。<br /><br />
  307. 将参数给定坐标从全局坐标转换为局部坐标。
  308. </p>
  309. <h2>资源</h2>
  310. [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
  311. </body>
  312. </html>