GLTFLoader.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>GLTFLoader - Three.js Docs</title>
  6. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  7. <script src="../scripts/highlight.min.js"></script>
  8. <link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
  9. <link type="text/css" rel="stylesheet" href="../styles/page.css">
  10. </head>
  11. <body>
  12. <p class="inheritance" translate="no"><a href="Loader.html">Loader</a> → </p>
  13. <h1 translate="no">GLTFLoader</h1>
  14. <section>
  15. <header>
  16. <div class="class-description"><p>A loader for the glTF 2.0 format.</p>
  17. <p><a href="https://www.khronos.org/gltf/">glTF</a> (GL Transmission Format) is an <a href="https://github.com/KhronosGroup/glTF/tree/main/specification/2.0">open format specification</a>
  18. for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb)
  19. format. External files store textures (.jpg, .png) and additional binary data (.bin). A glTF asset may deliver
  20. one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights,
  21. and/or cameras.</p>
  22. <p><code>GLTFLoader</code> uses <a href="ImageBitmapLoader.html">ImageBitmapLoader</a> whenever possible. Be advised that image bitmaps are not
  23. automatically GC-collected when they are no longer referenced, and they require special handling during
  24. the disposal process.</p>
  25. <p><code>GLTFLoader</code> supports the following glTF 2.0 extensions:</p>
  26. <ul>
  27. <li>KHR_draco_mesh_compression</li>
  28. <li>KHR_materials_clearcoat</li>
  29. <li>KHR_materials_dispersion</li>
  30. <li>KHR_materials_ior</li>
  31. <li>KHR_materials_specular</li>
  32. <li>KHR_materials_transmission</li>
  33. <li>KHR_materials_iridescence</li>
  34. <li>KHR_materials_unlit</li>
  35. <li>KHR_materials_volume</li>
  36. <li>KHR_mesh_quantization</li>
  37. <li>KHR_lights_punctual</li>
  38. <li>KHR_texture_basisu</li>
  39. <li>KHR_texture_transform</li>
  40. <li>EXT_texture_webp</li>
  41. <li>EXT_meshopt_compression</li>
  42. <li>EXT_mesh_gpu_instancing</li>
  43. </ul>
  44. <p>The following glTF 2.0 extension is supported by an external user plugin:</p>
  45. <ul>
  46. <li><a href="https://github.com/takahirox/three-gltf-extensions">KHR_materials_variants</a></li>
  47. <li><a href="https://github.com/takahirox/three-gltf-extensions">MSFT_texture_dds</a></li>
  48. <li><a href="https://github.com/needle-tools/three-animation-pointer">KHR_animation_pointer</a></li>
  49. <li><a href="https://github.com/needle-tools/gltf-progressive">NEEDLE_progressive</a></li>
  50. </ul></div>
  51. <h2>Code Example</h2>
  52. <div translate="no"><pre><code class="language-js">const loader = new GLTFLoader();
  53. // Optional: Provide a DRACOLoader instance to decode compressed mesh data
  54. const dracoLoader = new DRACOLoader();
  55. dracoLoader.setDecoderPath( '/examples/jsm/libs/draco/' );
  56. loader.setDRACOLoader( dracoLoader );
  57. const gltf = await loader.loadAsync( 'models/gltf/duck/duck.gltf' );
  58. scene.add( gltf.scene );
  59. </code></pre></div>
  60. </header>
  61. <article>
  62. <h2 class="subsection-title">Import</h2>
  63. <p><span translate="no">GLTFLoader</span> is an addon, and must be imported explicitly, see <a href="https://threejs.org/manual/#en/installation" target="_blank">Installation#Addons</a>.</p>
  64. <pre><code class="language-js">import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';</code></pre>
  65. <div class="container-overview">
  66. <h2>Constructor</h2>
  67. <h3 class="name name-method" id="GLTFLoader" translate="no">new <a href="#GLTFLoader">GLTFLoader</a><span class="signature">( manager : <span class="param-type">LoadingManager</span> )</span> </h3>
  68. <div class="method">
  69. <div class="description">
  70. <p>Constructs a new glTF loader.</p>
  71. </div>
  72. <table class="params">
  73. <tbody>
  74. <tr>
  75. <td class="name"><code>manager</code></td>
  76. <td class="description last"><p>The loading manager.</p></td>
  77. </tr>
  78. </tbody>
  79. </table>
  80. </div>
  81. </div>
  82. <h2 class="subsection-title">Methods</h2>
  83. <h3 class="name name-method" id="load" translate="no">.<a href="#load">load</a><span class="signature">( url : <span class="param-type">string</span>, onLoad : <span class="param-type">function</span>, onProgress : <span class="param-type">onProgressCallback</span>, onError : <span class="param-type">onErrorCallback</span> )</span> </h3>
  84. <div class="method">
  85. <div class="description">
  86. <p>Starts loading from the given URL and passes the loaded glTF asset
  87. to the <code>onLoad()</code> callback.</p>
  88. </div>
  89. <table class="params">
  90. <tbody>
  91. <tr>
  92. <td class="name"><code>url</code></td>
  93. <td class="description last"><p>The path/URL of the file to be loaded. This can also be a data URI.</p></td>
  94. </tr>
  95. <tr>
  96. <td class="name"><code>onLoad</code></td>
  97. <td class="description last"><p>Executed when the loading process has been finished.</p></td>
  98. </tr>
  99. <tr>
  100. <td class="name"><code>onProgress</code></td>
  101. <td class="description last"><p>Executed while the loading is in progress.</p></td>
  102. </tr>
  103. <tr>
  104. <td class="name"><code>onError</code></td>
  105. <td class="description last"><p>Executed when errors occur.</p></td>
  106. </tr>
  107. </tbody>
  108. </table>
  109. <dl class="details">
  110. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="Loader.html#load">Loader#load</a></dt>
  111. </dl>
  112. </div>
  113. <h3 class="name name-method" id="parse" translate="no">.<a href="#parse">parse</a><span class="signature">( data : <span class="param-type">string | ArrayBuffer</span>, path : <span class="param-type">string</span>, onLoad : <span class="param-type">function</span>, onError : <span class="param-type">onErrorCallback</span> )</span> </h3>
  114. <div class="method">
  115. <div class="description">
  116. <p>Parses the given FBX data and returns the resulting group.</p>
  117. </div>
  118. <table class="params">
  119. <tbody>
  120. <tr>
  121. <td class="name"><code>data</code></td>
  122. <td class="description last"><p>The raw glTF data.</p></td>
  123. </tr>
  124. <tr>
  125. <td class="name"><code>path</code></td>
  126. <td class="description last"><p>The URL base path.</p></td>
  127. </tr>
  128. <tr>
  129. <td class="name"><code>onLoad</code></td>
  130. <td class="description last"><p>Executed when the loading process has been finished.</p></td>
  131. </tr>
  132. <tr>
  133. <td class="name"><code>onError</code></td>
  134. <td class="description last"><p>Executed when errors occur.</p></td>
  135. </tr>
  136. </tbody>
  137. </table>
  138. <dl class="details">
  139. <dt class="tag-overrides"><strong>Overrides:</strong> <a href="Loader.html#parse">Loader#parse</a></dt>
  140. </dl>
  141. </div>
  142. <h3 class="name name-method" id="parseAsync" translate="no">.<a href="#parseAsync">parseAsync</a><span class="signature">( data : <span class="param-type">string | ArrayBuffer</span>, path : <span class="param-type">string</span> )</span><span class="type-signature"> : Promise.&lt;<a href="GLTFLoader.html#~LoadObject">GLTFLoader~LoadObject</a>></span> <span class="type-signature">(async) </span></h3>
  143. <div class="method">
  144. <div class="description">
  145. <p>Async version of <a href="GLTFLoader.html#parse">GLTFLoader#parse</a>.</p>
  146. </div>
  147. <table class="params">
  148. <tbody>
  149. <tr>
  150. <td class="name"><code>data</code></td>
  151. <td class="description last"><p>The raw glTF data.</p></td>
  152. </tr>
  153. <tr>
  154. <td class="name"><code>path</code></td>
  155. <td class="description last"><p>The URL base path.</p></td>
  156. </tr>
  157. </tbody>
  158. </table>
  159. <dl class="details">
  160. <dt class="tag-returns"><strong>Returns:</strong> A Promise that resolves with the loaded glTF when the parsing has been finished.</dt>
  161. </dl>
  162. </div>
  163. <h3 class="name name-method" id="register" translate="no">.<a href="#register">register</a><span class="signature">( callback : <span class="param-type">function</span> )</span><span class="type-signature"> : <a href="GLTFLoader.html">GLTFLoader</a></span> </h3>
  164. <div class="method">
  165. <div class="description">
  166. <p>Registers a plugin callback. This API is internally used to implement the various
  167. glTF extensions but can also used by third-party code to add additional logic
  168. to the loader.</p>
  169. </div>
  170. <table class="params">
  171. <tbody>
  172. <tr>
  173. <td class="name"><code>callback</code></td>
  174. <td class="description last"><p>The callback function to register.</p></td>
  175. </tr>
  176. </tbody>
  177. </table>
  178. <dl class="details">
  179. <dt class="tag-returns"><strong>Returns:</strong> A reference to this loader.</dt>
  180. </dl>
  181. </div>
  182. <h3 class="name name-method" id="setDRACOLoader" translate="no">.<a href="#setDRACOLoader">setDRACOLoader</a><span class="signature">( dracoLoader : <span class="param-type">DRACOLoader</span> )</span><span class="type-signature"> : <a href="GLTFLoader.html">GLTFLoader</a></span> </h3>
  183. <div class="method">
  184. <div class="description">
  185. <p>Sets the given Draco loader to this loader. Required for decoding assets
  186. compressed with the <code>KHR_draco_mesh_compression</code> extension.</p>
  187. </div>
  188. <table class="params">
  189. <tbody>
  190. <tr>
  191. <td class="name"><code>dracoLoader</code></td>
  192. <td class="description last"><p>The Draco loader to set.</p></td>
  193. </tr>
  194. </tbody>
  195. </table>
  196. <dl class="details">
  197. <dt class="tag-returns"><strong>Returns:</strong> A reference to this loader.</dt>
  198. </dl>
  199. </div>
  200. <h3 class="name name-method" id="setKTX2Loader" translate="no">.<a href="#setKTX2Loader">setKTX2Loader</a><span class="signature">( ktx2Loader : <span class="param-type">KTX2Loader</span> )</span><span class="type-signature"> : <a href="GLTFLoader.html">GLTFLoader</a></span> </h3>
  201. <div class="method">
  202. <div class="description">
  203. <p>Sets the given KTX2 loader to this loader. Required for loading KTX2
  204. compressed textures.</p>
  205. </div>
  206. <table class="params">
  207. <tbody>
  208. <tr>
  209. <td class="name"><code>ktx2Loader</code></td>
  210. <td class="description last"><p>The KTX2 loader to set.</p></td>
  211. </tr>
  212. </tbody>
  213. </table>
  214. <dl class="details">
  215. <dt class="tag-returns"><strong>Returns:</strong> A reference to this loader.</dt>
  216. </dl>
  217. </div>
  218. <h3 class="name name-method" id="setMeshoptDecoder" translate="no">.<a href="#setMeshoptDecoder">setMeshoptDecoder</a><span class="signature">( meshoptDecoder : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="GLTFLoader.html">GLTFLoader</a></span> </h3>
  219. <div class="method">
  220. <div class="description">
  221. <p>Sets the given meshopt decoder. Required for decoding assets
  222. compressed with the <code>EXT_meshopt_compression</code> extension.</p>
  223. </div>
  224. <table class="params">
  225. <tbody>
  226. <tr>
  227. <td class="name"><code>meshoptDecoder</code></td>
  228. <td class="description last"><p>The meshopt decoder to set.</p></td>
  229. </tr>
  230. </tbody>
  231. </table>
  232. <dl class="details">
  233. <dt class="tag-returns"><strong>Returns:</strong> A reference to this loader.</dt>
  234. </dl>
  235. </div>
  236. <h3 class="name name-method" id="unregister" translate="no">.<a href="#unregister">unregister</a><span class="signature">( callback : <span class="param-type">function</span> )</span><span class="type-signature"> : <a href="GLTFLoader.html">GLTFLoader</a></span> </h3>
  237. <div class="method">
  238. <div class="description">
  239. <p>Unregisters a plugin callback.</p>
  240. </div>
  241. <table class="params">
  242. <tbody>
  243. <tr>
  244. <td class="name"><code>callback</code></td>
  245. <td class="description last"><p>The callback function to unregister.</p></td>
  246. </tr>
  247. </tbody>
  248. </table>
  249. <dl class="details">
  250. <dt class="tag-returns"><strong>Returns:</strong> A reference to this loader.</dt>
  251. </dl>
  252. </div>
  253. <h2 class="subsection-title">Type Definitions</h2>
  254. <div class="member">
  255. <h3 class="name" id="~LoadObject" translate="no">.<a href="#~LoadObject">LoadObject</a> </h3>
  256. <div class="description">
  257. <p>Loader result of <code>GLTFLoader</code>.</p>
  258. </div>
  259. <h5 class="subsection-title">Properties:</h5>
  260. <table class="props">
  261. <thead>
  262. <tr>
  263. <th>Name</th>
  264. <th>Type</th>
  265. <th class="last">Description</th>
  266. </tr>
  267. </thead>
  268. <tbody>
  269. <tr>
  270. <td class="name"><code>animations</code></td>
  271. <td class="type">
  272. <span class="param-type">Array.&lt;<a href="AnimationClip.html">AnimationClip</a>></span>
  273. </td>
  274. <td class="description last"><p>An array of animation clips.</p></td>
  275. </tr>
  276. <tr>
  277. <td class="name"><code>asset</code></td>
  278. <td class="type">
  279. <span class="param-type">Object</span>
  280. </td>
  281. <td class="description last"><p>Meta data about the loaded asset.</p></td>
  282. </tr>
  283. <tr>
  284. <td class="name"><code>cameras</code></td>
  285. <td class="type">
  286. <span class="param-type">Array.&lt;<a href="Camera.html">Camera</a>></span>
  287. </td>
  288. <td class="description last"><p>An array of cameras.</p></td>
  289. </tr>
  290. <tr>
  291. <td class="name"><code>parser</code></td>
  292. <td class="type">
  293. <span class="param-type">GLTFParser</span>
  294. </td>
  295. <td class="description last"><p>A reference to the internal parser.</p></td>
  296. </tr>
  297. <tr>
  298. <td class="name"><code>scene</code></td>
  299. <td class="type">
  300. <span class="param-type"><a href="Group.html">Group</a></span>
  301. </td>
  302. <td class="description last"><p>The default scene.</p></td>
  303. </tr>
  304. <tr>
  305. <td class="name"><code>scenes</code></td>
  306. <td class="type">
  307. <span class="param-type">Array.&lt;<a href="Group.html">Group</a>></span>
  308. </td>
  309. <td class="description last"><p>glTF assets might define multiple scenes.</p></td>
  310. </tr>
  311. <tr>
  312. <td class="name"><code>userData</code></td>
  313. <td class="type">
  314. <span class="param-type">Object</span>
  315. </td>
  316. <td class="description last"><p>Additional data.</p></td>
  317. </tr>
  318. </tbody>
  319. </table>
  320. </div>
  321. <h2 class="subsection-title">Source</h2>
  322. <p>
  323. <a href="https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/GLTFLoader.js" target="_blank" rel="noopener" translate="no">examples/jsm/loaders/GLTFLoader.js</a>
  324. </p>
  325. </article>
  326. </section>
  327. <script src="../scripts/linenumber.js"></script>
  328. <script src="../scripts/page.js"></script>
  329. </body>
  330. </html>
粤ICP备19079148号