GLTFLoader
GLTFLoader
[Link] = ( function () {
[Link] = null;
[Link] = null;
[Link] = [];
[Link]( function ( parser ) {
} );
[Link] =
[Link]( [Link]( [Link] ), {
constructor: GLTFLoader,
var resourcePath;
resourcePath = [Link];
resourcePath = [Link];
} else {
if ( onError ) {
onError( e );
} else {
[Link]( e );
[Link]( url );
[Link]( url );
};
[Link]( [Link] );
[Link]( 'arraybuffer' );
[Link]( [Link] );
[Link]( true );
try {
onLoad( gltf );
[Link]( url );
}, _onError );
} catch ( e ) {
_onError( e );
}, onProgress, _onError );
},
[Link] = dracoLoader;
return this;
},
[Link] = ddsLoader;
return this;
},
[Link]( callback );
return this;
},
return this;
},
var content;
var extensions = {};
var plugins = {};
content = data;
} else {
try {
} catch ( error ) {
if ( onError ) onError( error );
return;
content =
extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;
} else {
} );
[Link]( [Link] );
if ( [Link] ) {
case EXTENSIONS.KHR_LIGHTS_PUNCTUAL:
extensions[ extensionName ] = new
GLTFLightsExtension( json );
break;
case EXTENSIONS.KHR_MATERIALS_UNLIT:
extensions[ extensionName ] = new
GLTFMaterialsUnlitExtension();
break;
case
EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:
extensions[ extensionName ] = new
GLTFMaterialsPbrSpecularGlossinessExtension();
break;
case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:
extensions[ extensionName ] = new
GLTFDracoMeshCompressionExtension( json, [Link] );
break;
case EXTENSIONS.MSFT_TEXTURE_DDS:
extensions[ extensionName ] = new
GLTFTextureDDSExtension( [Link] );
break;
case EXTENSIONS.KHR_TEXTURE_TRANSFORM:
extensions[ extensionName ] = new
GLTFTextureTransformExtension();
break;
case EXTENSIONS.KHR_MESH_QUANTIZATION:
extensions[ extensionName ] = new
GLTFMeshQuantizationExtension();
break;
default:
if
( [Link]( extensionName ) >= 0 && plugins[ extensionName ] ===
undefined ) {
[Link]( '[Link]:
Unknown extension "' + extensionName + '".' );
[Link]( extensions );
[Link]( plugins );
[Link]( onLoad, onError );
}
} );
/* GLTFREGISTRY */
function GLTFRegistry() {
return {
},
},
},
removeAll: function () {
objects = {};
};
/*********************************/
/********** EXTENSIONS ***********/
/*********************************/
var EXTENSIONS = {
KHR_BINARY_GLTF: 'KHR_binary_glTF',
KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',
KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',
KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',
KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:
'KHR_materials_pbrSpecularGlossiness',
KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',
KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',
KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',
MSFT_TEXTURE_DDS: 'MSFT_texture_dds'
};
/**
* DDS Texture Extension
*
* Specification:
[Link]
_dds
*
*/
function GLTFTextureDDSExtension( ddsLoader ) {
if ( ! ddsLoader ) {
[Link] = EXTENSIONS.MSFT_TEXTURE_DDS;
[Link] = ddsLoader;
/**
* Punctual Lights Extension
*
* Specification:
[Link]
punctual
*/
function GLTFLightsExtension( json ) {
[Link] = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;
switch ( [Link] ) {
case 'directional':
lightNode = new [Link]( color );
[Link]( 0, 0, - 1 );
[Link]( [Link] );
break;
case 'point':
lightNode = new [Link]( color );
[Link] = range;
break;
case 'spot':
lightNode = new [Link]( color );
[Link] = range;
// Handle spotlight properties.
[Link] = [Link] || {};
[Link] = [Link]
!== undefined ? [Link] : 0;
[Link] = [Link]
!== undefined ? [Link] : [Link] / 4.0;
[Link] = [Link];
[Link] = 1.0 - [Link] /
[Link];
[Link]( 0, 0, - 1 );
[Link]( [Link] );
break;
default:
throw new Error( '[Link]: Unexpected light type,
"' + [Link] + '".' );
// Some lights (e.g. spot) default to a position other than the origin.
Reset the position
// here, because node-level parsing will only override position if
explicitly specified.
[Link]( 0, 0, 0 );
[Link] = 2;
};
/**
* Unlit Materials Extension
*
* Specification:
[Link]
ls_unlit
*/
function GLTFMaterialsUnlitExtension() {
[Link] = EXTENSIONS.KHR_MATERIALS_UNLIT;
[Link] = function () {
return [Link];
};
[Link] = function
( materialParams, materialDef, parser ) {
if ( metallicRoughness ) {
if ( [Link]( [Link] ) ) {
[Link]( array );
[Link] = array[ 3 ];
};
/**
* Clearcoat Materials Extension
*
* Specification:
[Link]
ls_clearcoat
*/
function GLTFMaterialsClearcoatExtension( parser ) {
[Link] = parser;
[Link] = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;
[Link] = function ( /*
materialIndex */ ) {
return [Link];
};
[Link] = function
( materialIndex, materialParams ) {
if ( ! [Link] || !
[Link][ [Link] ] ) {
return [Link]();
[Link] = [Link];
[Link] =
[Link];
[Link] = new
THREE.Vector2( scale, scale );
};
/* BINARY EXTENSION */
var BINARY_EXTENSION_HEADER_MAGIC = 'glTF';
var BINARY_EXTENSION_HEADER_LENGTH = 12;
var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };
[Link] = EXTENSIONS.KHR_BINARY_GLTF;
[Link] = null;
[Link] = null;
[Link] = {
magic: [Link]( new
Uint8Array( [Link]( 0, 4 ) ) ),
version: headerView.getUint32( 4, true ),
length: headerView.getUint32( 8, true )
};
chunkIndex += chunkLength;
/**
* DRACO Mesh Compression Extension
*
* Specification:
[Link]
esh_compression
*/
function GLTFDracoMeshCompressionExtension( json, dracoLoader ) {
if ( ! dracoLoader ) {
[Link] = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;
[Link] = json;
[Link] = dracoLoader;
[Link]();
[Link] = function
( primitive, parser ) {
threeAttributeMap[ threeAttributeName ] =
gltfAttributeMap[ attributeName ];
}
for ( attributeName in [Link] ) {
var accessorDef =
[Link][ [Link][ attributeName ] ];
var componentType =
WEBGL_COMPONENT_TYPES[ [Link] ];
var attribute =
[Link][ attributeName ];
var normalized =
attributeNormalizedMap[ attributeName ];
resolve( geometry );
}, threeAttributeMap, attributeTypeMap );
} );
} );
};
/**
* Texture Transform Extension
*
* Specification:
[Link]
_transform
*/
function GLTFTextureTransformExtension() {
[Link] = EXTENSIONS.KHR_TEXTURE_TRANSFORM;
texture = [Link]();
[Link]( [Link] );
[Link] = [Link];
[Link]( [Link] );
[Link] = true;
return texture;
};
/**
* Specular-Glossiness Extension
*
* Specification:
[Link]
ls_pbrSpecularGlossiness
*/
/**
* A sub class of [Link] with some of the functionality
* changed via the `onBeforeCompile` callback
* @pailhead
*/
[Link]( this );
[Link] = true;
var glossinessMapParsFragmentChunk = [
'#ifdef USE_GLOSSINESSMAP',
' uniform sampler2D glossinessMap;',
'#endif'
].join( '\n' );
var specularMapFragmentChunk = [
'vec3 specularFactor = specular;',
'#ifdef USE_SPECULARMAP',
' vec4 texelSpecular = texture2D( specularMap, vUv );',
' texelSpecular = sRGBToLinear( texelSpecular );',
' // reads channel RGB, compatible with a glTF Specular-
Glossiness (RGBA) texture',
' specularFactor *= [Link];',
'#endif'
].join( '\n' );
var glossinessMapFragmentChunk = [
'float glossinessFactor = glossiness;',
'#ifdef USE_GLOSSINESSMAP',
' vec4 texelGlossiness = texture2D( glossinessMap, vUv );',
' // reads channel A, compatible with a glTF Specular-
Glossiness (RGBA) texture',
' glossinessFactor *= texelGlossiness.a;',
'#endif'
].join( '\n' );
var lightPhysicalFragmentChunk = [
'PhysicalMaterial material;',
'[Link] = [Link];',
'vec3 dxy = max( abs( dFdx( geometryNormal ) ),
abs( dFdy( geometryNormal ) ) );',
'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',
'[Link] = max( 1.0 - glossinessFactor, 0.0525
);// 0.0525 corresponds to the base mip of a 256 cubemap.',
'[Link] += geometryRoughness;',
'[Link] = min( [Link],
1.0 );',
'[Link] = [Link];',
].join( '\n' );
var uniforms = {
specular: { value: new [Link]().setHex( 0xffffff ) },
glossiness: { value: 1 },
specularMap: { value: null },
glossinessMap: { value: null }
};
this._extraUniforms = uniforms;
// please see #14031 or #13198 for an alternate approach
[Link] = function ( shader ) {
};
/*eslint-disable*/
[Link](
this,
{
specular: {
get: function () { return [Link]; },
set: function ( v ) { [Link] = v; }
},
specularMap: {
get: function () { return [Link];
},
set: function ( v ) { [Link] = v;
}
},
glossiness: {
get: function () { return
[Link]; },
set: function ( v ) { [Link] =
v; }
},
glossinessMap: {
get: function () { return
[Link]; },
set: function ( v ) {
[Link] = v;
//how about something like this - @pailhead
if ( v ) {
[Link].USE_GLOSSINESSMAP = '';
// set USE_ROUGHNESSMAP to enable vUv
[Link].USE_ROUGHNESSMAP = '';
} else {
delete [Link].USE_ROUGHNESSMAP;
delete [Link].USE_GLOSSINESSMAP;
}
}
}
);
/*eslint-enable*/
delete [Link];
delete [Link];
delete [Link];
delete [Link];
[Link]( params );
[Link] =
[Link]( [Link] );
[Link] =
GLTFMeshStandardSGMaterial;
};
function GLTFMaterialsPbrSpecularGlossinessExtension() {
return {
name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,
specularGlossinessParams: [
'color',
'map',
'lightMap',
'lightMapIntensity',
'aoMap',
'aoMapIntensity',
'emissive',
'emissiveIntensity',
'emissiveMap',
'bumpMap',
'bumpScale',
'normalMap',
'normalMapType',
'displacementMap',
'displacementScale',
'displacementBias',
'specularMap',
'specular',
'glossinessMap',
'glossiness',
'alphaMap',
'envMap',
'envMapIntensity',
'refractionRatio',
],
getMaterialType: function () {
return GLTFMeshStandardSGMaterial;
},
var pbrSpecularGlossiness =
[Link][ [Link] ];
if ( [Link]( [Link] ) )
{
[Link]( array );
[Link] = array[ 3 ];
if
( [Link]( [Link] ) ) {
[Link]( [Link] );
if ( [Link] !==
undefined ) {
var specGlossMapDef =
[Link];
[Link]( [Link]( materialParams,
'glossinessMap', specGlossMapDef ) );
[Link]( [Link]( materialParams,
'specularMap', specGlossMapDef ) );
},
[Link] = [Link];
[Link] = null;
[Link] = 1.0;
[Link] = [Link];
[Link] = 1.0;
[Link] = [Link] ===
undefined ? null : [Link];
if ( [Link] ) [Link] =
[Link];
[Link] = null;
[Link] = 1;
[Link] = 0;
[Link] = null;
[Link] = 0.98;
return material;
},
};
/**
* Mesh Quantization Extension
*
* Specification:
[Link]
antization
*/
function GLTFMeshQuantizationExtension() {
[Link] = EXTENSIONS.KHR_MESH_QUANTIZATION;
/*********************************/
/********** INTERPOLATION ********/
/*********************************/
// Spline Interpolation
// Specification:
[Link]
ix-c-spline-interpolation
function GLTFCubicSplineInterpolant( parameterPositions, sampleValues,
sampleSize, resultBuffer ) {
[Link] =
[Link]( [Link] );
[Link] =
GLTFCubicSplineInterpolant;
return result;
};
[Link].beforeStart_ =
[Link].copySampleValue_;
[Link].afterEnd_ =
[Link].copySampleValue_;
var td = t1 - t0;
var p = ( t - t0 ) / td;
var pp = p * p;
var ppp = pp * p;
return result;
};
/*********************************/
/********** INTERNALS ************/
/*********************************/
/* CONSTANTS */
var WEBGL_CONSTANTS = {
FLOAT: 5126,
//FLOAT_MAT2: 35674,
FLOAT_MAT3: 35675,
FLOAT_MAT4: 35676,
FLOAT_VEC2: 35664,
FLOAT_VEC3: 35665,
FLOAT_VEC4: 35666,
LINEAR: 9729,
REPEAT: 10497,
SAMPLER_2D: 35678,
POINTS: 0,
LINES: 1,
LINE_LOOP: 2,
LINE_STRIP: 3,
TRIANGLES: 4,
TRIANGLE_STRIP: 5,
TRIANGLE_FAN: 6,
UNSIGNED_BYTE: 5121,
UNSIGNED_SHORT: 5123
};
var WEBGL_COMPONENT_TYPES = {
5120: Int8Array,
5121: Uint8Array,
5122: Int16Array,
5123: Uint16Array,
5125: Uint32Array,
5126: Float32Array
};
var WEBGL_FILTERS = {
9728: [Link],
9729: [Link],
9984: [Link],
9985: [Link],
9986: [Link],
9987: [Link]
};
var WEBGL_WRAPPINGS = {
33071: [Link],
33648: [Link],
10497: [Link]
};
var WEBGL_TYPE_SIZES = {
'SCALAR': 1,
'VEC2': 2,
'VEC3': 3,
'VEC4': 4,
'MAT2': 4,
'MAT3': 9,
'MAT4': 16
};
var ATTRIBUTES = {
POSITION: 'position',
NORMAL: 'normal',
TANGENT: 'tangent',
TEXCOORD_0: 'uv',
TEXCOORD_1: 'uv2',
COLOR_0: 'color',
WEIGHTS_0: 'skinWeight',
JOINTS_0: 'skinIndex',
};
var PATH_PROPERTIES = {
scale: 'scale',
translation: 'position',
rotation: 'quaternion',
weights: 'morphTargetInfluences'
};
var INTERPOLATION = {
CUBICSPLINE: undefined, // We use a custom interpolant
(GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each
// keyframe track will be initialized with a
default interpolation type, then modified.
LINEAR: [Link],
STEP: [Link]
};
var ALPHA_MODES = {
OPAQUE: 'OPAQUE',
MASK: 'MASK',
BLEND: 'BLEND'
};
var MIME_TYPE_FORMATS = {
'image/png': [Link],
'image/jpeg': [Link]
};
/* UTILITY FUNCTIONS */
// Invalid URL
if ( typeof url !== 'string' || url === '' ) return '';
// Data URI
if ( /^data:.*,.*$/[Link]( url ) ) return url;
// Blob URL
if ( /^blob:.*$/[Link]( url ) ) return url;
// Relative URL
return path + url;
/**
* Specification:
[Link]
t-material
*/
function createDefaultMaterial( cache ) {
[Link] =
[Link] || {};
[Link][ name ] =
[Link][ name ];
}
}
/**
* @param {THREE.Object3D|[Link]|[Link]} object
* @param {[Link]} gltfDef
*/
function assignExtrasToUserData( object, gltfDef ) {
} else {
/**
* Specification:
[Link]
targets
*
* @param {[Link]} geometry
* @param {Array<[Link]>} targets
* @param {GLTFParser} parser
* @return {Promise<[Link]>}
*/
function addMorphTargets( geometry, targets, parser ) {
if ( hasMorphPosition ) {
[Link]( pendingAccessor );
if ( hasMorphNormal ) {
[Link]( pendingAccessor );
return [Link]( [
[Link]( pendingPositionAccessors ),
[Link]( pendingNormalAccessors )
] ).then( function ( accessors ) {
if ( hasMorphPosition ) [Link] =
morphPositions;
if ( hasMorphNormal ) [Link] =
morphNormals;
[Link] = true;
return geometry;
} );
/**
* @param {[Link]} mesh
* @param {[Link]} meshDef
*/
function updateMorphTargets( mesh, meshDef ) {
[Link]();
[Link] = {};
[Link][ targetNames[ i ] ] = i;
} else {
if ( dracoExtension ) {
} else {
return geometryKey;
return attributesKey;
/* GLTF PARSER */
// BufferGeometry caching
[Link] = {};
[Link] = new
[Link]( [Link] );
} else {
[Link] = new
[Link]( [Link] );
[Link]( [Link] );
[Link]( true );
}
}
[Link] = extensions;
};
[Link] = plugins;
};
[Link]( [
[Link]( 'scene' ),
[Link]( 'animation' ),
[Link]( 'camera' ),
var result = {
scene: dependencies[ 0 ][ [Link] || 0 ],
scenes: dependencies[ 0 ],
animations: dependencies[ 1 ],
cameras: dependencies[ 2 ],
asset: [Link],
parser: parser,
userData: {}
};
onLoad( result );
} ).catch( onError );
};
/**
* Marks the special nodes/meshes in json for efficient parse.
*/
[Link] = function () {
var nodeDefs = [Link] || [];
var skinDefs = [Link] || [];
var meshDefs = [Link] || [];
meshReferences[ [Link] ] =
meshUses[ [Link] ] = 0;
[Link] = meshReferences;
[Link] = meshUses;
};
};
};
/**
* Requests the specified dependency asynchronously, with caching.
* @param {string} type
* @param {number} index
* @return {Promise<THREE.Object3D|[Link]|[Link]|
[Link]|ArrayBuffer|Object>}
*/
[Link] = function ( type, index ) {
if ( ! dependency ) {
switch ( type ) {
case 'scene':
dependency = [Link]( index );
break;
case 'node':
dependency = [Link]( index );
break;
case 'mesh':
dependency = this._invokeOne( function ( ext ) {
} );
break;
case 'accessor':
dependency = [Link]( index );
break;
case 'bufferView':
dependency = this._invokeOne( function ( ext ) {
} );
break;
case 'buffer':
dependency = [Link]( index );
break;
case 'material':
dependency = this._invokeOne( function ( ext ) {
} );
break;
case 'texture':
dependency = [Link]( index );
break;
case 'skin':
dependency = [Link]( index );
break;
case 'animation':
dependency = [Link]( index );
break;
case 'camera':
dependency = [Link]( index );
break;
case 'light':
dependency =
[Link][ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index );
break;
default:
throw new Error( 'Unknown type: ' + type );
}
[Link]( cacheKey, dependency );
return dependency;
};
/**
* Requests all dependencies of the specified type asynchronously, with
caching.
* @param {string} type
* @return {Promise<Array<Object>>}
*/
[Link] = function ( type ) {
if ( ! dependencies ) {
} ) );
return dependencies;
};
/**
* Specification:
[Link]
s-and-buffer-views
* @param {number} bufferIndex
* @return {Promise<ArrayBuffer>}
*/
[Link] = function ( bufferIndex ) {
return
[Link]( [Link][ EXTENSIONS.KHR_BINARY_GLTF ].body );
} );
} );
};
/**
* Specification:
[Link]
s-and-buffer-views
* @param {number} bufferViewIndex
* @return {Promise<ArrayBuffer>}
*/
[Link] = function ( bufferViewIndex ) {
} );
};
/**
* Specification:
[Link]
ors
* @param {number} accessorIndex
* @return {Promise<[Link]|[Link]>}
*/
[Link] = function ( accessorIndex ) {
} else {
[Link]( null );
if ( ! ib ) {
[Link]( ibCacheKey, ib );
} else {
} else {
//
[Link]
-accessors
if ( [Link] !== undefined ) {
var byteOffsetIndices =
[Link] || 0;
var byteOffsetValues = [Link]
|| 0;
return bufferAttribute;
} );
};
/**
* Specification:
[Link]
* @param {number} textureIndex
* @return {Promise<[Link]>}
*/
[Link] = function ( textureIndex ) {
var source;
if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {
source =
[Link][ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];
} else {
isObjectURL = true;
var blob = new Blob( [ bufferView ], { type:
[Link] } );
sourceURI = [Link]( blob );
return sourceURI;
} );
if ( ! loader ) {
};
}
} );
[Link]( sourceURI );
[Link] = false;
[Link]( texture, {
type: 'textures',
index: textureIndex
} );
return texture;
} );
};
/**
* Asynchronously assigns a texture to the given material parameters.
* @param {Object} materialParams
* @param {string} mapName
* @param {Object} mapDef
* @return {Promise}
*/
[Link] = function ( materialParams, mapName,
mapDef ) {
if ( ! [Link] ) {
switch ( mapName ) {
case 'aoMap':
case 'emissiveMap':
case 'metalnessMap':
case 'normalMap':
case 'roughnessMap':
[Link] = [Link];
break;
if ( [Link][ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {
if ( transform ) {
var gltfReference =
[Link]( texture );
texture =
[Link][ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture,
transform );
[Link]( texture, gltfReference );
} );
};
/**
* Assigns final material to a Mesh, Line, or Points instance. The instance
* already has a material (generated from the glTF material options alone)
* but reuse of the same glTF material may require multiple threejs materials
* to accomodate different primitive types, defines, etc. New materials will
* be created if necessary, and reused from a cache.
* @param {THREE.Object3D} mesh Mesh, Line, or Points instance.
*/
[Link] = function ( mesh ) {
if ( [Link] ) {
if ( ! pointsMaterial ) {
material = pointsMaterial;
} else if ( [Link] ) {
if ( ! lineMaterial ) {
material = lineMaterial;
if ( [Link] ) cacheKey +=
'specular-glossiness:';
if ( useSkinning ) cacheKey += 'skinning:';
if ( useVertexTangents ) cacheKey += 'vertex-tangents:';
if ( useVertexColors ) cacheKey += 'vertex-colors:';
if ( useFlatShading ) cacheKey += 'flat-shading:';
if ( useMorphTargets ) cacheKey += 'morph-targets:';
if ( useMorphNormals ) cacheKey += 'morph-normals:';
if ( ! cachedMaterial ) {
cachedMaterial = [Link]();
[Link]( cachedMaterial,
[Link]( material ) );
material = cachedMaterial;
// [Link]
507003995
if ( [Link] && ! useVertexTangents ) {
[Link].y = - [Link].y;
[Link].y = -
[Link].y;
[Link] = material;
};
return [Link];
};
/**
* Specification:
[Link]
als
* @param {number} materialIndex
* @return {Promise<[Link]>}
*/
[Link] = function ( materialIndex ) {
var materialType;
var materialParams = {};
var materialExtensions = [Link] || {};
if
( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {
var sgExtension =
extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];
materialType = [Link]();
[Link]( [Link]( materialParams,
materialDef, parser ) );
} else {
// Specification:
//
[Link]
roughness-material
if ( [Link]( [Link] ) ) {
[Link]( array );
[Link] = array[ 3 ];
} );
} ) );
[Link] = [Link];
}
[Link] = true;
// See: [Link]
[Link] = false;
} else {
[Link] = false;
[Link]( [Link],
[Link] );
[Link] =
[Link];
[Link] = new
[Link]().fromArray( [Link] );
var material;
material =
extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( mate
rialParams );
} else {
if ( [Link] )
addUnknownExtensionsToUserData( extensions, material, materialDef );
return material;
} );
};
/**
* @param {[Link]} geometry
* @param {[Link]} primitiveDef
* @param {GLTFParser} parser
*/
function computeBounds( geometry, primitiveDef, parser ) {
var attributes = [Link];
// glTF requires 'min' and 'max', but VRM (which extends glTF)
currently ignores that requirement.
[Link](
new THREE.Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),
new THREE.Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );
} else {
return;
} else {
return;
} else {
[Link] = box;
[Link]( [Link] );
[Link] = [Link]( [Link] ) / 2;
[Link] = sphere;
/**
* @param {[Link]} geometry
* @param {[Link]} primitiveDef
* @param {GLTFParser} parser
* @return {Promise<[Link]>}
*/
function addPrimitiveAttributes( geometry, primitiveDef, parser ) {
} );
[Link]( accessor );
} );
[Link]( accessor );
} );
/**
* @param {[Link]} geometry
* @param {Number} drawMode
* @return {[Link]}
*/
function toTrianglesDrawMode( geometry, drawMode ) {
var index = [Link]();
[Link]( i );
[Link]( indices );
index = [Link]();
} else {
[Link]( '[Link]():
Undefined position attribute. Processing not possible.' );
return geometry;
//
// gl.TRIANGLE_FAN
[Link]( [Link]( 0 ) );
[Link]( [Link]( i ) );
[Link]( [Link]( i + 1 ) );
} else {
// gl.TRIANGLE_STRIP
if ( i % 2 === 0 ) {
[Link]( [Link]( i ) );
[Link]( [Link]( i + 1 ) );
[Link]( [Link]( i + 2 ) );
} else {
[Link]( [Link]( i + 2 ) );
[Link]( [Link]( i + 1 ) );
[Link]( [Link]( i ) );
return newGeometry;
/**
* Specification:
[Link]
ry
*
* Creates BufferGeometries from primitives.
*
* @param {Array<[Link]>} primitives
* @return {Promise<Array<[Link]>>}
*/
[Link] = function ( primitives ) {
} );
}
var pending = [];
if ( cached ) {
} else {
var geometryPromise;
if ( [Link] &&
[Link][ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {
} else {
[Link]( geometryPromise );
};
/**
* Specification:
[Link]
* @param {number} meshIndex
* @return {Promise<[Link]|[Link]|[Link]>}
*/
[Link] = function ( meshIndex ) {
[Link]( material );
// 1. create Mesh
var mesh;
if ( [Link] ===
WEBGL_CONSTANTS.TRIANGLE_STRIP ) {
[Link] =
toTrianglesDrawMode( [Link], [Link] );
[Link] =
toTrianglesDrawMode( [Link], [Link] );
} else {
[Link]( mesh );
[Link]( mesh );
if ( [Link] === 1 ) {
return meshes[ 0 ];
}
[Link]( meshes[ i ] );
return group;
} );
};
/**
* Specification:
[Link]
* @param {number} cameraIndex
* @return {Promise<[Link]>}
*/
[Link] = function ( cameraIndex ) {
var camera;
var cameraDef = [Link][ cameraIndex ];
var params = cameraDef[ [Link] ];
if ( ! params ) {
camera = new
[Link]( [Link]( [Link] ),
[Link] || 1, [Link] || 1, [Link] || 2e6 );
};
/**
* Specification:
[Link]
* @param {number} skinIndex
* @return {Promise<Object>}
*/
[Link] = function ( skinIndex ) {
[Link] = accessor;
return skinEntry;
} );
};
/**
* Specification:
[Link]
* @param {number} animationIndex
* @return {Promise<[Link]>}
*/
[Link] = function ( animationIndex ) {
return [Link]( [
[Link]( pendingNodes ),
[Link]( pendingInputAccessors ),
[Link]( pendingOutputAccessors ),
[Link]( pendingSamplers ),
[Link]( pendingTargets )
[Link]();
[Link] = true;
var TypedKeyframeTrack;
case PATH_PROPERTIES.weights:
TypedKeyframeTrack = [Link];
break;
case PATH_PROPERTIES.rotation:
TypedKeyframeTrack =
[Link];
break;
case PATH_PROPERTIES.position:
case PATH_PROPERTIES.scale:
default:
TypedKeyframeTrack = [Link];
break;
}
[Link]( [Link] ?
[Link] : [Link] );
} );
} else {
[Link]( targetName );
if ( [Link] ) {
var scale;
scale = 1 / 127;
scale = 1 / 255;
scale = 1 / 32767;
scale = 1 / 65535;
} else {
throw new Error( '[Link]: Unsupported
output accessor component type.' );
outputArray = scaled;
[Link] = function
InterpolantFactoryMethodGLTFCubicSpline( result ) {
return new
GLTFCubicSplineInterpolant( [Link], [Link], [Link]() / 3,
result );
};
// Mark as CUBICSPLINE.
`[Link]()` doesn't support custom interpolants.
[Link] = true;
[Link]( track );
}
var name = [Link] ? [Link] : 'animation_' +
animationIndex;
} );
};
/**
* Specification:
[Link]
hierarchy
* @param {number} nodeIndex
* @return {Promise<THREE.Object3D>}
*/
[Link] = function ( nodeIndex ) {
return ( function () {
var node;
node = [Link]();
[Link] += '_instance_' + instanceNum;
} else {
node = mesh;
[Link]( function ( o ) {
if ( ! [Link] ) return;
for ( var i = 0, il =
[Link]; i < il; i ++ ) {
[Link][ i ] =
[Link][ i ];
} );
return node;
} ) );
if ( [Link]
&& [Link][ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]
&&
[Link][ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {
var node;
node = objects[ 0 ];
} else {
[Link]( objects[ i ] );
if ( [Link] ) {
[Link] = [Link];
[Link] =
[Link]( [Link] );
if ( [Link] )
addUnknownExtensionsToUserData( extensions, node, nodeDef );
} else {
[Link]( [Link] );
[Link]( [Link] );
[Link]( [Link] );
return node;
} );
};
/**
* Specification:
[Link]
* @param {number} sceneIndex
* @return {Promise<[Link]>}
*/
[Link] = function () {
var skinEntry;
skinEntry = skin;
if ( ! [Link] ) return;
if ( jointNode ) {
[Link]( jointNode );
if
( [Link] !== undefined ) {
[Link]( [Link], j * 16 );
[Link]( mat );
} else {
[Link]( '[Link]:
Joint "%s" could not be found.', [Link][ j ] );
} );
return node;
} );
[Link]( node );
if ( [Link] ) {
} );
}
if ( [Link] )
addUnknownExtensionsToUserData( extensions, scene, sceneDef );
return scene;
} );
};
}();
return GLTFLoader;
} )();