Skip to content

Commit

Permalink
GLTFLoader v2 (mrdoob#9786)
Browse files Browse the repository at this point in the history
* Initial GLTFLoader updates so it will also obtain async resources over the network

* First take at adding shader support to new GLTFLoader

* First working custom shaders version of GLTFLoader.js

* Fully working custom GLTF shaders + general library fix-ups

* Add skins, animations, lights, extensions and continue to refactor the library

* Refactor new GLTFLoader (seperate glTF parsing and internal library building)

* Fix GLSL shader update binding to point at the correct nodes + more general refactoring

* Make _each thenable and refactor dependencies graph + other minor fixes

* Improves spec compliance: primitive.mode is optional

* Update GLTFLoader v2 with feedback on PR: mrdoob#9786

- Replace .set(...) with .fromArray(...) where possible for THREE.js Math objects (thanks @mrdoob)
- Include fix for mrdoob#8381 (thanks @cx20)
- Move THREE.GLTFShaders to THREE.GLTFLoader.Shaders
- Move THREE.GLTFAnimator to THREE.GLTFLoader.Animations
- Rename .setBaseUrl(...) to .setPath(...)
- Update demo page 'examples/webgl_loader_gltf_new.html' with renamed APIs

* Replace 'examples/webgl_loader_gltf.html' with new version of GLTFLoader

* Update documentation at /docs/?q=gltf#Reference/Loaders/GLTFLoader to reference new GLTFLoader

* Move /examples/js/loaders/gltf/* to /examples/js/loaders/deprecated/gltf/*

* Actually add a fix for mrdoob#8381

* Re-fix mrdoob#8381 in a more logical way

* Update material parameter checking and validation.

* Fix issue whereby the spec says doubleSided and transparent should be in the 'values' section but every use of these params I've seen in the wild has been outside this section

* Ambient is not a valid properties for THREE.js materials

* THREE textures have flipY set to true by default. By setting to false we can remove double flip from GLTFLoader

* Fix issue where Firefox Promise then callback can not correctly keep track of its key

* Remove debugging from examples/loaders/deprecated/gltf/glTFLoader.js

* Refactor waitForDependencies in to _withDependencies. Remove need for global library.* tracking. Other general refactoring
  • Loading branch information
richtr authored and aardgoose committed Oct 7, 2016
1 parent 3b819c7 commit 550fc33
Show file tree
Hide file tree
Showing 12 changed files with 1,669 additions and 282 deletions.
105 changes: 105 additions & 0 deletions docs/api/loaders/GLTFLoader.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<base href="../../" />
<script src="list.js"></script>
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body>
[page:Loader] &rarr;
<h1>[name]</h1>

<div class="desc">
A loader for loading a <em>.gltf</em> resource in <em>JSON</em> format.
<br /><br />
The <a href="https://www.khronos.org/gltf">glTF file format</a> is a JSON file format to enable rapid delivery and loading of 3D content.
</div>


<h2>Constructor</h2>

<h3>[name]( [page:LoadingManager manager] )</h3>
<div>
[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use. Default is [page:LoadingManager THREE.DefaultLoadingManager].
</div>
<div>
Creates a new [name].
</div>

<h2>Properties</h2>


<h2>Methods</h2>

<h3>[method:null load]( [page:String url], [page:Function onLoad], [page:Function onProgress], [page:Function onError] )</h3>
<div>
[page:String url] — required<br />
[page:Function onLoad] — Will be called when load completes. The argument will be the loaded JSON response returned from [page:Function parse].<br />
[page:Function onProgress] — Will be called while load progresses. The argument will be the XMLHttpRequest instance, that contains .[page:Integer total] and .[page:Integer loaded] bytes.<br />
[page:Function onError] — Will be called when load errors.<br />
</div>
<div>
Begin loading from url and call the callback function with the parsed response content.
</div>

<h3>[method:null setPath]( [page:String path] )</h3>
<div>
[page:String path] — Base path for loading additional resources e.g. textures, GLSL shaders, .bin data.
</div>
<div>
Set the base path for additional resources.
</div>

<h3>[method:null setCrossOrigin]( [page:String value] )</h3>
<div>
[page:String value] — The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS.
</div>

<h3>[method:null parse]( [page:Object json], [page:Function callBack], [page:String path] )</h3>
<div>
[page:Object json] — <em>JSON</em> object to parse.<br />
[page:Function callBack] — Will be called when parse completes.<br />
[page:String path] — The base path from which to find subsequent glTF resources such as textures, GLSL shaders and .bin data files.<br />
</div>
<div>
Parse a glTF-based <em>JSON</em> structure and fire [page:Function callback] when complete. The argument to [page:Function callback] will be an [page:object] that contains loaded parts: .[page:Scene scene], .[page:Array cameras], .[page:Array animations] and .[page:Array shaders]
</div>


<h2>Notes</h2>

<div>
When using custom shaders provided within a glTF file [page:THREE.GLTFLoader.Shaders] should be updated on each render loop. See [example:webgl_loader_gltf] demo source code for example usage.
</div>

<div>
This class is often used with [page:THREE.GLTFLoader.Animations THREE.GLTFLoader.Animations] to animate parsed animations. See [example:webgl_loader_gltf] demo source code for example usage.
</div>

<h2>Example</h2>

<code>
// instantiate a loader
var loader = new THREE.GLTFLoader();

// load a glTF resource
loader.load(
// resource URL
'models/gltf/duck/duck.json',
// Function when resource is loaded
function ( object ) {
scene.add( object.scene );
}
);
</code>

[example:webgl_loader_gltf]


<h2>Source</h2>

[link:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/GLTFLoader.js examples/js/loaders/GLTFLoader.js]
</body>
</html>
74 changes: 0 additions & 74 deletions docs/api/loaders/glTFLoader.html

This file was deleted.

2 changes: 1 addition & 1 deletion docs/list.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ var list = {
[ "BufferGeometryLoader", "api/loaders/BufferGeometryLoader" ],
[ "Cache", "api/loaders/Cache" ],
[ "ColladaLoader", "api/loaders/ColladaLoader" ],
[ "glTFLoader", "api/loaders/glTFLoader" ],
[ "GLTFLoader", "api/loaders/GLTFLoader" ],
[ "ImageLoader", "api/loaders/ImageLoader" ],
[ "JSONLoader", "api/loaders/JSONLoader" ],
[ "Loader", "api/loaders/Loader" ],
Expand Down
4 changes: 2 additions & 2 deletions editor/js/libs/tern-threejs/threejs.js
Original file line number Diff line number Diff line change
Expand Up @@ -2544,8 +2544,8 @@
"!doc": "A low level class for loading resources with XmlHttpRequest, used internaly by most loaders.",
"!type": "fn(manager: +THREE.LoadingManager)"
},
"glTFLoader": {
"!url": "http://threejs.org/docs/#Reference/loaders/glTFLoader",
"GLTFLoader": {
"!url": "http://threejs.org/docs/#Reference/loaders/GLTFLoader",
"prototype": {
"!proto": "THREE.Loader.prototype",
"load": {
Expand Down
Loading

0 comments on commit 550fc33

Please sign in to comment.