Texture.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  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">创建一个纹理贴图,将其应用到一个表面,或者作为反射/折射贴图。</p>
  13. <h2>构造函数</h2>
  14. <h3>[name]( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding )</h3>
  15. <h2>源代码</h2>
  16. <code>
  17. // load a texture, set wrap mode to repeat
  18. var texture = new THREE.TextureLoader().load( "textures/water.jpg" );
  19. texture.wrapS = THREE.RepeatWrapping;
  20. texture.wrapT = THREE.RepeatWrapping;
  21. texture.repeat.set( 4, 4 );
  22. </code>
  23. <h2>属性</h2>
  24. <h3>[property:Integer id]</h3>
  25. <p>
  26. 只读 - 表示该纹理实例的唯一数字。
  27. </p>
  28. <h3>[property:String uuid]</h3>
  29. <p>
  30. 该对象实例的[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]。
  31. 这个值是自动分配的,因此不应当对其进行编辑。
  32. </p>
  33. <h3>[property:String name]</h3>
  34. <p>
  35. 该对象的名称,可选,且无需唯一。默认值是一个空字符串。
  36. </p>
  37. <h3>[property:Image image]</h3>
  38. <p>
  39. 一个图片对象,通常由[page:TextureLoader.load]方法创建。
  40. 该对象可以是被three.js所支持的任意图片(例如PNG、JPG、GIF、DDS)或视频(例如MP4、OGG/OGV)格式。<br /><br />
  41. 要使用视频来作为纹理贴图,你需要有一个正在播放的HTML5 Video元素来作为你纹理贴图的源图像,
  42. 并在视频播放时不断地更新这个纹理贴图。——[page:VideoTexture VideoTexture] 类会对此自动进行处理。
  43. </p>
  44. <h3>[property:Boolean isTexture]</h3>
  45. <p>
  46. 用于测试这个类或者派生类是否为Texture,默认为*true*。<br /><br />
  47. 你不应当对这个属性进行改变,因为它在内部使用,以用于优化。
  48. </p>
  49. <h3>[property:array mipmaps]</h3>
  50. <p>
  51. 用户所给定的mipmap数组(可选)。
  52. </p>
  53. <h3>[property:number mapping]</h3>
  54. <p>
  55. 图像将如何应用到物体(对象)上。默认值是[page:Textures THREE.UVMapping]对象类型,
  56. 即UV坐标将被用于纹理映射。<br />
  57. 请参阅[page:Textures texture constants](映射模式常量)来了解其他映射类型。
  58. </p>
  59. <h3>[property:number wrapS]</h3>
  60. <p>
  61. 这个值定义了纹理贴图在水平方向上将如何包裹,在UV映射中对应于*U*。<br />
  62. 默认值是[page:Textures THREE.ClampToEdgeWrapping],即纹理边缘将被推到外部边缘的纹素。
  63. 其它的两个选项分别是[page:Textures THREE.RepeatWrapping]和[page:Textures THREE.MirroredRepeatWrapping]。
  64. 请参阅[page:Textures texture constants]来了解详细信息。
  65. </p>
  66. <h3>[property:number wrapT]</h3>
  67. <p>
  68. 这个值定义了纹理贴图在垂直方向上将如何包裹,在UV映射中对应于*V*。<br />
  69. 可以使用与[property:number wrapS]相同的选项。<br /><br />
  70. 请注意:纹理中图像的平铺,仅有当图像大小(以像素为单位)为2的幂(2、4、8、16、32、64、128、256、512、1024、2048、……)时才起作用。
  71. 宽度、高度无需相等,但每个维度的长度必须都是2的幂。
  72. 这是WebGL中的限制,不是由three.js所限制的。
  73. </p>
  74. <h3>[property:number magFilter]</h3>
  75. <p>
  76. 当一个纹素覆盖大于一个像素时,贴图将如何采样。默认值为[page:Textures THREE.LinearFilter],
  77. 它将获取四个最接近的纹素,并在他们之间进行双线性插值。
  78. 另一个选项是[page:Textures THREE.NearestFilter],它将使用最接近的纹素的值。<br />
  79. 请参阅[page:Textures texture constants]页面来了解详细信息。
  80. </p>
  81. <h3>[property:number minFilter]</h3>
  82. <p>
  83. 当一个纹素覆盖小于一个像素时,贴图将如何采样。默认值为[page:Textures THREE.LinearMipMapLinearFilter],
  84. 它将使用mipmapping以及三次线性滤镜。<br /><br />
  85. 请参阅[page:Textures texture constants]页面来了解所有可能的选项。
  86. </p>
  87. <h3>[property:number anisotropy]</h3>
  88. <p>
  89. 沿着轴,通过具有最高纹素密度的像素的样本数。
  90. 默认情况下,这个值为1。设置一个较高的值将会产生比基本的mipmap更清晰的效果,代价是需要使用更多纹理样本。
  91. 使用[page:WebGLrenderer.getMaxAnisotropy renderer.getMaxAnisotropy]() 来查询GPU中各向异性的最大有效值;这个值通常是2的幂。
  92. </p>
  93. <h3>[property:number format]</h3>
  94. <p>
  95. 默认值为[page:Textures THREE.RGBAFormat],
  96. 但[page:TextureLoader TextureLoader]将会在载入JPG图片时自动将这个值设置为[page:Textures THREE.RGBFormat]。<br /><br />
  97. 请参阅[page:Textures texture constants]页面来了解其它格式。
  98. </p>
  99. <h3>[property:number type]</h3>
  100. <p>
  101. 这个值必须与[page:Texture.format .format]相对应。默认值为[page:Textures THREE.UnsignedByteType],
  102. 它将会被用于绝大多数纹理格式。<br /><br />
  103. 请参阅[page:Textures texture constants]来了解其它格式。
  104. </p>
  105. <h3>[property:Vector2 offset]</h3>
  106. <p>
  107. 纹理在单次重复时,从一开始将分别在U、V方向上偏移多少。
  108. 这个值的范围通常在*0.0*之间*1.0*。
  109. 请注意:这一属性是一个非常方便的修改器,仅仅影响纹理对模型上第一组UV的应用。
  110. 如果该纹理被用于需要额外的UV集的贴图(例如一些成品材质中的aoMap或lightMap),
  111. 这些UV必须被手动调整来实现所期望的偏移。
  112. </p>
  113. <h3>[property:Vector2 repeat]</h3>
  114. <p>
  115. 纹理将在表面上,分别在U、V方向重复多少次。如果这个值在任意方向上设置为大于1,
  116. 则对应的Wrap参数应当也被设为[page:Textures THREE.RepeatWrapping]或[page:Textures THREE.MirroredRepeatWrapping],
  117. 以实现所期望的平铺效果。
  118. 请注意:这一属性是一个非常方便的修改器,仅仅影响纹理对模型上第一组UV的应用。
  119. 如果该纹理被用于需要额外的UV集的贴图(例如一些成品材质中的aoMap或lightMap),
  120. 这些UV必须被手动调整来实现所期望的重复。
  121. </p>
  122. <h3>[property:number rotation]</h3>
  123. <p>
  124. 纹理将围绕中心点旋转多少度,单位为弧度(rad)。正值为逆时针方向旋转,默认值为*0*。
  125. </p>
  126. <h3>[property:Vector2 center]</h3>
  127. <p>
  128. 旋转中心点。(0.5, 0.5)对应纹理的正中心。默认值为(0,0),即左下角。
  129. </p>
  130. <h3>[property:boolean matrixAutoUpdate]</h3>
  131. <p>
  132. 是否从纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、[page:Texture.rotation .rotation]和[page:Texture.center .center]属性更新纹理的UV变换矩阵(uv-transform [page:Texture.matrix .matrix])。
  133. 默认值为true。
  134. 如果你要直接指定纹理的变换矩阵,请将其设为false。
  135. </p>
  136. <h3>[property:Matrix3 matrix]</h3>
  137. <p>
  138. 纹理的UV变换矩阵。
  139. 当纹理的[page:Texture.matrixAutoUpdate .matrixAutoUpdate]属性为true时,
  140. 由渲染器从纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、[page:Texture.rotation .rotation]和[page:Texture.center .center]属性中进行更新。
  141. 当[page:Texture.matrixAutoUpdate .matrixAutoUpdate]属性为false时,该矩阵可以被手动设置。
  142. 默认值为单位矩阵。
  143. </p>
  144. <h3>[property:boolean generateMipmaps]</h3>
  145. <p>
  146. 是否为纹理生成mipmap(如果可用)。默认为true。
  147. 如果你手动生成mipmap,请将其设为false。
  148. </p>
  149. <h3>[property:boolean premultiplyAlpha]</h3>
  150. <p>
  151. 默认为false,这是PNG图像的规范。
  152. 如果RGB值已被Alpha预乘,请将其设为true。
  153. Note that this property has no effect for [link:https://developer.mozilla.org/de/docs/Web/API/ImageBitmap ImageBitmap].
  154. You need to configure on bitmap creation instead. See [page:ImageBitmapLoader].
  155. </p>
  156. <h3>[property:boolean flipY]</h3>
  157. <p>
  158. 默认为true。翻转图像的Y轴以匹配WebGL纹理坐标空间。
  159. Note that this property has no effect for [link:https://developer.mozilla.org/de/docs/Web/API/ImageBitmap ImageBitmap].
  160. You need to configure on bitmap creation instead. See [page:ImageBitmapLoader].
  161. </p>
  162. <h3>[property:number unpackAlignment]</h3>
  163. <p>
  164. 默认为4。指定内存中每个像素行起点的对齐要求。
  165. 允许的值为1(字节对齐)、2(行对齐到偶数字节)、4(字对齐)和8(行从双字边界开始)。
  166. 请参阅[link:http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml glPixelStorei]来了解详细信息。
  167. </p>
  168. <h3>[property:number encoding]</h3>
  169. <p>
  170. 默认值为[page:Textures THREE.LinearEncoding]。
  171. 请参阅[page:Textures texture constants]来了解其他格式的详细信息。<br /><br />
  172. 请注意,如果在材质被使用之后,纹理贴图中这个值发生了改变,
  173. 需要触发Material.needsUpdate,来使得这个值在着色器中实现。
  174. </p>
  175. <h3>[property:Integer version]</h3>
  176. <p>
  177. 这个值起始值为*0*,计算[property:Boolean needsUpdate]被设置为*true*的次数。
  178. </p>
  179. <h3>[property:Function onUpdate]</h3>
  180. <p>
  181. 一个回调函数,在纹理被更新后调用。
  182. (例如,当needsUpdate被设为true且纹理被使用。)
  183. </p>
  184. <h3>[property:Boolean needsUpdate]</h3>
  185. <p>
  186. 将其设置为*true*,以便在下次使用纹理时触发一次更新。
  187. 这对于设置包裹模式尤其重要。
  188. </p>
  189. <h2>方法</h2>
  190. <h3>[page:EventDispatcher EventDispatcher]方法在这个类上可以使用。</h3>
  191. <h3>[method:null updateMatrix]()</h3>
  192. <p>
  193. 从纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、
  194. [page:Texture.rotation .rotation]和[page:Texture.center .center]属性来更新纹理的UV变换矩阵(uv-transform [page:Texture.matrix .matrix])。
  195. </p>
  196. <h3>[method:Texture clone]()</h3>
  197. <p>
  198. 拷贝纹理。请注意。这不是“深拷贝”,图像是共用的。
  199. </p>
  200. <h3>[method:Texture toJSON]( [param:Object meta] )</h3>
  201. <p>
  202. meta -- 可选,包含有元数据的对象。<br />
  203. 将材质转换为three.js JSON格式。
  204. </p>
  205. <h3>[method:null dispose]()</h3>
  206. <p>
  207. 使用“废置”事件类型调用[page:EventDispatcher EventDispatcher].dispatchEvent。
  208. </p>
  209. <h3>[method:Vector2 transformUv]( [param:Vector2 uv] )</h3>
  210. <p>
  211. 基于纹理的[page:Texture.offset .offset]、[page:Texture.repeat .repeat]、
  212. [page:Texture.wrapS .wrapS]、[page:Texture.wrapT .wrapT]和[page:Texture.flipY .flipY]属性值来变换uv。
  213. </p>
  214. <h2>源代码</h2>
  215. [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
  216. </body>
  217. </html>