{“ast”:null,“code”:“// raw.githubusercontent.com/mrdoob/three.js/master/examples/jsm/loaders/ColladaLoader.jsnn/**n * @author mrdoob / mrdoob.com/n * @author Mugen87 / github.com/Mugen87n */nimport { AmbientLight, AnimationClip, Bone, BufferGeometry, ClampToEdgeWrapping, Color, DefaultLoadingManager, DirectionalLight, DoubleSide, Euler, FileLoader, Float32BufferAttribute, Group, Line, LineBasicMaterial, LineSegments, LoaderUtils, Math as _Math, Matrix4, Mesh, MeshBasicMaterial, MeshLambertMaterial, MeshPhongMaterial, OrthographicCamera, PerspectiveCamera, PointLight, Quaternion, QuaternionKeyframeTrack, RepeatWrapping, Scene, Skeleton, SkinnedMesh, SpotLight, TextureLoader, Vector3, VectorKeyframeTrack } from "three";nimport { TGALoader } from "../loaders/TGALoader.js";nnvar ColladaLoader = function ColladaLoader(manager) {n this.manager = manager !== undefined ? manager : DefaultLoadingManager;n};nnColladaLoader.prototype = {n constructor: ColladaLoader,n crossOrigin: 'anonymous',n load: function load(url, onLoad, onProgress, onError) {n var scope = this;n var path = scope.path === undefined ? LoaderUtils.extractUrlBase(url) : scope.path;n var loader = new FileLoader(scope.manager);n loader.setPath(scope.path);n loader.load(url, function (text) {n onLoad(scope.parse(text, path));n }, onProgress, onError);n },n setPath: function setPath(value) {n this.path = value;n return this;n },n setResourcePath: function setResourcePath(value) {n this.resourcePath = value;n return this;n },n options: {n set convertUpAxis(value) {n console.warn('THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.');n }nn },n setCrossOrigin: function setCrossOrigin(value) {n this.crossOrigin = value;n return this;n },n parse: function parse(text, path) {n function getElementsByTagName(xml, name) {n // Non recursive xml.getElementsByTagName() …n var array = [];n var childNodes = xml.childNodes;nn for (var i = 0, l = childNodes.length; i < l; i++) {n var child = childNodes;nn if (child.nodeName === name) {n array.push(child);n }n }nn return array;n }nn function parseStrings(text) {n if (text.length === 0) return [];n var parts = text.trim().split(/\s+/);n var array = new Array(parts.length);nn for (var i = 0, l = parts.length; i < l; i++) {n array = parts;n }nn return array;n }nn function parseFloats(text) {n if (text.length === 0) return [];n var parts = text.trim().split(/\s+/);n var array = new Array(parts.length);nn for (var i = 0, l = parts.length; i < l; i++) {n array = parseFloat(parts);n }nn return array;n }nn function parseInts(text) {n if (text.length === 0) return [];n var parts = text.trim().split(/\s+/);n var array = new Array(parts.length);nn for (var i = 0, l = parts.length; i < l; i++) {n array = parseInt(parts);n }nn return array;n }nn function parseId(text) {n return text.substring(1);n }nn function generateId() {n return 'three_default_' + count++;n }nn function isEmpty(object) {n return Object.keys(object).length === 0;n } // assetnnn function parseAsset(xml) {n return {n unit: parseAssetUnit(getElementsByTagName(xml, 'unit’)),n upAxis: parseAssetUpAxis(getElementsByTagName(xml, 'up_axis’))n };n }nn function parseAssetUnit(xml) {n if (xml !== undefined && xml.hasAttribute('meter') === true) {n return parseFloat(xml.getAttribute('meter'));n } else {n return 1; // default 1 metern }n }nn function parseAssetUpAxis(xml) {n return xml !== undefined ? xml.textContent : 'Y_UP';n } // librarynnn function parseLibrary(xml, libraryName, nodeName, parser) {n var library = getElementsByTagName(xml, libraryName);nn if (library !== undefined) {n var elements = getElementsByTagName(library, nodeName);nn for (var i = 0; i < elements.length; i++) {n parser(elements);n }n }n }nn function buildLibrary(data, builder) {n for (var name in data) {n var object = data;n object.build = builder(data);n }n } // getnnn function getBuild(data, builder) {n if (data.build !== undefined) return data.build;n data.build = builder(data);n return data.build;n } // animationnnn function parseAnimation(xml) {n var data = {n sources: {},n samplers: {},n channels: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;n var id;nn switch (child.nodeName) {n case 'source':n id = child.getAttribute('id');n data.sources = parseSource(child);n break;nn case 'sampler':n id = child.getAttribute('id');n data.samplers = parseAnimationSampler(child);n break;nn case 'channel':n id = child.getAttribute('target');n data.channels = parseAnimationChannel(child);n break;nn default:n console.log(child);n }n }nn library.animations = data;n }nn function parseAnimationSampler(xml) {n var data = {n inputs: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'input':n var id = parseId(child.getAttribute('source'));n var semantic = child.getAttribute('semantic');n data.inputs = id;n break;n }n }nn return data;n }nn function parseAnimationChannel(xml) {n var data = {};n var target = xml.getAttribute('target'); // parsing SID Addressing Syntaxnn var parts = target.split('/');n var id = parts.shift();n var sid = parts.shift(); // check selection syntaxnn var arraySyntax = sid.indexOf('(') !== -1;n var memberSyntax = sid.indexOf('.') !== -1;nn if (memberSyntax) {n // member selection accessn parts = sid.split('.');n sid = parts.shift();n data.member = parts.shift();n } else if (arraySyntax) {n // array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.n var indices = sid.split('(');n sid = indices.shift();nn for (var i = 0; i < indices.length; i++) {n indices = parseInt(indices.replace(/\)/, ''));n }nn data.indices = indices;n }nn data.id = id;n data.sid = sid;n data.arraySyntax = arraySyntax;n data.memberSyntax = memberSyntax;n data.sampler = parseId(xml.getAttribute('source'));n return data;n }nn function buildAnimation(data) {n var tracks = [];n var channels = data.channels;n var samplers = data.samplers;n var sources = data.sources;nn for (var target in channels) {n if (channels.hasOwnProperty(target)) {n var channel = channels;n var sampler = samplers;n var inputId = sampler.inputs.INPUT;n var outputId = sampler.inputs.OUTPUT;n var inputSource = sources;n var outputSource = sources;n var animation = buildAnimationChannel(channel, inputSource, outputSource);n createKeyframeTracks(animation, tracks);n }n }nn return tracks;n }nn function getAnimation(id) {n return getBuild(library.animations, buildAnimation);n }nn function buildAnimationChannel(channel, inputSource, outputSource) {n var node = library.nodes;n var object3D = getNode(node.id);n var transform = node.transforms;n var defaultMatrix = node.matrix.clone().transpose();n var time, stride;n var i, il, j, jl;n var data = {}; // the collada spec allows the animation of data in various ways.n // depending on the transform type (matrix, translate, rotate, scale), we execute different logicnn switch (transform) {n case 'matrix':n for (i = 0, il = inputSource.array.length; i < il; i++) {n time = inputSource.array;n stride = i * outputSource.stride;n if (data === undefined) data = {};nn if (channel.arraySyntax === true) {n var value = outputSource.array;n var index = channel.indices + 4 * channel.indices;n data[index] = value;n } else {n for (j = 0, jl = outputSource.stride; j < jl; j++) {n data[j] = outputSource.array[stride + j];n }n }n }nn break;nn case 'translate':n console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform);n break;nn case 'rotate':n console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform);n break;nn case 'scale':n console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform);n break;n }nn var keyframes = prepareAnimationData(data, defaultMatrix);n var animation = {n name: object3D.uuid,n keyframes: keyframesn };n return animation;n }nn function prepareAnimationData(data, defaultMatrix) {n var keyframes = []; // transfer data into a sortable arraynn for (var time in data) {n keyframes.push({n time: parseFloat(time),n value: datan });n } // ensure keyframes are sorted by timennn keyframes.sort(ascending); // now we clean up all animation data, so we can use them for keyframe tracksnn for (var i = 0; i < 16; i++) {n transformAnimationData(keyframes, i, defaultMatrix.elements);n }nn return keyframes; // array sort functionnn function ascending(a, b) {n return a.time - b.time;n }n }nn var position = new Vector3();n var scale = new Vector3();n var quaternion = new Quaternion();nn function createKeyframeTracks(animation, tracks) {n var keyframes = animation.keyframes;n var name = animation.name;n var times = [];n var positionData = [];n var quaternionData = [];n var scaleData = [];nn for (var i = 0, l = keyframes.length; i < l; i++) {n var keyframe = keyframes;n var time = keyframe.time;n var value = keyframe.value;n matrix.fromArray(value).transpose();n matrix.decompose(position, quaternion, scale);n times.push(time);n positionData.push(position.x, position.y, position.z);n quaternionData.push(quaternion.x, quaternion.y, quaternion.z, quaternion.w);n scaleData.push(scale.x, scale.y, scale.z);n }nn if (positionData.length > 0) tracks.push(new VectorKeyframeTrack(name + '.position', times, positionData));n if (quaternionData.length > 0) tracks.push(new QuaternionKeyframeTrack(name + '.quaternion', times, quaternionData));n if (scaleData.length > 0) tracks.push(new VectorKeyframeTrack(name + '.scale', times, scaleData));n return tracks;n }nn function transformAnimationData(keyframes, property, defaultValue) {n var keyframe;n var empty = true;n var i, l; // check, if values of a property are missing in our keyframesnn for (i = 0, l = keyframes.length; i < l; i++) {n keyframe = keyframes;nn if (keyframe.value === undefined) {n keyframe.value = null; // mark as missingn } else {n empty = false;n }n }nn if (empty === true) {n // no values at all, so we set a default valuen for (i = 0, l = keyframes.length; i < l; i++) {n keyframe = keyframes;n keyframe.value = defaultValue;n }n } else {n // filling gapsn createMissingKeyframes(keyframes, property);n }n }nn function createMissingKeyframes(keyframes, property) {n var prev, next;nn for (var i = 0, l = keyframes.length; i < l; i++) {n var keyframe = keyframes;nn if (keyframe.value === null) {n prev = getPrev(keyframes, i, property);n next = getNext(keyframes, i, property);nn if (prev === null) {n keyframe.value = next.value;n continue;n }nn if (next === null) {n keyframe.value = prev.value;n continue;n }nn interpolate(keyframe, prev, next, property);n }n }n }nn function getPrev(keyframes, i, property) {n while (i >= 0) {n var keyframe = keyframes;n if (keyframe.value !== null) return keyframe;n i–;n }nn return null;n }nn function getNext(keyframes, i, property) {n while (i < keyframes.length) {n var keyframe = keyframes;n if (keyframe.value !== null) return keyframe;n i++;n }nn return null;n }nn function interpolate(key, prev, next, property) {n if (next.time - prev.time === 0) {n key.value = prev.value;n return;n }nn key.value = (key.time - prev.time) * (next.value - prev.value) / (next.time - prev.time) + prev.value;n } // animation clipsnnn function parseAnimationClip(xml) {n var data = {n name: xml.getAttribute('id') || 'default',n start: parseFloat(xml.getAttribute('start') || 0),n end: parseFloat(xml.getAttribute('end') || 0),n animations: []n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'instance_animation':n data.animations.push(parseId(child.getAttribute('url')));n break;n }n }nn library.clips = data;n }nn function buildAnimationClip(data) {n var tracks = [];n var name = data.name;n var duration = data.end - data.start || -1;n var animations = data.animations;nn for (var i = 0, il = animations.length; i < il; i++) {n var animationTracks = getAnimation(animations);nn for (var j = 0, jl = animationTracks.length; j < jl; j++) {n tracks.push(animationTracks);n }n }nn return new AnimationClip(name, duration, tracks);n }nn function getAnimationClip(id) {n return getBuild(library.clips, buildAnimationClip);n } // controllernnn function parseController(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'skin':n // there is exactly one skin per controllern data.id = parseId(child.getAttribute('source'));n data.skin = parseSkin(child);n break;nn case 'morph':n data.id = parseId(child.getAttribute('source'));n console.warn('THREE.ColladaLoader: Morph target animation not supported yet.');n break;n }n }nn library.controllers = data;n }nn function parseSkin(xml) {n var data = {n sources: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'bind_shape_matrix':n data.bindShapeMatrix = parseFloats(child.textContent);n break;nn case 'source':n var id = child.getAttribute('id');n data.sources = parseSource(child);n break;nn case 'joints':n data.joints = parseJoints(child);n break;nn case 'vertex_weights':n data.vertexWeights = parseVertexWeights(child);n break;n }n }nn return data;n }nn function parseJoints(xml) {n var data = {n inputs: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'input':n var semantic = child.getAttribute('semantic');n var id = parseId(child.getAttribute('source'));n data.inputs = id;n break;n }n }nn return data;n }nn function parseVertexWeights(xml) {n var data = {n inputs: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'input':n var semantic = child.getAttribute('semantic');n var id = parseId(child.getAttribute('source'));n var offset = parseInt(child.getAttribute('offset'));n data.inputs = {n id: id,n offset: offsetn };n break;nn case 'vcount':n data.vcount = parseInts(child.textContent);n break;nn case 'v':n data.v = parseInts(child.textContent);n break;n }n }nn return data;n }nn function buildController(data) {n var build = {n id: data.idn };n var geometry = library.geometries;nn if (data.skin !== undefined) {n build.skin = buildSkin(data.skin); // we enhance the 'sources' property of the corresponding geometry with our skin datann geometry.sources.skinIndices = build.skin.indices;n geometry.sources.skinWeights = build.skin.weights;n }nn return build;n }nn function buildSkin(data) {n var BONE_LIMIT = 4;n var build = {n joints: [],n // this must be an array to preserve the joint ordern indices: {n array: [],n stride: BONE_LIMITn },n weights: {n array: [],n stride: BONE_LIMITn }n };n var sources = data.sources;n var vertexWeights = data.vertexWeights;n var vcount = vertexWeights.vcount;n var v = vertexWeights.v;n var jointOffset = vertexWeights.inputs.JOINT.offset;n var weightOffset = vertexWeights.inputs.WEIGHT.offset;n var jointSource = data.sources;n var inverseSource = data.sources;n var weights = sources.array;n var stride = 0;n var i, j, l; // procces skin data for each vertexnn for (i = 0, l = vcount.length; i < l; i++) {n var jointCount = vcount; // this is the amount of joints that affect a single vertexnn var vertexSkinData = [];nn for (j = 0; j < jointCount; j++) {n var skinIndex = v[stride + jointOffset];n var weightId = v[stride + weightOffset];n var skinWeight = weights;n vertexSkinData.push({n index: skinIndex,n weight: skinWeightn });n stride += 2;n } // we sort the joints in descending order based on the weights.n // this ensures, we only procced the most important joints of the vertexnnn vertexSkinData.sort(descending); // now we provide for each vertex a set of four index and weight values.n // the order of the skin data matches the order of verticesnn for (j = 0; j < BONE_LIMIT; j++) {n var d = vertexSkinData;nn if (d !== undefined) {n build.indices.array.push(d.index);n build.weights.array.push(d.weight);n } else {n build.indices.array.push(0);n build.weights.array.push(0);n }n }n } // setup bind matrixnnn if (data.bindShapeMatrix) {n build.bindMatrix = new Matrix4().fromArray(data.bindShapeMatrix).transpose();n } else {n build.bindMatrix = new Matrix4().identity();n } // process bones and inverse bind matrix datannn for (i = 0, l = jointSource.array.length; i < l; i++) {n var name = jointSource.array;n var boneInverse = new Matrix4().fromArray(inverseSource.array, i * inverseSource.stride).transpose();n build.joints.push({n name: name,n boneInverse: boneInversen });n }nn return build; // array sort functionnn function descending(a, b) {n return b.weight - a.weight;n }n }nn function getController(id) {n return getBuild(library.controllers, buildController);n } // imagennn function parseImage(xml) {n var data = {n init_from: getElementsByTagName(xml, 'init_from’).textContentn };n library.images = data;n }nn function buildImage(data) {n if (data.build !== undefined) return data.build;n return data.init_from;n }nn function getImage(id) {n var data = library.images;nn if (data !== undefined) {n return getBuild(data, buildImage);n }nn console.warn('THREE.ColladaLoader: Couldn\'t find image with ID:', id);n return null;n } // effectnnn function parseEffect(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'profile_COMMON':n data.profile = parseEffectProfileCOMMON(child);n break;n }n }nn library.effects = data;n }nn function parseEffectProfileCOMMON(xml) {n var data = {n surfaces: {},n samplers: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'newparam':n parseEffectNewparam(child, data);n break;nn case 'technique':n data.technique = parseEffectTechnique(child);n break;nn case 'extra':n data.extra = parseEffectExtra(child);n break;n }n }nn return data;n }nn function parseEffectNewparam(xml, data) {n var sid = xml.getAttribute('sid');nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'surface':n data.surfaces = parseEffectSurface(child);n break;nn case 'sampler2D':n data.samplers = parseEffectSampler(child);n break;n }n }n }nn function parseEffectSurface(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'init_from':n data.init_from = child.textContent;n break;n }n }nn return data;n }nn function parseEffectSampler(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'source':n data.source = child.textContent;n break;n }n }nn return data;n }nn function parseEffectTechnique(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'constant':n case 'lambert':n case 'blinn':n case 'phong':n data.type = child.nodeName;n data.parameters = parseEffectParameters(child);n break;n }n }nn return data;n }nn function parseEffectParameters(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'emission':n case 'diffuse':n case 'specular':n case 'bump':n case 'ambient':n case 'shininess':n case 'transparency':n data = parseEffectParameter(child);n break;nn case 'transparent':n data = {n opaque: child.getAttribute('opaque'),n data: parseEffectParameter(child)n };n break;n }n }nn return data;n }nn function parseEffectParameter(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'color':n data = parseFloats(child.textContent);n break;nn case 'float':n data = parseFloat(child.textContent);n break;nn case 'texture':n data = {n id: child.getAttribute('texture'),n extra: parseEffectParameterTexture(child)n };n break;n }n }nn return data;n }nn function parseEffectParameterTexture(xml) {n var data = {n technique: {}n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'extra':n parseEffectParameterTextureExtra(child, data);n break;n }n }nn return data;n }nn function parseEffectParameterTextureExtra(xml, data) {n for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'technique':n parseEffectParameterTextureExtraTechnique(child, data);n break;n }n }n }nn function parseEffectParameterTextureExtraTechnique(xml, data) {n for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'repeatU':n case 'repeatV':n case 'offsetU':n case 'offsetV':n data.technique = parseFloat(child.textContent);n break;nn case 'wrapU':n case 'wrapV':n // some files have values for wrapU/wrapV which become NaN via parseIntn if (child.textContent.toUpperCase() === 'TRUE') {n data.technique = 1;n } else if (child.textContent.toUpperCase() === 'FALSE') {n data.technique = 0;n } else {n data.technique = parseInt(child.textContent);n }nn break;n }n }n }nn function parseEffectExtra(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'technique':n data.technique = parseEffectExtraTechnique(child);n break;n }n }nn return data;n }nn function parseEffectExtraTechnique(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'double_sided':n data = parseInt(child.textContent);n break;n }n }nn return data;n }nn function buildEffect(data) {n return data;n }nn function getEffect(id) {n return getBuild(library.effects, buildEffect);n } // materialnnn function parseMaterial(xml) {n var data = {n name: xml.getAttribute('name')n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'instance_effect':n data.url = parseId(child.getAttribute('url'));n break;n }n }nn library.materials = data;n }nn function getTextureLoader(image) {n var loader;n var extension = image.slice((image.lastIndexOf('.') - 1 >>> 0) + 2); // www.jstips.co/en/javascript/get-file-extension/nn extension = extension.toLowerCase();nn switch (extension) {n case 'tga':n loader = tgaLoader;n break;nn default:n loader = textureLoader;n }nn return loader;n }nn function buildMaterial(data) {n var effect = getEffect(data.url);n var technique = effect.profile.technique;n var extra = effect.profile.extra;n var material;nn switch (technique.type) {n case 'phong':n case 'blinn':n material = new MeshPhongMaterial();n break;nn case 'lambert':n material = new MeshLambertMaterial();n break;nn default:n material = new MeshBasicMaterial();n break;n }nn material.name = data.name || '';nn function getTexture(textureObject) {n var sampler = effect.profile.samplers;n var image = null; // get imagenn if (sampler !== undefined) {n var surface = effect.profile.surfaces;n image = getImage(surface.init_from);n } else {n console.warn('THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).');n image = getImage(textureObject.id);n } // create texture if image is avaiablennn if (image !== null) {n var loader = getTextureLoader(image);nn if (loader !== undefined) {n var texture = loader.load(image);n var extra = textureObject.extra;nn if (extra !== undefined && extra.technique !== undefined && isEmpty(extra.technique) === false) {n var technique = extra.technique;n texture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;n texture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;n texture.offset.set(technique.offsetU || 0, technique.offsetV || 0);n texture.repeat.set(technique.repeatU || 1, technique.repeatV || 1);n } else {n texture.wrapS = RepeatWrapping;n texture.wrapT = RepeatWrapping;n }nn return texture;n } else {n console.warn('THREE.ColladaLoader: Loader for texture %s not found.', image);n return null;n }n } else {n console.warn('THREE.ColladaLoader: Couldn\'t create texture with ID:', textureObject.id);n return null;n }n }nn var parameters = technique.parameters;nn for (var key in parameters) {n var parameter = parameters;nn switch (key) {n case 'diffuse':n if (parameter.color) material.color.fromArray(parameter.color);n if (parameter.texture) material.map = getTexture(parameter.texture);n break;nn case 'specular':n if (parameter.color && material.specular) material.specular.fromArray(parameter.color);n if (parameter.texture) material.specularMap = getTexture(parameter.texture);n break;nn case 'bump':n if (parameter.texture) material.normalMap = getTexture(parameter.texture);n break;nn case 'ambient':n if (parameter.texture) material.lightMap = getTexture(parameter.texture);n break;nn case 'shininess':n if (parameter && material.shininess) material.shininess = parameter;n break;nn case 'emission':n if (parameter.color && material.emissive) material.emissive.fromArray(parameter.color);n if (parameter.texture) material.emissiveMap = getTexture(parameter.texture);n break;n }n } //nnn var transparent = parameters;n var transparency = parameters; // <transparency> does not exist but <transparent>nn if (transparency === undefined && transparent) {n transparency = {n "float": 1n };n } // <transparent> does not exist but <transparency>nnn if (transparent === undefined && transparency) {n transparent = {n opaque: 'A_ONE',n data: {n color: [1, 1, 1, 1]n }n };n }nn if (transparent && transparency) {n // handle case if a texture exists but no colorn if (transparent.data.texture) {n // we do not set an alpha map (see #13792)n material.transparent = true;n } else {n var color = transparent.data.color;nn switch (transparent.opaque) {n case 'A_ONE':n material.opacity = color * transparency;n break;nn case 'RGB_ZERO':n material.opacity = 1 - color * transparency;n break;nn case 'A_ZERO':n material.opacity = 1 - color * transparency;n break;nn case 'RGB_ONE':n material.opacity = color * transparency;n break;nn default:n console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.', transparent.opaque);n }nn if (material.opacity < 1) material.transparent = true;n }n } //nnn if (extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1) {n material.side = DoubleSide;n }nn return material;n }nn function getMaterial(id) {n return getBuild(library.materials, buildMaterial);n } // camerannn function parseCamera(xml) {n var data = {n name: xml.getAttribute('name')n };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'optics':n data.optics = parseCameraOptics(child);n break;n }n }nn library.cameras = data;n }nn function parseCameraOptics(xml) {n for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;nn switch (child.nodeName) {n case 'technique_common':n return parseCameraTechnique(child);n }n }nn return {};n }nn function parseCameraTechnique(xml) {n var data = {};nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;nn switch (child.nodeName) {n case 'perspective':n case 'orthographic':n data.technique = child.nodeName;n data.parameters = parseCameraParameters(child);n break;n }n }nn return data;n }nn function parseCameraParameters(xml) {n var data = {};nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;nn switch (child.nodeName) {n case 'xfov':n case 'yfov':n case 'xmag':n case 'ymag':n case 'znear':n case 'zfar':n case 'aspect_ratio':n data = parseFloat(child.textContent);n break;n }n }nn return data;n }nn function buildCamera(data) {n var camera;nn switch (data.optics.technique) {n case 'perspective':n camera = new PerspectiveCamera(data.optics.parameters.yfov, data.optics.parameters.aspect_ratio, data.optics.parameters.znear, data.optics.parameters.zfar);n break;nn case 'orthographic':n var ymag = data.optics.parameters.ymag;n var xmag = data.optics.parameters.xmag;n var aspectRatio = data.optics.parameters.aspect_ratio;n xmag = xmag === undefined ? ymag * aspectRatio : xmag;n ymag = ymag === undefined ? xmag / aspectRatio : ymag;n xmag *= 0.5;n ymag *= 0.5;n camera = new OrthographicCamera(-xmag, xmag, ymag, -ymag, // left, right, top, bottomn data.optics.parameters.znear, data.optics.parameters.zfar);n break;nn default:n camera = new PerspectiveCamera();n break;n }nn camera.name = data.name || '';n return camera;n }nn function getCamera(id) {n var data = library.cameras;nn if (data !== undefined) {n return getBuild(data, buildCamera);n }nn console.warn('THREE.ColladaLoader: Couldn\'t find camera with ID:', id);n return null;n } // lightnnn function parseLight(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'technique_common':n data = parseLightTechnique(child);n break;n }n }nn library.lights = data;n }nn function parseLightTechnique(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'directional':n case 'point':n case 'spot':n case 'ambient':n data.technique = child.nodeName;n data.parameters = parseLightParameters(child);n }n }nn return data;n }nn function parseLightParameters(xml) {n var data = {};nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'color':n var array = parseFloats(child.textContent);n data.color = new Color().fromArray(array);n break;nn case 'falloff_angle':n data.falloffAngle = parseFloat(child.textContent);n break;nn case 'quadratic_attenuation':n var f = parseFloat(child.textContent);n data.distance = f ? Math.sqrt(1 / f) : 0;n break;n }n }nn return data;n }nn function buildLight(data) {n var light;nn switch (data.technique) {n case 'directional':n light = new DirectionalLight();n break;nn case 'point':n light = new PointLight();n break;nn case 'spot':n light = new SpotLight();n break;nn case 'ambient':n light = new AmbientLight();n break;n }nn if (data.parameters.color) light.color.copy(data.parameters.color);n if (data.parameters.distance) light.distance = data.parameters.distance;n return light;n }nn function getLight(id) {n var data = library.lights;nn if (data !== undefined) {n return getBuild(data, buildLight);n }nn console.warn('THREE.ColladaLoader: Couldn\'t find light with ID:', id);n return null;n } // geometrynnn function parseGeometry(xml) {n var data = {n name: xml.getAttribute('name'),n sources: {},n vertices: {},n primitives: []n };n var mesh = getElementsByTagName(xml, 'mesh’); // the following tags inside geometry are not supported yet (see github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brepnn if (mesh === undefined) return;nn for (var i = 0; i < mesh.childNodes.length; i++) {n var child = mesh.childNodes;n if (child.nodeType !== 1) continue;n var id = child.getAttribute('id');nn switch (child.nodeName) {n case 'source':n data.sources = parseSource(child);n break;nn case 'vertices':n // data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];n data.vertices = parseGeometryVertices(child);n break;nn case 'polygons':n console.warn('THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName);n break;nn case 'lines':n case 'linestrips':n case 'polylist':n case 'triangles':n data.primitives.push(parseGeometryPrimitive(child));n break;nn default:n console.log(child);n }n }nn library.geometries = data;n }nn function parseSource(xml) {n var data = {n array: [],n stride: 3n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'float_array':n data.array = parseFloats(child.textContent);n break;nn case 'Name_array':n data.array = parseStrings(child.textContent);n break;nn case 'technique_common':n var accessor = getElementsByTagName(child, 'accessor’);nn if (accessor !== undefined) {n data.stride = parseInt(accessor.getAttribute('stride'));n }nn break;n }n }nn return data;n }nn function parseGeometryVertices(xml) {n var data = {};nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;n data = parseId(child.getAttribute('source'));n }nn return data;n }nn function parseGeometryPrimitive(xml) {n var primitive = {n type: xml.nodeName,n material: xml.getAttribute('material'),n count: parseInt(xml.getAttribute('count')),n inputs: {},n stride: 0,n hasUV: falsen };nn for (var i = 0, l = xml.childNodes.length; i < l; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'input':n var id = parseId(child.getAttribute('source'));n var semantic = child.getAttribute('semantic');n var offset = parseInt(child.getAttribute('offset'));n var set = parseInt(child.getAttribute('set'));n var inputname = set > 0 ? semantic + set : semantic;n primitive.inputs = {n id: id,n offset: offsetn };n primitive.stride = Math.max(primitive.stride, offset + 1);n if (semantic === 'TEXCOORD') primitive.hasUV = true;n break;nn case 'vcount':n primitive.vcount = parseInts(child.textContent);n break;nn case 'p':n primitive.p = parseInts(child.textContent);n break;n }n }nn return primitive;n }nn function groupPrimitives(primitives) {n var build = {};nn for (var i = 0; i < primitives.length; i++) {n var primitive = primitives;n if (build === undefined) build = [];n build.push(primitive);n }nn return build;n }nn function checkUVCoordinates(primitives) {n var count = 0;nn for (var i = 0, l = primitives.length; i < l; i++) {n var primitive = primitives;nn if (primitive.hasUV === true) {n count++;n }n }nn if (count > 0 && count < primitives.length) {n primitives.uvsNeedsFix = true;n }n }nn function buildGeometry(data) {n var build = {};n var sources = data.sources;n var vertices = data.vertices;n var primitives = data.primitives;n if (primitives.length === 0) return {}; // our goal is to create one buffer geometry for a single type of primitivesn // first, we group all primitives by their typenn var groupedPrimitives = groupPrimitives(primitives);nn for (var type in groupedPrimitives) {n var primitiveType = groupedPrimitives; // second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)nn checkUVCoordinates(primitiveType); // third, create a buffer geometry for each type of primitivesnn build = buildGeometryType(primitiveType, sources, vertices);n }nn return build;n }nn function buildGeometryType(primitives, sources, vertices) {n var build = {};n var position = {n array: [],n stride: 0n };n var normal = {n array: [],n stride: 0n };n var uv = {n array: [],n stride: 0n };n var uv2 = {n array: [],n stride: 0n };n var color = {n array: [],n stride: 0n };n var skinIndex = {n array: [],n stride: 4n };n var skinWeight = {n array: [],n stride: 4n };n var geometry = new BufferGeometry();n var materialKeys = [];n var start = 0;nn for (var p = 0; p < primitives.length; p++) {n var primitive = primitives;n var inputs = primitive.inputs; // groupsnn var count = 0;nn switch (primitive.type) {n case 'lines':n case 'linestrips':n count = primitive.count * 2;n break;nn case 'triangles':n count = primitive.count * 3;n break;nn case 'polylist':n for (var g = 0; g < primitive.count; g++) {n var vc = primitive.vcount;nn switch (vc) {n case 3:n count += 3; // single trianglenn break;nn case 4:n count += 6; // quad, subdivided into two trianglesnn break;nn default:n count += (vc - 2) * 3; // polylist with more than four verticesnn break;n }n }nn break;nn default:n console.warn('THREE.ColladaLoader: Unknow primitive type:', primitive.type);n }nn geometry.addGroup(start, count, p);n start += count; // materialnn if (primitive.material) {n materialKeys.push(primitive.material);n } // geometry datannn for (var name in inputs) {n var input = inputs;nn switch (name) {n case 'VERTEX':n for (var key in vertices) {n var id = vertices;nn switch (key) {n case 'POSITION':n var prevLength = position.array.length;n buildGeometryData(primitive, sources, input.offset, position.array);n position.stride = sources.stride;nn if (sources.skinWeights && sources.skinIndices) {n buildGeometryData(primitive, sources.skinIndices, input.offset, skinIndex.array);n buildGeometryData(primitive, sources.skinWeights, input.offset, skinWeight.array);n } // see #3803nnn if (primitive.hasUV === false && primitives.uvsNeedsFix === true) {n var count = (position.array.length - prevLength) / position.stride;nn for (var i = 0; i < count; i++) {n // fill missing uv coordinatesn uv.array.push(0, 0);n }n }nn break;nn case 'NORMAL':n buildGeometryData(primitive, sources, input.offset, normal.array);n normal.stride = sources.stride;n break;nn case 'COLOR':n buildGeometryData(primitive, sources, input.offset, color.array);n color.stride = sources.stride;n break;nn case 'TEXCOORD':n buildGeometryData(primitive, sources, input.offset, uv.array);n uv.stride = sources.stride;n break;nn case 'TEXCOORD1':n buildGeometryData(primitive, sources, input.offset, uv2.array);n uv.stride = sources.stride;n break;nn default:n console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', key);n }n }nn break;nn case 'NORMAL':n buildGeometryData(primitive, sources, input.offset, normal.array);n normal.stride = sources.stride;n break;nn case 'COLOR':n buildGeometryData(primitive, sources, input.offset, color.array);n color.stride = sources.stride;n break;nn case 'TEXCOORD':n buildGeometryData(primitive, sources, input.offset, uv.array);n uv.stride = sources.stride;n break;nn case 'TEXCOORD1':n buildGeometryData(primitive, sources, input.offset, uv2.array);n uv2.stride = sources.stride;n break;n }n }n } // build geometrynnn if (position.array.length > 0) geometry.addAttribute('position', new Float32BufferAttribute(position.array, position.stride));n if (normal.array.length > 0) geometry.addAttribute('normal', new Float32BufferAttribute(normal.array, normal.stride));n if (color.array.length > 0) geometry.addAttribute('color', new Float32BufferAttribute(color.array, color.stride));n if (uv.array.length > 0) geometry.addAttribute('uv', new Float32BufferAttribute(uv.array, uv.stride));n if (uv2.array.length > 0) geometry.addAttribute('uv2', new Float32BufferAttribute(uv2.array, uv2.stride));n if (skinIndex.array.length > 0) geometry.addAttribute('skinIndex', new Float32BufferAttribute(skinIndex.array, skinIndex.stride));n if (skinWeight.array.length > 0) geometry.addAttribute('skinWeight', new Float32BufferAttribute(skinWeight.array, skinWeight.stride));n build.data = geometry;n build.type = primitives.type;n build.materialKeys = materialKeys;n return build;n }nn function buildGeometryData(primitive, source, offset, array) {n var indices = primitive.p;n var stride = primitive.stride;n var vcount = primitive.vcount;nn function pushVector(i) {n var index = indices[i + offset] * sourceStride;n var length = index + sourceStride;nn for (; index < length; index++) {n array.push(sourceArray);n }n }nn var sourceArray = source.array;n var sourceStride = source.stride;nn if (primitive.vcount !== undefined) {n var index = 0;nn for (var i = 0, l = vcount.length; i < l; i++) {n var count = vcount;nn if (count === 4) {n var a = index + stride * 0;n var b = index + stride * 1;n var c = index + stride * 2;n var d = index + stride * 3;n pushVector(a);n pushVector(b);n pushVector(d);n pushVector(b);n pushVector©;n pushVector(d);n } else if (count === 3) {n var a = index + stride * 0;n var b = index + stride * 1;n var c = index + stride * 2;n pushVector(a);n pushVector(b);n pushVector©;n } else if (count > 4) {n for (var k = 1, kl = count - 2; k <= kl; k++) {n var a = index + stride * 0;n var b = index + stride * k;n var c = index + stride * (k + 1);n pushVector(a);n pushVector(b);n pushVector©;n }n }nn index += stride * count;n }n } else {n for (var i = 0, l = indices.length; i < l; i += stride) {n pushVector(i);n }n }n }nn function getGeometry(id) {n return getBuild(library.geometries, buildGeometry);n } // kinematicsnnn function parseKinematicsModel(xml) {n var data = {n name: xml.getAttribute('name') || '',n joints: {},n links: []n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'technique_common':n parseKinematicsTechniqueCommon(child, data);n break;n }n }nn library.kinematicsModels = data;n }nn function buildKinematicsModel(data) {n if (data.build !== undefined) return data.build;n return data;n }nn function getKinematicsModel(id) {n return getBuild(library.kinematicsModels, buildKinematicsModel);n }nn function parseKinematicsTechniqueCommon(xml, data) {n for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'joint':n data.joints = parseKinematicsJoint(child);n break;nn case 'link':n data.links.push(parseKinematicsLink(child));n break;n }n }n }nn function parseKinematicsJoint(xml) {n var data;nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'prismatic':n case 'revolute':n data = parseKinematicsJointParameter(child);n break;n }n }nn return data;n }nn function parseKinematicsJointParameter(xml, data) {n var data = {n sid: xml.getAttribute('sid'),n name: xml.getAttribute('name') || '',n axis: new Vector3(),n limits: {n min: 0,n max: 0n },n type: xml.nodeName,n "static": false,n zeroPosition: 0,n middlePosition: 0n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'axis':n var array = parseFloats(child.textContent);n data.axis.fromArray(array);n break;nn case 'limits':n var max = child.getElementsByTagName(‘max’);n var min = child.getElementsByTagName(‘min’);n data.limits.max = parseFloat(max.textContent);n data.limits.min = parseFloat(min.textContent);n break;n }n } // if min is equal to or greater than max, consider the joint staticnnn if (data.limits.min >= data.limits.max) {n data = true;n } // calculate middle positionnnn data.middlePosition = (data.limits.min + data.limits.max) / 2.0;n return data;n }nn function parseKinematicsLink(xml) {n var data = {n sid: xml.getAttribute('sid'),n name: xml.getAttribute('name') || '',n attachments: [],n transforms: []n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'attachment_full':n data.attachments.push(parseKinematicsAttachment(child));n break;nn case 'matrix':n case 'translate':n case 'rotate':n data.transforms.push(parseKinematicsTransform(child));n break;n }n }nn return data;n }nn function parseKinematicsAttachment(xml) {n var data = {n joint: xml.getAttribute('joint').split('/').pop(),n transforms: [],n links: []n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'link':n data.links.push(parseKinematicsLink(child));n break;nn case 'matrix':n case 'translate':n case 'rotate':n data.transforms.push(parseKinematicsTransform(child));n break;n }n }nn return data;n }nn function parseKinematicsTransform(xml) {n var data = {n type: xml.nodeNamen };n var array = parseFloats(xml.textContent);nn switch (data.type) {n case 'matrix':n data.obj = new Matrix4();n data.obj.fromArray(array).transpose();n break;nn case 'translate':n data.obj = new Vector3();n data.obj.fromArray(array);n break;nn case 'rotate':n data.obj = new Vector3();n data.obj.fromArray(array);n data.angle = _Math.degToRad(array);n break;n }nn return data;n } // physicsnnn function parsePhysicsModel(xml) {n var data = {n name: xml.getAttribute('name') || '',n rigidBodies: {}n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'rigid_body':n data.rigidBodies = {};n parsePhysicsRigidBody(child, data.rigidBodies);n break;n }n }nn library.physicsModels = data;n }nn function parsePhysicsRigidBody(xml, data) {n for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'technique_common':n parsePhysicsTechniqueCommon(child, data);n break;n }n }n }nn function parsePhysicsTechniqueCommon(xml, data) {n for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'inertia':n data.inertia = parseFloats(child.textContent);n break;nn case 'mass':n data.mass = parseFloats(child.textContent);n break;n }n }n } // scenennn function parseKinematicsScene(xml) {n var data = {n bindJointAxis: []n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'bind_joint_axis':n data.bindJointAxis.push(parseKinematicsBindJointAxis(child));n break;n }n }nn library.kinematicsScenes = data;n }nn function parseKinematicsBindJointAxis(xml) {n var data = {n target: xml.getAttribute('target').split('/').pop()n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'axis':n var param = child.getElementsByTagName(‘param’);n data.axis = param.textContent;n var tmpJointIndex = data.axis.split(‘inst_’).pop().split(‘axis’);n data.jointIndex = tmpJointIndex.substr(0, tmpJointIndex.length - 1);n break;n }n }nn return data;n }nn function buildKinematicsScene(data) {n if (data.build !== undefined) return data.build;n return data;n }nn function getKinematicsScene(id) {n return getBuild(library.kinematicsScenes, buildKinematicsScene);n }nn function setupKinematics() {n var kinematicsModelId = Object.keys(library.kinematicsModels);n var kinematicsSceneId = Object.keys(library.kinematicsScenes);n var visualSceneId = Object.keys(library.visualScenes);n if (kinematicsModelId === undefined || kinematicsSceneId === undefined) return;n var kinematicsModel = getKinematicsModel(kinematicsModelId);n var kinematicsScene = getKinematicsScene(kinematicsSceneId);n var visualScene = getVisualScene(visualSceneId);n var bindJointAxis = kinematicsScene.bindJointAxis;n var jointMap = {};nn for (var i = 0, l = bindJointAxis.length; i < l; i++) {n var axis = bindJointAxis; // the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'nn var targetElement = collada.querySelector('[sid="' + axis.target + '"]');nn if (targetElement) {n // get the parent of the transfrom elementn var parentVisualElement = targetElement.parentElement; // connect the joint of the kinematics model with the element in the visual scenenn connect(axis.jointIndex, parentVisualElement);n }n }nn function connect(jointIndex, visualElement) {n var visualElementName = visualElement.getAttribute('name');n var joint = kinematicsModel.joints;n visualScene.traverse(function (object) {n if (object.name === visualElementName) {n jointMap = {n object: object,n transforms: buildTransformList(visualElement),n joint: joint,n position: joint.zeroPositionn };n }n });n }nn var m0 = new Matrix4();n kinematics = {n joints: kinematicsModel && kinematicsModel.joints,n getJointValue: function getJointValue(jointIndex) {n var jointData = jointMap;nn if (jointData) {n return jointData.position;n } else {n console.warn('THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\'t exist.');n }n },n setJointValue: function setJointValue(jointIndex, value) {n var jointData = jointMap;nn if (jointData) {n var joint = jointData.joint;nn if (value > joint.limits.max || value < joint.limits.min) {n console.warn('THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').');n } else if (joint) {n console.warn('THREE.ColladaLoader: Joint ' + jointIndex + ' is static.');n } else {n var object = jointData.object;n var axis = joint.axis;n var transforms = jointData.transforms;n matrix.identity(); // each update, we have to apply all transforms in the correct ordernn for (var i = 0; i < transforms.length; i++) {n var transform = transforms; // if there is a connection of the transform node with a joint, apply the joint valuenn if (transform.sid && transform.sid.indexOf(jointIndex) !== -1) {n switch (joint.type) {n case 'revolute':n matrix.multiply(m0.makeRotationAxis(axis, _Math.degToRad(value)));n break;nn case 'prismatic':n matrix.multiply(m0.makeTranslation(axis.x * value, axis.y * value, axis.z * value));n break;nn default:n console.warn('THREE.ColladaLoader: Unknown joint type: ' + joint.type);n break;n }n } else {n switch (transform.type) {n case 'matrix':n matrix.multiply(transform.obj);n break;nn case 'translate':n matrix.multiply(m0.makeTranslation(transform.obj.x, transform.obj.y, transform.obj.z));n break;nn case 'scale':n matrix.scale(transform.obj);n break;nn case 'rotate':n matrix.multiply(m0.makeRotationAxis(transform.obj, transform.angle));n break;n }n }n }nn object.matrix.copy(matrix);n object.matrix.decompose(object.position, object.quaternion, object.scale);n jointMap.position = value;n }n } else {n console.log('THREE.ColladaLoader: ' + jointIndex + ' does not exist.');n }n }n };n }nn function buildTransformList(node) {n var transforms = [];n var xml = collada.querySelector('[id="' + node.id + '"]');nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'matrix':n var array = parseFloats(child.textContent);n var matrix = new Matrix4().fromArray(array).transpose();n transforms.push({n sid: child.getAttribute('sid'),n type: child.nodeName,n obj: matrixn });n break;nn case 'translate':n case 'scale':n var array = parseFloats(child.textContent);n var vector = new Vector3().fromArray(array);n transforms.push({n sid: child.getAttribute('sid'),n type: child.nodeName,n obj: vectorn });n break;nn case 'rotate':n var array = parseFloats(child.textContent);n var vector = new Vector3().fromArray(array);nn var angle = _Math.degToRad(array);nn transforms.push({n sid: child.getAttribute('sid'),n type: child.nodeName,n obj: vector,n angle: anglen });n break;n }n }nn return transforms;n } // nodesnnn function prepareNodes(xml) {n var elements = xml.getElementsByTagName('node'); // ensure all node elements have id attributesnn for (var i = 0; i < elements.length; i++) {n var element = elements;nn if (element.hasAttribute('id') === false) {n element.setAttribute('id', generateId());n }n }n }nn var matrix = new Matrix4();n var vector = new Vector3();nn function parseNode(xml) {n var data = {n name: xml.getAttribute('name') || '',n type: xml.getAttribute('type'),n id: xml.getAttribute('id'),n sid: xml.getAttribute('sid'),n matrix: new Matrix4(),n nodes: [],n instanceCameras: [],n instanceControllers: [],n instanceLights: [],n instanceGeometries: [],n instanceNodes: [],n transforms: {}n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;n if (child.nodeType !== 1) continue;nn switch (child.nodeName) {n case 'node':n data.nodes.push(child.getAttribute('id'));n parseNode(child);n break;nn case 'instance_camera':n data.instanceCameras.push(parseId(child.getAttribute('url')));n break;nn case 'instance_controller':n data.instanceControllers.push(parseNodeInstance(child));n break;nn case 'instance_light':n data.instanceLights.push(parseId(child.getAttribute('url')));n break;nn case 'instance_geometry':n data.instanceGeometries.push(parseNodeInstance(child));n break;nn case 'instance_node':n data.instanceNodes.push(parseId(child.getAttribute('url')));n break;nn case 'matrix':n var array = parseFloats(child.textContent);n data.matrix.multiply(matrix.fromArray(array).transpose());n data.transforms = child.nodeName;n break;nn case 'translate':n var array = parseFloats(child.textContent);n vector.fromArray(array);n data.matrix.multiply(matrix.makeTranslation(vector.x, vector.y, vector.z));n data.transforms = child.nodeName;n break;nn case 'rotate':n var array = parseFloats(child.textContent);nn var angle = _Math.degToRad(array);nn data.matrix.multiply(matrix.makeRotationAxis(vector.fromArray(array), angle));n data.transforms = child.nodeName;n break;nn case 'scale':n var array = parseFloats(child.textContent);n data.matrix.scale(vector.fromArray(array));n data.transforms = child.nodeName;n break;nn case 'extra':n break;nn default:n console.log(child);n }n }nn if (hasNode(data.id)) {n console.warn('THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id);n } else {n library.nodes = data;n }nn return data;n }nn function parseNodeInstance(xml) {n var data = {n id: parseId(xml.getAttribute('url')),n materials: {},n skeletons: []n };nn for (var i = 0; i < xml.childNodes.length; i++) {n var child = xml.childNodes;nn switch (child.nodeName) {n case 'bind_material':n var instances = child.getElementsByTagName('instance_material');nn for (var j = 0; j < instances.length; j++) {n var instance = instances;n var symbol = instance.getAttribute('symbol');n var target = instance.getAttribute('target');n data.materials = parseId(target);n }nn break;nn case 'skeleton':n data.skeletons.push(parseId(child.textContent));n break;nn default:n break;n }n }nn return data;n }nn function buildSkeleton(skeletons, joints) {n var boneData = [];n var sortedBoneData = [];n var i, j, data; // a skeleton can have multiple root bones. collada expresses thisn // situtation with multiple "skeleton" tags per controller instancenn for (i = 0; i < skeletons.length; i++) {n var skeleton = skeletons;n var root;nn if (hasNode(skeleton)) {n root = getNode(skeleton);n buildBoneHierarchy(root, joints, boneData);n } else if (hasVisualScene(skeleton)) {n // handle case where the skeleton refers to the visual scene (#13335)n var visualScene = library.visualScenes;n var children = visualScene.children;nn for (var j = 0; j < children.length; j++) {n var child = children;nn if (child.type === 'JOINT') {n var root = getNode(child.id);n buildBoneHierarchy(root, joints, boneData);n }n }n } else {n console.error('THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton);n }n } // sort bone data (the order is defined in the corresponding controller)nnn for (i = 0; i < joints.length; i++) {n for (j = 0; j < boneData.length; j++) {n data = boneData;nn if (data.bone.name === joints.name) {n sortedBoneData = data;n data.processed = true;n break;n }n }n } // add unprocessed bone data at the end of the listnnn for (i = 0; i < boneData.length; i++) {n data = boneData;nn if (data.processed === false) {n sortedBoneData.push(data);n data.processed = true;n }n } // setup arrays for skeleton creationnnn var bones = [];n var boneInverses = [];nn for (i = 0; i < sortedBoneData.length; i++) {n data = sortedBoneData;n bones.push(data.bone);n boneInverses.push(data.boneInverse);n }nn return new Skeleton(bones, boneInverses);n }nn function buildBoneHierarchy(root, joints, boneData) {n // setup bone data from visual scenen root.traverse(function (object) {n if (object.isBone === true) {n var boneInverse; // retrieve the boneInverse from the controller datann for (var i = 0; i < joints.length; i++) {n var joint = joints;nn if (joint.name === object.name) {n boneInverse = joint.boneInverse;n break;n }n }nn if (boneInverse === undefined) {n // Unfortunately, there can be joints in the visual scene that are not part of then // corresponding controller. In this case, we have to create a dummy boneInverse matrixn // for the respective bone. This bone won't affect any vertices, because there are no skin indicesn // and weights defined for it. But we still have to add the bone to the sorted bone list in order ton // ensure a correct animation of the model.n boneInverse = new Matrix4();n }nn boneData.push({n bone: object,n boneInverse: boneInverse,n processed: falsen });n }n });n }nn function buildNode(data) {n var objects = [];n var matrix = data.matrix;n var nodes = data.nodes;n var type = data.type;n var instanceCameras = data.instanceCameras;n var instanceControllers = data.instanceControllers;n var instanceLights = data.instanceLights;n var instanceGeometries = data.instanceGeometries;n var instanceNodes = data.instanceNodes; // nodesnn for (var i = 0, l = nodes.length; i < l; i++) {n objects.push(getNode(nodes));n } // instance camerasnnn for (var i = 0, l = instanceCameras.length; i < l; i++) {n var instanceCamera = getCamera(instanceCameras);nn if (instanceCamera !== null) {n objects.push(instanceCamera.clone());n }n } // instance controllersnnn for (var i = 0, l = instanceControllers.length; i < l; i++) {n var instance = instanceControllers;n var controller = getController(instance.id);n var geometries = getGeometry(controller.id);n var newObjects = buildObjects(geometries, instance.materials);n var skeletons = instance.skeletons;n var joints = controller.skin.joints;n var skeleton = buildSkeleton(skeletons, joints);nn for (var j = 0, jl = newObjects.length; j < jl; j++) {n var object = newObjects;nn if (object.isSkinnedMesh) {n object.bind(skeleton, controller.skin.bindMatrix);n object.normalizeSkinWeights();n }nn objects.push(object);n }n } // instance lightsnnn for (var i = 0, l = instanceLights.length; i < l; i++) {n var instanceLight = getLight(instanceLights);nn if (instanceLight !== null) {n objects.push(instanceLight.clone());n }n } // instance geometriesnnn for (var i = 0, l = instanceGeometries.length; i < l; i++) {n var instance = instanceGeometries; // a single geometry instance in collada can lead to multiple object3Ds.n // this is the case when primitives are combined like triangles and linesnn var geometries = getGeometry(instance.id);n var newObjects = buildObjects(geometries, instance.materials);nn for (var j = 0, jl = newObjects.length; j < jl; j++) {n objects.push(newObjects);n }n } // instance nodesnnn for (var i = 0, l = instanceNodes.length; i < l; i++) {n objects.push(getNode(instanceNodes).clone());n }nn var object;nn if (nodes.length === 0 && objects.length === 1) {n object = objects;n } else {n object = type === 'JOINT' ? new Bone() : new Group();nn for (var i = 0; i < objects.length; i++) {n object.add(objects);n }n }nn if (object.name === '') {n object.name = type === 'JOINT' ? data.sid : data.name;n }nn object.matrix.copy(matrix);n object.matrix.decompose(object.position, object.quaternion, object.scale);n return object;n }nn var fallbackMaterial = new MeshBasicMaterial({n color: 0xff00ffn });nn function resolveMaterialBinding(keys, instanceMaterials) {n var materials = [];nn for (var i = 0, l = keys.length; i < l; i++) {n var id = instanceMaterials[keys];nn if (id === undefined) {n console.warn('THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys);n materials.push(fallbackMaterial);n } else {n materials.push(getMaterial(id));n }n }nn return materials;n }nn function buildObjects(geometries, instanceMaterials) {n var objects = [];nn for (var type in geometries) {n var geometry = geometries;n var materials = resolveMaterialBinding(geometry.materialKeys, instanceMaterials); // handle case if no materials are definednn if (materials.length === 0) {n if (type === 'lines' || type === 'linestrips') {n materials.push(new LineBasicMaterial());n } else {n materials.push(new MeshPhongMaterial());n }n } // regard skinningnnn var skinning = geometry.data.attributes.skinIndex !== undefined;nn if (skinning) {n for (var i = 0, l = materials.length; i < l; i++) {n materials.skinning = true;n }n } // choose between a single or multi materials (material array)nnn var material = materials.length === 1 ? materials : materials; // now create a specific 3D objectnn var object;nn switch (type) {n case 'lines':n object = new LineSegments(geometry.data, material);n break;nn case 'linestrips':n object = new Line(geometry.data, material);n break;nn case 'triangles':n case 'polylist':n if (skinning) {n object = new SkinnedMesh(geometry.data, material);n } else {n object = new Mesh(geometry.data, material);n }nn break;n }nn objects.push(object);n }nn return objects;n }nn function hasNode(id) {n return library.nodes !== undefined;n }nn function getNode(id) {n return getBuild(library.nodes, buildNode);n } // visual scenesnnn function parseVisualScene(xml) {n var data = {n name: xml.getAttribute('name'),n children: []n };n prepareNodes(xml);n var elements = getElementsByTagName(xml, 'node');nn for (var i = 0; i < elements.length; i++) {n data.children.push(parseNode(elements));n }nn library.visualScenes = data;n }nn function buildVisualScene(data) {n var group = new Group();n group.name = data.name;n var children = data.children;nn for (var i = 0; i < children.length; i++) {n var child = children;n group.add(getNode(child.id));n }nn return group;n }nn function hasVisualScene(id) {n return library.visualScenes !== undefined;n }nn function getVisualScene(id) {n return getBuild(library.visualScenes, buildVisualScene);n } // scenesnnn function parseScene(xml) {n var instance = getElementsByTagName(xml, 'instance_visual_scene’);n return getVisualScene(parseId(instance.getAttribute('url')));n }nn function setupAnimations() {n var clips = library.clips;nn if (isEmpty(clips) === true) {n if (isEmpty(library.animations) === false) {n // if there are animations but no clips, we create a default clip for playbackn var tracks = [];nn for (var id in library.animations) {n var animationTracks = getAnimation(id);nn for (var i = 0, l = animationTracks.length; i < l; i++) {n tracks.push(animationTracks);n }n }nn animations.push(new AnimationClip('default', -1, tracks));n }n } else {n for (var id in clips) {n animations.push(getAnimationClip(id));n }n }n } // convert the parser error element into text with each child elements textn // separated by new lines.nnn function parserErrorToText(parserError) {n var result = '';n var stack = [parserError];nn while (stack.length) {n var node = stack.shift();nn if (node.nodeType === Node.TEXT_NODE) {n result += node.textContent;n } else {n result += '\n';n stack.push.apply(stack, node.childNodes);n }n }nn return result.trim();n }nn if (text.length === 0) {n return {n scene: new Scene()n };n }nn var xml = new DOMParser().parseFromString(text, 'application/xml');n var collada = getElementsByTagName(xml, 'COLLADA’);n var parserError = xml.getElementsByTagName(‘parsererror’);nn if (parserError !== undefined) {n // Chrome will return parser error with a div in itn var errorElement = getElementsByTagName(parserError, 'div’);n var errorText;nn if (errorElement) {n errorText = errorElement.textContent;n } else {n errorText = parserErrorToText(parserError);n }nn console.error('THREE.ColladaLoader: Failed to parse collada file.\n', errorText);n return null;n } // metadatannn var version = collada.getAttribute('version');n console.log('THREE.ColladaLoader: File version', version);n var asset = parseAsset(getElementsByTagName(collada, 'asset’));n var textureLoader = new TextureLoader(this.manager);n textureLoader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin);n var tgaLoader;nn if (TGALoader) {n tgaLoader = new TGALoader(this.manager);n tgaLoader.setPath(this.resourcePath || path);n } //nnn var animations = [];n var kinematics = {};n var count = 0; //nn var library = {n animations: {},n clips: {},n controllers: {},n images: {},n effects: {},n materials: {},n cameras: {},n lights: {},n geometries: {},n nodes: {},n visualScenes: {},n kinematicsModels: {},n physicsModels: {},n kinematicsScenes: {}n };n parseLibrary(collada, 'library_animations', 'animation', parseAnimation);n parseLibrary(collada, 'library_animation_clips', 'animation_clip', parseAnimationClip);n parseLibrary(collada, 'library_controllers', 'controller', parseController);n parseLibrary(collada, 'library_images', 'image', parseImage);n parseLibrary(collada, 'library_effects', 'effect', parseEffect);n parseLibrary(collada, 'library_materials', 'material', parseMaterial);n parseLibrary(collada, 'library_cameras', 'camera', parseCamera);n parseLibrary(collada, 'library_lights', 'light', parseLight);n parseLibrary(collada, 'library_geometries', 'geometry', parseGeometry);n parseLibrary(collada, 'library_nodes', 'node', parseNode);n parseLibrary(collada, 'library_visual_scenes', 'visual_scene', parseVisualScene);n parseLibrary(collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel);n parseLibrary(collada, 'library_physics_models', 'physics_model', parsePhysicsModel);n parseLibrary(collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene);n buildLibrary(library.animations, buildAnimation);n buildLibrary(library.clips, buildAnimationClip);n buildLibrary(library.controllers, buildController);n buildLibrary(library.images, buildImage);n buildLibrary(library.effects, buildEffect);n buildLibrary(library.materials, buildMaterial);n buildLibrary(library.cameras, buildCamera);n buildLibrary(library.lights, buildLight);n buildLibrary(library.geometries, buildGeometry);n buildLibrary(library.visualScenes, buildVisualScene);n setupAnimations();n setupKinematics();n var scene = parseScene(getElementsByTagName(collada, 'scene’));nn if (asset.upAxis === 'Z_UP') {n scene.quaternion.setFromEuler(new Euler(-Math.PI / 2, 0, 0));n }nn scene.scale.multiplyScalar(asset.unit);n return {n animations: animations,n kinematics: kinematics,n library: library,n scene: scenen };n }n};nexport { ColladaLoader };”,“map”:{“version”:3,“sources”:[“/Users/lemonandroid/Banal Dropbox/random/redux-os/app/javascript/packs/kmz/jsm/loaders/ColladaLoader.js”],“names”:,“mappings”:“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”,“sourcesContent”:[“// raw.githubusercontent.com/mrdoob/three.js/master/examples/jsm/loaders/ColladaLoader.jsnn/**n * @author mrdoob / mrdoob.com/n * @author Mugen87 / github.com/Mugen87n */nnimport {ntAmbientLight,ntAnimationClip,ntBone,ntBufferGeometry,ntClampToEdgeWrapping,ntColor,ntDefaultLoadingManager,ntDirectionalLight,ntDoubleSide,ntEuler,ntFileLoader,ntFloat32BufferAttribute,ntGroup,ntLine,ntLineBasicMaterial,ntLineSegments,ntLoaderUtils,ntMath as _Math,ntMatrix4,ntMesh,ntMeshBasicMaterial,ntMeshLambertMaterial,ntMeshPhongMaterial,ntOrthographicCamera,ntPerspectiveCamera,ntPointLight,ntQuaternion,ntQuaternionKeyframeTrack,ntRepeatWrapping,ntScene,ntSkeleton,ntSkinnedMesh,ntSpotLight,ntTextureLoader,ntVector3,ntVectorKeyframeTrackn} from "three";nimport { TGALoader } from "../loaders/TGALoader.js";nnvar ColladaLoader = function ( manager ) {nntthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;nn};nnColladaLoader.prototype = {nntconstructor: ColladaLoader,nntcrossOrigin: 'anonymous',nntload: function ( url, onLoad, onProgress, onError ) {nnttvar scope = this;nnttvar path = ( scope.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : scope.path;nnttvar loader = new FileLoader( scope.manager );nttloader.setPath( scope.path );nttloader.load( url, function ( text ) {nntttonLoad( scope.parse( text, path ) );nntt}, onProgress, onError );nnt},nntsetPath: function ( value ) {nnttthis.path = value;nttreturn this;nnt},nntsetResourcePath: function ( value ) {nnttthis.resourcePath = value;nttreturn this;nnt},nntoptions: {nnttset convertUpAxis( value ) {nntttconsole.warn( 'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.' );nntt}nnt},nntsetCrossOrigin: function ( value ) {nnttthis.crossOrigin = value;nttreturn this;nnt},nntparse: function ( text, path ) {nnttfunction getElementsByTagName( xml, name ) {nnttt// Non recursive xml.getElementsByTagName() …nntttvar array = [];ntttvar childNodes = xml.childNodes;nntttfor ( var i = 0, l = childNodes.length; i < l; i ++ ) {nnttttvar child = childNodes[ i ];nnttttif ( child.nodeName === name ) {nntttttarray.push( child );nntttt}nnttt}nntttreturn array;nntt}nnttfunction parseStrings( text ) {nntttif ( text.length === 0 ) return [];nntttvar parts = text.trim().split( /\s+/ );ntttvar array = new Array( parts.length );nntttfor ( var i = 0, l = parts.length; i < l; i ++ ) {nnttttarray[ i ] = parts[ i ];nnttt}nntttreturn array;nntt}nnttfunction parseFloats( text ) {nntttif ( text.length === 0 ) return [];nntttvar parts = text.trim().split( /\s+/ );ntttvar array = new Array( parts.length );nntttfor ( var i = 0, l = parts.length; i < l; i ++ ) {nnttttarray[ i ] = parseFloat( parts[ i ] );nnttt}nntttreturn array;nntt}nnttfunction parseInts( text ) {nntttif ( text.length === 0 ) return [];nntttvar parts = text.trim().split( /\s+/ );ntttvar array = new Array( parts.length );nntttfor ( var i = 0, l = parts.length; i < l; i ++ ) {nnttttarray[ i ] = parseInt( parts[ i ] );nnttt}nntttreturn array;nntt}nnttfunction parseId( text ) {nntttreturn text.substring( 1 );nntt}nnttfunction generateId() {nntttreturn 'three_default_' + ( count ++ );nntt}nnttfunction isEmpty( object ) {nntttreturn Object.keys( object ).length === 0;nntt}nntt// assetnnttfunction parseAsset( xml ) {nntttreturn {nttttunit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ),nttttupAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] )nttt};nntt}nnttfunction parseAssetUnit( xml ) {nntttif ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) {nnttttreturn parseFloat( xml.getAttribute( 'meter' ) );nnttt} else {nnttttreturn 1; // default 1 meternnttt}nntt}nnttfunction parseAssetUpAxis( xml ) {nntttreturn xml !== undefined ? xml.textContent : 'Y_UP';nntt}nntt// librarynnttfunction parseLibrary( xml, libraryName, nodeName, parser ) {nntttvar library = getElementsByTagName( xml, libraryName )[ 0 ];nntttif ( library !== undefined ) {nnttttvar elements = getElementsByTagName( library, nodeName );nnttttfor ( var i = 0; i < elements.length; i ++ ) {nntttttparser( elements[ i ] );nntttt}nnttt}nntt}nnttfunction buildLibrary( data, builder ) {nntttfor ( var name in data ) {nnttttvar object = data[ name ];nttttobject.build = builder( data[ name ] );nnttt}nntt}nntt// getnnttfunction getBuild( data, builder ) {nntttif ( data.build !== undefined ) return data.build;nntttdata.build = builder( data );nntttreturn data.build;nntt}nntt// animationnnttfunction parseAnimation( xml ) {nntttvar data = {nttttsources: {},nttttsamplers: {},nttttchannels: {}nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttvar id;nnttttswitch ( child.nodeName ) {nntttttcase 'source':nttttttid = child.getAttribute( 'id' );nttttttdata.sources[ id ] = parseSource( child );nttttttbreak;nntttttcase 'sampler':nttttttid = child.getAttribute( 'id' );nttttttdata.samplers[ id ] = parseAnimationSampler( child );nttttttbreak;nntttttcase 'channel':nttttttid = child.getAttribute( 'target' );nttttttdata.channels[ id ] = parseAnimationChannel( child );nttttttbreak;nntttttdefault:nttttttconsole.log( child );nntttt}nnttt}nntttlibrary.animations[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parseAnimationSampler( xml ) {nntttvar data = {nttttinputs: {},nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'input':nttttttvar id = parseId( child.getAttribute( 'source' ) );nttttttvar semantic = child.getAttribute( 'semantic' );nttttttdata.inputs[ semantic ] = id;nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseAnimationChannel( xml ) {nntttvar data = {};nntttvar target = xml.getAttribute( 'target' );nnttt// parsing SID Addressing Syntaxnntttvar parts = target.split( '/' );nntttvar id = parts.shift();ntttvar sid = parts.shift();nnttt// check selection syntaxnntttvar arraySyntax = ( sid.indexOf( '(' ) !== - 1 );ntttvar memberSyntax = ( sid.indexOf( '.' ) !== - 1 );nntttif ( memberSyntax ) {nntttt// member selection accessnnttttparts = sid.split( '.' );nttttsid = parts.shift();nttttdata.member = parts.shift();nnttt} else if ( arraySyntax ) {nntttt// array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices.nnttttvar indices = sid.split( '(' );nttttsid = indices.shift();nnttttfor ( var i = 0; i < indices.length; i ++ ) {nntttttindices[ i ] = parseInt( indices[ i ].replace( /\)/, '' ) );nntttt}nnttttdata.indices = indices;nnttt}nntttdata.id = id;ntttdata.sid = sid;nntttdata.arraySyntax = arraySyntax;ntttdata.memberSyntax = memberSyntax;nntttdata.sampler = parseId( xml.getAttribute( 'source' ) );nntttreturn data;nntt}nnttfunction buildAnimation( data ) {nntttvar tracks = [];nntttvar channels = data.channels;ntttvar samplers = data.samplers;ntttvar sources = data.sources;nntttfor ( var target in channels ) {nnttttif ( channels.hasOwnProperty( target ) ) {nntttttvar channel = channels[ target ];ntttttvar sampler = samplers[ channel.sampler ];nntttttvar inputId = sampler.inputs.INPUT;ntttttvar outputId = sampler.inputs.OUTPUT;nntttttvar inputSource = sources[ inputId ];ntttttvar outputSource = sources[ outputId ];nntttttvar animation = buildAnimationChannel( channel, inputSource, outputSource );nntttttcreateKeyframeTracks( animation, tracks );nntttt}nnttt}nntttreturn tracks;nntt}nnttfunction getAnimation( id ) {nntttreturn getBuild( library.animations[ id ], buildAnimation );nntt}nnttfunction buildAnimationChannel( channel, inputSource, outputSource ) {nntttvar node = library.nodes[ channel.id ];ntttvar object3D = getNode( node.id );nntttvar transform = node.transforms[ channel.sid ];ntttvar defaultMatrix = node.matrix.clone().transpose();nntttvar time, stride;ntttvar i, il, j, jl;nntttvar data = {};nnttt// the collada spec allows the animation of data in various ways.nttt// depending on the transform type (matrix, translate, rotate, scale), we execute different logicnntttswitch ( transform ) {nnttttcase 'matrix':nntttttfor ( i = 0, il = inputSource.array.length; i < il; i ++ ) {nntttttttime = inputSource.array[ i ];nttttttstride = i * outputSource.stride;nnttttttif ( data[ time ] === undefined ) data[ time ] = {};nnttttttif ( channel.arraySyntax === true ) {nntttttttvar value = outputSource.array[ stride ];ntttttttvar index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ];nntttttttdata[ time ][ index ] = value;nntttttt} else {nntttttttfor ( j = 0, jl = outputSource.stride; j < jl; j ++ ) {nnttttttttdata[ time ][ j ] = outputSource.array[ stride + j ];nnttttttt}nntttttt}nnttttt}nntttttbreak;nnttttcase 'translate':ntttttconsole.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform );ntttttbreak;nnttttcase 'rotate':ntttttconsole.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform );ntttttbreak;nnttttcase 'scale':ntttttconsole.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform );ntttttbreak;nnttt}nntttvar keyframes = prepareAnimationData( data, defaultMatrix );nntttvar animation = {nttttname: object3D.uuid,nttttkeyframes: keyframesnttt};nntttreturn animation;nntt}nnttfunction prepareAnimationData( data, defaultMatrix ) {nntttvar keyframes = [];nnttt// transfer data into a sortable arraynntttfor ( var time in data ) {nnttttkeyframes.push( { time: parseFloat( time ), value: data[ time ] } );nnttt}nnttt// ensure keyframes are sorted by timenntttkeyframes.sort( ascending );nnttt// now we clean up all animation data, so we can use them for keyframe tracksnntttfor ( var i = 0; i < 16; i ++ ) {nntttttransformAnimationData( keyframes, i, defaultMatrix.elements[ i ] );nnttt}nntttreturn keyframes;nnttt// array sort functionnntttfunction ascending( a, b ) {nnttttreturn a.time - b.time;nnttt}nntt}nnttvar position = new Vector3();nttvar scale = new Vector3();nttvar quaternion = new Quaternion();nnttfunction createKeyframeTracks( animation, tracks ) {nntttvar keyframes = animation.keyframes;ntttvar name = animation.name;nntttvar times = [];ntttvar positionData = [];ntttvar quaternionData = [];ntttvar scaleData = [];nntttfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {nnttttvar keyframe = keyframes[ i ];nnttttvar time = keyframe.time;nttttvar value = keyframe.value;nnttttmatrix.fromArray( value ).transpose();nttttmatrix.decompose( position, quaternion, scale );nntttttimes.push( time );nttttpositionData.push( position.x, position.y, position.z );nttttquaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w );nttttscaleData.push( scale.x, scale.y, scale.z );nnttt}nntttif ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) );ntttif ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) );ntttif ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) );nntttreturn tracks;nntt}nnttfunction transformAnimationData( keyframes, property, defaultValue ) {nntttvar keyframe;nntttvar empty = true;ntttvar i, l;nnttt// check, if values of a property are missing in our keyframesnntttfor ( i = 0, l = keyframes.length; i < l; i ++ ) {nnttttkeyframe = keyframes[ i ];nnttttif ( keyframe.value[ property ] === undefined ) {nntttttkeyframe.value[ property ] = null; // mark as missingnntttt} else {nntttttempty = false;nntttt}nnttt}nntttif ( empty === true ) {nntttt// no values at all, so we set a default valuennttttfor ( i = 0, l = keyframes.length; i < l; i ++ ) {nntttttkeyframe = keyframes[ i ];nntttttkeyframe.value[ property ] = defaultValue;nntttt}nnttt} else {nntttt// filling gapsnnttttcreateMissingKeyframes( keyframes, property );nnttt}nntt}nnttfunction createMissingKeyframes( keyframes, property ) {nntttvar prev, next;nntttfor ( var i = 0, l = keyframes.length; i < l; i ++ ) {nnttttvar keyframe = keyframes[ i ];nnttttif ( keyframe.value[ property ] === null ) {nntttttprev = getPrev( keyframes, i, property );ntttttnext = getNext( keyframes, i, property );nntttttif ( prev === null ) {nnttttttkeyframe.value[ property ] = next.value[ property ];nttttttcontinue;nnttttt}nntttttif ( next === null ) {nnttttttkeyframe.value[ property ] = prev.value[ property ];nttttttcontinue;nnttttt}nntttttinterpolate( keyframe, prev, next, property );nntttt}nnttt}nntt}nnttfunction getPrev( keyframes, i, property ) {nntttwhile ( i >= 0 ) {nnttttvar keyframe = keyframes[ i ];nnttttif ( keyframe.value[ property ] !== null ) return keyframe;nntttti –;nnttt}nntttreturn null;nntt}nnttfunction getNext( keyframes, i, property ) {nntttwhile ( i < keyframes.length ) {nnttttvar keyframe = keyframes[ i ];nnttttif ( keyframe.value[ property ] !== null ) return keyframe;nntttti ++;nnttt}nntttreturn null;nntt}nnttfunction interpolate( key, prev, next, property ) {nntttif ( ( next.time - prev.time ) === 0 ) {nnttttkey.value[ property ] = prev.value[ property ];nttttreturn;nnttt}nntttkey.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ];nntt}nntt// animation clipsnnttfunction parseAnimationClip( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'id' ) || 'default',nttttstart: parseFloat( xml.getAttribute( 'start' ) || 0 ),nttttend: parseFloat( xml.getAttribute( 'end' ) || 0 ),nttttanimations: []nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'instance_animation':nttttttdata.animations.push( parseId( child.getAttribute( 'url' ) ) );nttttttbreak;nntttt}nnttt}nntttlibrary.clips[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction buildAnimationClip( data ) {nntttvar tracks = [];nntttvar name = data.name;ntttvar duration = ( data.end - data.start ) || - 1;ntttvar animations = data.animations;nntttfor ( var i = 0, il = animations.length; i < il; i ++ ) {nnttttvar animationTracks = getAnimation( animations[ i ] );nnttttfor ( var j = 0, jl = animationTracks.length; j < jl; j ++ ) {nnttttttracks.push( animationTracks[ j ] );nntttt}nnttt}nntttreturn new AnimationClip( name, duration, tracks );nntt}nnttfunction getAnimationClip( id ) {nntttreturn getBuild( library.clips[ id ], buildAnimationClip );nntt}nntt// controllernnttfunction parseController( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'skin':ntttttt// there is exactly one skin per controllernttttttdata.id = parseId( child.getAttribute( 'source' ) );nttttttdata.skin = parseSkin( child );nttttttbreak;nntttttcase 'morph':nttttttdata.id = parseId( child.getAttribute( 'source' ) );nttttttconsole.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' );nttttttbreak;nntttt}nnttt}nntttlibrary.controllers[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parseSkin( xml ) {nntttvar data = {nttttsources: {}nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'bind_shape_matrix':nttttttdata.bindShapeMatrix = parseFloats( child.textContent );nttttttbreak;nntttttcase 'source':nttttttvar id = child.getAttribute( 'id' );nttttttdata.sources[ id ] = parseSource( child );nttttttbreak;nntttttcase 'joints':nttttttdata.joints = parseJoints( child );nttttttbreak;nntttttcase 'vertex_weights':nttttttdata.vertexWeights = parseVertexWeights( child );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseJoints( xml ) {nntttvar data = {nttttinputs: {}nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'input':nttttttvar semantic = child.getAttribute( 'semantic' );nttttttvar id = parseId( child.getAttribute( 'source' ) );nttttttdata.inputs[ semantic ] = id;nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseVertexWeights( xml ) {nntttvar data = {nttttinputs: {}nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'input':nttttttvar semantic = child.getAttribute( 'semantic' );nttttttvar id = parseId( child.getAttribute( 'source' ) );nttttttvar offset = parseInt( child.getAttribute( 'offset' ) );nttttttdata.inputs[ semantic ] = { id: id, offset: offset };nttttttbreak;nntttttcase 'vcount':nttttttdata.vcount = parseInts( child.textContent );nttttttbreak;nntttttcase 'v':nttttttdata.v = parseInts( child.textContent );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction buildController( data ) {nntttvar build = {nttttid: data.idnttt};nntttvar geometry = library.geometries[ build.id ];nntttif ( data.skin !== undefined ) {nnttttbuild.skin = buildSkin( data.skin );nntttt// we enhance the 'sources' property of the corresponding geometry with our skin datannttttgeometry.sources.skinIndices = build.skin.indices;nttttgeometry.sources.skinWeights = build.skin.weights;nnttt}nntttreturn build;nntt}nnttfunction buildSkin( data ) {nntttvar BONE_LIMIT = 4;nntttvar build = {nttttjoints: [], // this must be an array to preserve the joint ordernttttindices: {ntttttarray: [],ntttttstride: BONE_LIMITntttt},nttttweights: {ntttttarray: [],ntttttstride: BONE_LIMITntttt}nttt};nntttvar sources = data.sources;ntttvar vertexWeights = data.vertexWeights;nntttvar vcount = vertexWeights.vcount;ntttvar v = vertexWeights.v;ntttvar jointOffset = vertexWeights.inputs.JOINT.offset;ntttvar weightOffset = vertexWeights.inputs.WEIGHT.offset;nntttvar jointSource = data.sources[ data.joints.inputs.JOINT ];ntttvar inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ];nntttvar weights = sources[ vertexWeights.inputs.WEIGHT.id ].array;ntttvar stride = 0;nntttvar i, j, l;nnttt// procces skin data for each vertexnntttfor ( i = 0, l = vcount.length; i < l; i ++ ) {nnttttvar jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertexnttttvar vertexSkinData = [];nnttttfor ( j = 0; j < jointCount; j ++ ) {nntttttvar skinIndex = v[ stride + jointOffset ];ntttttvar weightId = v[ stride + weightOffset ];ntttttvar skinWeight = weights[ weightId ];nntttttvertexSkinData.push( { index: skinIndex, weight: skinWeight } );nntttttstride += 2;nntttt}nntttt// we sort the joints in descending order based on the weights.ntttt// this ensures, we only procced the most important joints of the vertexnnttttvertexSkinData.sort( descending );nntttt// now we provide for each vertex a set of four index and weight values.ntttt// the order of the skin data matches the order of verticesnnttttfor ( j = 0; j < BONE_LIMIT; j ++ ) {nntttttvar d = vertexSkinData[ j ];nntttttif ( d !== undefined ) {nnttttttbuild.indices.array.push( d.index );nttttttbuild.weights.array.push( d.weight );nnttttt} else {nnttttttbuild.indices.array.push( 0 );nttttttbuild.weights.array.push( 0 );nnttttt}nntttt}nnttt}nnttt// setup bind matrixnntttif ( data.bindShapeMatrix ) {nnttttbuild.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose();nnttt} else {nnttttbuild.bindMatrix = new Matrix4().identity();nnttt}nnttt// process bones and inverse bind matrix datanntttfor ( i = 0, l = jointSource.array.length; i < l; i ++ ) {nnttttvar name = jointSource.array[ i ];nttttvar boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose();nnttttbuild.joints.push( { name: name, boneInverse: boneInverse } );nnttt}nntttreturn build;nnttt// array sort functionnntttfunction descending( a, b ) {nnttttreturn b.weight - a.weight;nnttt}nntt}nnttfunction getController( id ) {nntttreturn getBuild( library.controllers[ id ], buildController );nntt}nntt// imagennttfunction parseImage( xml ) {nntttvar data = {nttttinit_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContentnttt};nntttlibrary.images[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction buildImage( data ) {nntttif ( data.build !== undefined ) return data.build;nntttreturn data.init_from;nntt}nnttfunction getImage( id ) {nntttvar data = library.images[ id ];nntttif ( data !== undefined ) {nnttttreturn getBuild( data, buildImage );nnttt}nntttconsole.warn( 'THREE.ColladaLoader: Couldn\'t find image with ID:', id );nntttreturn null;nntt}nntt// effectnnttfunction parseEffect( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'profile_COMMON':nttttttdata.profile = parseEffectProfileCOMMON( child );nttttttbreak;nntttt}nnttt}nntttlibrary.effects[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parseEffectProfileCOMMON( xml ) {nntttvar data = {nttttsurfaces: {},nttttsamplers: {}nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'newparam':nttttttparseEffectNewparam( child, data );nttttttbreak;nntttttcase 'technique':nttttttdata.technique = parseEffectTechnique( child );nttttttbreak;nntttttcase 'extra':nttttttdata.extra = parseEffectExtra( child );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectNewparam( xml, data ) {nntttvar sid = xml.getAttribute( 'sid' );nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'surface':nttttttdata.surfaces[ sid ] = parseEffectSurface( child );nttttttbreak;nntttttcase 'sampler2D':nttttttdata.samplers[ sid ] = parseEffectSampler( child );nttttttbreak;nntttt}nnttt}nntt}nnttfunction parseEffectSurface( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'init_from':nttttttdata.init_from = child.textContent;nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectSampler( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'source':nttttttdata.source = child.textContent;nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectTechnique( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'constant':ntttttcase 'lambert':ntttttcase 'blinn':ntttttcase 'phong':nttttttdata.type = child.nodeName;nttttttdata.parameters = parseEffectParameters( child );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectParameters( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'emission':ntttttcase 'diffuse':ntttttcase 'specular':ntttttcase 'bump':ntttttcase 'ambient':ntttttcase 'shininess':ntttttcase 'transparency':nttttttdata[ child.nodeName ] = parseEffectParameter( child );nttttttbreak;ntttttcase 'transparent':nttttttdata[ child.nodeName ] = {ntttttttopaque: child.getAttribute( 'opaque' ),ntttttttdata: parseEffectParameter( child )ntttttt};nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectParameter( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'color':nttttttdata[ child.nodeName ] = parseFloats( child.textContent );nttttttbreak;nntttttcase 'float':nttttttdata[ child.nodeName ] = parseFloat( child.textContent );nttttttbreak;nntttttcase 'texture':nttttttdata[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) };nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectParameterTexture( xml ) {nntttvar data = {ntttttechnique: {}nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'extra':nttttttparseEffectParameterTextureExtra( child, data );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectParameterTextureExtra( xml, data ) {nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'technique':nttttttparseEffectParameterTextureExtraTechnique( child, data );nttttttbreak;nntttt}nnttt}nntt}nnttfunction parseEffectParameterTextureExtraTechnique( xml, data ) {nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'repeatU':ntttttcase 'repeatV':ntttttcase 'offsetU':ntttttcase 'offsetV':nttttttdata.technique[ child.nodeName ] = parseFloat( child.textContent );nttttttbreak;nntttttcase 'wrapU':ntttttcase 'wrapV':nntttttt// some files have values for wrapU/wrapV which become NaN via parseIntnnttttttif ( child.textContent.toUpperCase() === 'TRUE' ) {nntttttttdata.technique[ child.nodeName ] = 1;nntttttt} else if ( child.textContent.toUpperCase() === 'FALSE' ) {nntttttttdata.technique[ child.nodeName ] = 0;nntttttt} else {nntttttttdata.technique[ child.nodeName ] = parseInt( child.textContent );nntttttt}nnttttttbreak;nntttt}nnttt}nntt}nnttfunction parseEffectExtra( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'technique':nttttttdata.technique = parseEffectExtraTechnique( child );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseEffectExtraTechnique( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'double_sided':nttttttdata[ child.nodeName ] = parseInt( child.textContent );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction buildEffect( data ) {nntttreturn data;nntt}nnttfunction getEffect( id ) {nntttreturn getBuild( library.effects[ id ], buildEffect );nntt}nntt// materialnnttfunction parseMaterial( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' )nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'instance_effect':nttttttdata.url = parseId( child.getAttribute( 'url' ) );nttttttbreak;nntttt}nnttt}nntttlibrary.materials[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction getTextureLoader( image ) {nntttvar loader;nntttvar extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // www.jstips.co/en/javascript/get-file-extension/ntttextension = extension.toLowerCase();nntttswitch ( extension ) {nnttttcase 'tga':ntttttloader = tgaLoader;ntttttbreak;nnttttdefault:ntttttloader = textureLoader;nnttt}nntttreturn loader;nntt}nnttfunction buildMaterial( data ) {nntttvar effect = getEffect( data.url );ntttvar technique = effect.profile.technique;ntttvar extra = effect.profile.extra;nntttvar material;nntttswitch ( technique.type ) {nnttttcase 'phong':nttttcase 'blinn':ntttttmaterial = new MeshPhongMaterial();ntttttbreak;nnttttcase 'lambert':ntttttmaterial = new MeshLambertMaterial();ntttttbreak;nnttttdefault:ntttttmaterial = new MeshBasicMaterial();ntttttbreak;nnttt}nntttmaterial.name = data.name || '';nntttfunction getTexture( textureObject ) {nnttttvar sampler = effect.profile.samplers[ textureObject.id ];nttttvar image = null;nntttt// get imagennttttif ( sampler !== undefined ) {nntttttvar surface = effect.profile.surfaces[ sampler.source ];ntttttimage = getImage( surface.init_from );nntttt} else {nntttttconsole.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' );ntttttimage = getImage( textureObject.id );nntttt}nntttt// create texture if image is avaiablennttttif ( image !== null ) {nntttttvar loader = getTextureLoader( image );nntttttif ( loader !== undefined ) {nnttttttvar texture = loader.load( image );nnttttttvar extra = textureObject.extra;nnttttttif ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) {nntttttttvar technique = extra.technique;nnttttttttexture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping;nttttttttexture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping;nnttttttttexture.offset.set( technique.offsetU || 0, technique.offsetV || 0 );nttttttttexture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 );nntttttt} else {nnttttttttexture.wrapS = RepeatWrapping;nttttttttexture.wrapT = RepeatWrapping;nntttttt}nnttttttreturn texture;nnttttt} else {nnttttttconsole.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image );nnttttttreturn null;nnttttt}nntttt} else {nntttttconsole.warn( 'THREE.ColladaLoader: Couldn\'t create texture with ID:', textureObject.id );nntttttreturn null;nntttt}nnttt}nntttvar parameters = technique.parameters;nntttfor ( var key in parameters ) {nnttttvar parameter = parameters[ key ];nnttttswitch ( key ) {nntttttcase 'diffuse':nttttttif ( parameter.color ) material.color.fromArray( parameter.color );nttttttif ( parameter.texture ) material.map = getTexture( parameter.texture );nttttttbreak;ntttttcase 'specular':nttttttif ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );nttttttif ( parameter.texture ) material.specularMap = getTexture( parameter.texture );nttttttbreak;ntttttcase 'bump':nttttttif ( parameter.texture ) material.normalMap = getTexture( parameter.texture );nttttttbreak;ntttttcase 'ambient':nttttttif ( parameter.texture ) material.lightMap = getTexture( parameter.texture );nttttttbreak;ntttttcase 'shininess':nttttttif ( parameter.float && material.shininess ) material.shininess = parameter.float;nttttttbreak;ntttttcase 'emission':nttttttif ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color );nttttttif ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture );nttttttbreak;nntttt}nnttt}nnttt//nntttvar transparent = parameters[ 'transparent' ];ntttvar transparency = parameters[ 'transparency' ];nnttt// <transparency> does not exist but <transparent>nntttif ( transparency === undefined && transparent ) {nntttttransparency = {ntttttfloat: 1ntttt};nnttt}nnttt// <transparent> does not exist but <transparency>nntttif ( transparent === undefined && transparency ) {nntttttransparent = {ntttttopaque: 'A_ONE',ntttttdata: {nttttttcolor: [ 1, 1, 1, 1 ]nttttt} };nnttt}nntttif ( transparent && transparency ) {nntttt// handle case if a texture exists but no colornnttttif ( transparent.data.texture ) {nnttttt// we do not set an alpha map (see #13792)nntttttmaterial.transparent = true;nntttt} else {nntttttvar color = transparent.data.color;nntttttswitch ( transparent.opaque ) {nnttttttcase 'A_ONE':ntttttttmaterial.opacity = color[ 3 ] * transparency.float;ntttttttbreak;nttttttcase 'RGB_ZERO':ntttttttmaterial.opacity = 1 - ( color[ 0 ] * transparency.float );ntttttttbreak;nttttttcase 'A_ZERO':ntttttttmaterial.opacity = 1 - ( color[ 3 ] * transparency.float );ntttttttbreak;nttttttcase 'RGB_ONE':ntttttttmaterial.opacity = color[ 0 ] * transparency.float;ntttttttbreak;nttttttdefault:ntttttttconsole.warn( 'THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.', transparent.opaque );nnttttt}nntttttif ( material.opacity < 1 ) material.transparent = true;nntttt}nnttt}nnttt//nntttif ( extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1 ) {nnttttmaterial.side = DoubleSide;nnttt}nntttreturn material;nntt}nnttfunction getMaterial( id ) {nntttreturn getBuild( library.materials[ id ], buildMaterial );nntt}nntt// camerannttfunction parseCamera( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' )nttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'optics':nttttttdata.optics = parseCameraOptics( child );nttttttbreak;nntttt}nnttt}nntttlibrary.cameras[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parseCameraOptics( xml ) {nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttswitch ( child.nodeName ) {nntttttcase 'technique_common':nttttttreturn parseCameraTechnique( child );nntttt}nnttt}nntttreturn {};nntt}nnttfunction parseCameraTechnique( xml ) {nntttvar data = {};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttswitch ( child.nodeName ) {nntttttcase 'perspective':ntttttcase 'orthographic':nnttttttdata.technique = child.nodeName;nttttttdata.parameters = parseCameraParameters( child );nnttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseCameraParameters( xml ) {nntttvar data = {};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttswitch ( child.nodeName ) {nntttttcase 'xfov':ntttttcase 'yfov':ntttttcase 'xmag':ntttttcase 'ymag':ntttttcase 'znear':ntttttcase 'zfar':ntttttcase 'aspect_ratio':nttttttdata[ child.nodeName ] = parseFloat( child.textContent );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction buildCamera( data ) {nntttvar camera;nntttswitch ( data.optics.technique ) {nnttttcase 'perspective':ntttttcamera = new PerspectiveCamera(nttttttdata.optics.parameters.yfov,nttttttdata.optics.parameters.aspect_ratio,nttttttdata.optics.parameters.znear,nttttttdata.optics.parameters.zfarnttttt);ntttttbreak;nnttttcase 'orthographic':ntttttvar ymag = data.optics.parameters.ymag;ntttttvar xmag = data.optics.parameters.xmag;ntttttvar aspectRatio = data.optics.parameters.aspect_ratio;nntttttxmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag;ntttttymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag;nntttttxmag *= 0.5;ntttttymag *= 0.5;nntttttcamera = new OrthographicCamera(ntttttt- xmag, xmag, ymag, - ymag, // left, right, top, bottomnttttttdata.optics.parameters.znear,nttttttdata.optics.parameters.zfarnttttt);ntttttbreak;nnttttdefault:ntttttcamera = new PerspectiveCamera();ntttttbreak;nnttt}nntttcamera.name = data.name || '';nntttreturn camera;nntt}nnttfunction getCamera( id ) {nntttvar data = library.cameras[ id ];nntttif ( data !== undefined ) {nnttttreturn getBuild( data, buildCamera );nnttt}nntttconsole.warn( 'THREE.ColladaLoader: Couldn\'t find camera with ID:', id );nntttreturn null;nntt}nntt// lightnnttfunction parseLight( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'technique_common':nttttttdata = parseLightTechnique( child );nttttttbreak;nntttt}nnttt}nntttlibrary.lights[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parseLightTechnique( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'directional':ntttttcase 'point':ntttttcase 'spot':ntttttcase 'ambient':nnttttttdata.technique = child.nodeName;nttttttdata.parameters = parseLightParameters( child );nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseLightParameters( xml ) {nntttvar data = {};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'color':nttttttvar array = parseFloats( child.textContent );nttttttdata.color = new Color().fromArray( array );nttttttbreak;nntttttcase 'falloff_angle':nttttttdata.falloffAngle = parseFloat( child.textContent );nttttttbreak;nntttttcase 'quadratic_attenuation':nttttttvar f = parseFloat( child.textContent );nttttttdata.distance = f ? Math.sqrt( 1 / f ) : 0;nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction buildLight( data ) {nntttvar light;nntttswitch ( data.technique ) {nnttttcase 'directional':ntttttlight = new DirectionalLight();ntttttbreak;nnttttcase 'point':ntttttlight = new PointLight();ntttttbreak;nnttttcase 'spot':ntttttlight = new SpotLight();ntttttbreak;nnttttcase 'ambient':ntttttlight = new AmbientLight();ntttttbreak;nnttt}nntttif ( data.parameters.color ) light.color.copy( data.parameters.color );ntttif ( data.parameters.distance ) light.distance = data.parameters.distance;nntttreturn light;nntt}nnttfunction getLight( id ) {nntttvar data = library.lights[ id ];nntttif ( data !== undefined ) {nnttttreturn getBuild( data, buildLight );nnttt}nntttconsole.warn( 'THREE.ColladaLoader: Couldn\'t find light with ID:', id );nntttreturn null;nntt}nntt// geometrynnttfunction parseGeometry( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' ),nttttsources: {},nttttvertices: {},nttttprimitives: []nttt};nntttvar mesh = getElementsByTagName( xml, 'mesh' )[ 0 ];nnttt// the following tags inside geometry are not supported yet (see github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brepntttif ( mesh === undefined ) return;nntttfor ( var i = 0; i < mesh.childNodes.length; i ++ ) {nnttttvar child = mesh.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttvar id = child.getAttribute( 'id' );nnttttswitch ( child.nodeName ) {nntttttcase 'source':nttttttdata.sources[ id ] = parseSource( child );nttttttbreak;nntttttcase 'vertices':ntttttt// data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ];nttttttdata.vertices = parseGeometryVertices( child );nttttttbreak;nntttttcase 'polygons':nttttttconsole.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );nttttttbreak;nntttttcase 'lines':ntttttcase 'linestrips':ntttttcase 'polylist':ntttttcase 'triangles':nttttttdata.primitives.push( parseGeometryPrimitive( child ) );nttttttbreak;nntttttdefault:nttttttconsole.log( child );nntttt}nnttt}nntttlibrary.geometries[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parseSource( xml ) {nntttvar data = {nttttarray: [],nttttstride: 3nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'float_array':nttttttdata.array = parseFloats( child.textContent );nttttttbreak;nntttttcase 'Name_array':nttttttdata.array = parseStrings( child.textContent );nttttttbreak;nntttttcase 'technique_common':nttttttvar accessor = getElementsByTagName( child, 'accessor' )[ 0 ];nnttttttif ( accessor !== undefined ) {nntttttttdata.stride = parseInt( accessor.getAttribute( 'stride' ) );nntttttt}nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseGeometryVertices( xml ) {nntttvar data = {};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttdata[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) );nnttt}nntttreturn data;nntt}nnttfunction parseGeometryPrimitive( xml ) {nntttvar primitive = {ntttttype: xml.nodeName,nttttmaterial: xml.getAttribute( 'material' ),nttttcount: parseInt( xml.getAttribute( 'count' ) ),nttttinputs: {},nttttstride: 0,ntttthasUV: falsenttt};nntttfor ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'input':nttttttvar id = parseId( child.getAttribute( 'source' ) );nttttttvar semantic = child.getAttribute( 'semantic' );nttttttvar offset = parseInt( child.getAttribute( 'offset' ) );nttttttvar set = parseInt( child.getAttribute( 'set' ) );nttttttvar inputname = ( set > 0 ? semantic + set : semantic );nttttttprimitive.inputs[ inputname ] = { id: id, offset: offset };nttttttprimitive.stride = Math.max( primitive.stride, offset + 1 );nttttttif ( semantic === 'TEXCOORD' ) primitive.hasUV = true;nttttttbreak;nntttttcase 'vcount':nttttttprimitive.vcount = parseInts( child.textContent );nttttttbreak;nntttttcase 'p':nttttttprimitive.p = parseInts( child.textContent );nttttttbreak;nntttt}nnttt}nntttreturn primitive;nntt}nnttfunction groupPrimitives( primitives ) {nntttvar build = {};nntttfor ( var i = 0; i < primitives.length; i ++ ) {nnttttvar primitive = primitives[ i ];nnttttif ( build[ primitive.type ] === undefined ) build[ primitive.type ] = [];nnttttbuild[ primitive.type ].push( primitive );nnttt}nntttreturn build;nntt}nnttfunction checkUVCoordinates( primitives ) {nntttvar count = 0;nntttfor ( var i = 0, l = primitives.length; i < l; i ++ ) {nnttttvar primitive = primitives[ i ];nnttttif ( primitive.hasUV === true ) {nntttttcount ++;nntttt}nnttt}nntttif ( count > 0 && count < primitives.length ) {nnttttprimitives.uvsNeedsFix = true;nnttt}nntt}nnttfunction buildGeometry( data ) {nntttvar build = {};nntttvar sources = data.sources;ntttvar vertices = data.vertices;ntttvar primitives = data.primitives;nntttif ( primitives.length === 0 ) return {};nnttt// our goal is to create one buffer geometry for a single type of primitivesnttt// first, we group all primitives by their typenntttvar groupedPrimitives = groupPrimitives( primitives );nntttfor ( var type in groupedPrimitives ) {nnttttvar primitiveType = groupedPrimitives[ type ];nntttt// second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines)nnttttcheckUVCoordinates( primitiveType );nntttt// third, create a buffer geometry for each type of primitivesnnttttbuild[ type ] = buildGeometryType( primitiveType, sources, vertices );nnttt}nntttreturn build;nntt}nnttfunction buildGeometryType( primitives, sources, vertices ) {nntttvar build = {};nntttvar position = { array: [], stride: 0 };ntttvar normal = { array: [], stride: 0 };ntttvar uv = { array: [], stride: 0 };ntttvar uv2 = { array: [], stride: 0 };ntttvar color = { array: [], stride: 0 };nntttvar skinIndex = { array: [], stride: 4 };ntttvar skinWeight = { array: [], stride: 4 };nntttvar geometry = new BufferGeometry();nntttvar materialKeys = [];nntttvar start = 0;nntttfor ( var p = 0; p < primitives.length; p ++ ) {nnttttvar primitive = primitives[ p ];nttttvar inputs = primitive.inputs;nntttt// groupsnnttttvar count = 0;nnttttswitch ( primitive.type ) {nntttttcase 'lines':ntttttcase 'linestrips':nttttttcount = primitive.count * 2;nttttttbreak;nntttttcase 'triangles':nttttttcount = primitive.count * 3;nttttttbreak;nntttttcase 'polylist':nnttttttfor ( var g = 0; g < primitive.count; g ++ ) {nntttttttvar vc = primitive.vcount[ g ];nntttttttswitch ( vc ) {nnttttttttcase 3:ntttttttttcount += 3; // single trianglentttttttttbreak;nnttttttttcase 4:ntttttttttcount += 6; // quad, subdivided into two trianglesntttttttttbreak;nnttttttttdefault:ntttttttttcount += ( vc - 2 ) * 3; // polylist with more than four verticesntttttttttbreak;nnttttttt}nntttttt}nnttttttbreak;nntttttdefault:nttttttconsole.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );nntttt}nnttttgeometry.addGroup( start, count, p );nttttstart += count;nntttt// materialnnttttif ( primitive.material ) {nntttttmaterialKeys.push( primitive.material );nntttt}nntttt// geometry datannttttfor ( var name in inputs ) {nntttttvar input = inputs[ name ];nntttttswitch ( name )t{nnttttttcase 'VERTEX':ntttttttfor ( var key in vertices ) {nnttttttttvar id = vertices[ key ];nnttttttttswitch ( key ) {nntttttttttcase 'POSITION':nttttttttttvar prevLength = position.array.length;nttttttttttbuildGeometryData( primitive, sources[ id ], input.offset, position.array );nttttttttttposition.stride = sources[ id ].stride;nnttttttttttif ( sources.skinWeights && sources.skinIndices ) {nntttttttttttbuildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array );ntttttttttttbuildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array );nntttttttttt}nntttttttttt// see #3803nnttttttttttif ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) {nntttttttttttvar count = ( position.array.length - prevLength ) / position.stride;nntttttttttttfor ( var i = 0; i < count; i ++ ) {nntttttttttttt// fill missing uv coordinatesnnttttttttttttuv.array.push( 0, 0 );nnttttttttttt}nntttttttttt}nttttttttttbreak;nntttttttttcase 'NORMAL':nttttttttttbuildGeometryData( primitive, sources[ id ], input.offset, normal.array );nttttttttttnormal.stride = sources[ id ].stride;nttttttttttbreak;nntttttttttcase 'COLOR':nttttttttttbuildGeometryData( primitive, sources[ id ], input.offset, color.array );nttttttttttcolor.stride = sources[ id ].stride;nttttttttttbreak;nntttttttttcase 'TEXCOORD':nttttttttttbuildGeometryData( primitive, sources[ id ], input.offset, uv.array );nttttttttttuv.stride = sources[ id ].stride;nttttttttttbreak;nntttttttttcase 'TEXCOORD1':nttttttttttbuildGeometryData( primitive, sources[ id ], input.offset, uv2.array );nttttttttttuv.stride = sources[ id ].stride;nttttttttttbreak;nntttttttttdefault:nttttttttttconsole.warn( 'THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', key );nntttttttt}nnttttttt}ntttttttbreak;nnttttttcase 'NORMAL':ntttttttbuildGeometryData( primitive, sources[ input.id ], input.offset, normal.array );ntttttttnormal.stride = sources[ input.id ].stride;ntttttttbreak;nnttttttcase 'COLOR':ntttttttbuildGeometryData( primitive, sources[ input.id ], input.offset, color.array );ntttttttcolor.stride = sources[ input.id ].stride;ntttttttbreak;nnttttttcase 'TEXCOORD':ntttttttbuildGeometryData( primitive, sources[ input.id ], input.offset, uv.array );ntttttttuv.stride = sources[ input.id ].stride;ntttttttbreak;nnttttttcase 'TEXCOORD1':ntttttttbuildGeometryData( primitive, sources[ input.id ], input.offset, uv2.array );ntttttttuv2.stride = sources[ input.id ].stride;ntttttttbreak;nnttttt}nntttt}nnttt}nnttt// build geometrynntttif ( position.array.length > 0 ) geometry.addAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) );ntttif ( normal.array.length > 0 ) geometry.addAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) );ntttif ( color.array.length > 0 ) geometry.addAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) );ntttif ( uv.array.length > 0 ) geometry.addAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) );ntttif ( uv2.array.length > 0 ) geometry.addAttribute( 'uv2', new Float32BufferAttribute( uv2.array, uv2.stride ) );nntttif ( skinIndex.array.length > 0 ) geometry.addAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );ntttif ( skinWeight.array.length > 0 ) geometry.addAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );nntttbuild.data = geometry;ntttbuild.type = primitives[ 0 ].type;ntttbuild.materialKeys = materialKeys;nntttreturn build;nntt}nnttfunction buildGeometryData( primitive, source, offset, array ) {nntttvar indices = primitive.p;ntttvar stride = primitive.stride;ntttvar vcount = primitive.vcount;nntttfunction pushVector( i ) {nnttttvar index = indices[ i + offset ] * sourceStride;nttttvar length = index + sourceStride;nnttttfor ( ; index < length; index ++ ) {nntttttarray.push( sourceArray[ index ] );nntttt}nnttt}nntttvar sourceArray = source.array;ntttvar sourceStride = source.stride;nntttif ( primitive.vcount !== undefined ) {nnttttvar index = 0;nnttttfor ( var i = 0, l = vcount.length; i < l; i ++ ) {nntttttvar count = vcount[ i ];nntttttif ( count === 4 ) {nnttttttvar a = index + stride * 0;nttttttvar b = index + stride * 1;nttttttvar c = index + stride * 2;nttttttvar d = index + stride * 3;nnttttttpushVector( a ); pushVector( b ); pushVector( d );nttttttpushVector( b ); pushVector( c ); pushVector( d );nnttttt} else if ( count === 3 ) {nnttttttvar a = index + stride * 0;nttttttvar b = index + stride * 1;nttttttvar c = index + stride * 2;nnttttttpushVector( a ); pushVector( b ); pushVector( c );nnttttt} else if ( count > 4 ) {nnttttttfor ( var k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {nntttttttvar a = index + stride * 0;ntttttttvar b = index + stride * k;ntttttttvar c = index + stride * ( k + 1 );nntttttttpushVector( a ); pushVector( b ); pushVector( c );nntttttt}nnttttt}nntttttindex += stride * count;nntttt}nnttt} else {nnttttfor ( var i = 0, l = indices.length; i < l; i += stride ) {nntttttpushVector( i );nntttt}nnttt}nntt}nnttfunction getGeometry( id ) {nntttreturn getBuild( library.geometries[ id ], buildGeometry );nntt}nntt// kinematicsnnttfunction parseKinematicsModel( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' ) || '',nttttjoints: {},nttttlinks: []nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'technique_common':nttttttparseKinematicsTechniqueCommon( child, data );nttttttbreak;nntttt}nnttt}nntttlibrary.kinematicsModels[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction buildKinematicsModel( data ) {nntttif ( data.build !== undefined ) return data.build;nntttreturn data;nntt}nnttfunction getKinematicsModel( id ) {nntttreturn getBuild( library.kinematicsModels[ id ], buildKinematicsModel );nntt}nnttfunction parseKinematicsTechniqueCommon( xml, data ) {nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'joint':nttttttdata.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child );nttttttbreak;nntttttcase 'link':nttttttdata.links.push( parseKinematicsLink( child ) );nttttttbreak;nntttt}nnttt}nntt}nnttfunction parseKinematicsJoint( xml ) {nntttvar data;nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'prismatic':ntttttcase 'revolute':nttttttdata = parseKinematicsJointParameter( child );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseKinematicsJointParameter( xml, data ) {nntttvar data = {nttttsid: xml.getAttribute( 'sid' ),nttttname: xml.getAttribute( 'name' ) || '',nttttaxis: new Vector3(),nttttlimits: {ntttttmin: 0,ntttttmax: 0ntttt},ntttttype: xml.nodeName,nttttstatic: false,nttttzeroPosition: 0,nttttmiddlePosition: 0nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'axis':nttttttvar array = parseFloats( child.textContent );nttttttdata.axis.fromArray( array );nttttttbreak;ntttttcase 'limits':nttttttvar max = child.getElementsByTagName( 'max' )[ 0 ];nttttttvar min = child.getElementsByTagName( 'min' )[ 0 ];nnttttttdata.limits.max = parseFloat( max.textContent );nttttttdata.limits.min = parseFloat( min.textContent );nttttttbreak;nntttt}nnttt}nnttt// if min is equal to or greater than max, consider the joint staticnntttif ( data.limits.min >= data.limits.max ) {nnttttdata.static = true;nnttt}nnttt// calculate middle positionnntttdata.middlePosition = ( data.limits.min + data.limits.max ) / 2.0;nntttreturn data;nntt}nnttfunction parseKinematicsLink( xml ) {nntttvar data = {nttttsid: xml.getAttribute( 'sid' ),nttttname: xml.getAttribute( 'name' ) || '',nttttattachments: [],ntttttransforms: []nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'attachment_full':nttttttdata.attachments.push( parseKinematicsAttachment( child ) );nttttttbreak;nntttttcase 'matrix':ntttttcase 'translate':ntttttcase 'rotate':nttttttdata.transforms.push( parseKinematicsTransform( child ) );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseKinematicsAttachment( xml ) {nntttvar data = {nttttjoint: xml.getAttribute( 'joint' ).split( '/' ).pop(),ntttttransforms: [],nttttlinks: []nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'link':nttttttdata.links.push( parseKinematicsLink( child ) );nttttttbreak;nntttttcase 'matrix':ntttttcase 'translate':ntttttcase 'rotate':nttttttdata.transforms.push( parseKinematicsTransform( child ) );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction parseKinematicsTransform( xml ) {nntttvar data = {ntttttype: xml.nodeNamenttt};nntttvar array = parseFloats( xml.textContent );nntttswitch ( data.type ) {nnttttcase 'matrix':ntttttdata.obj = new Matrix4();ntttttdata.obj.fromArray( array ).transpose();ntttttbreak;nnttttcase 'translate':ntttttdata.obj = new Vector3();ntttttdata.obj.fromArray( array );ntttttbreak;nnttttcase 'rotate':ntttttdata.obj = new Vector3();ntttttdata.obj.fromArray( array );ntttttdata.angle = _Math.degToRad( array[ 3 ] );ntttttbreak;nnttt}nntttreturn data;nntt}nntt// physicsnnttfunction parsePhysicsModel( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' ) || '',nttttrigidBodies: {}nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'rigid_body':nttttttdata.rigidBodies[ child.getAttribute( 'name' ) ] = {};nttttttparsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] );nttttttbreak;nntttt}nnttt}nntttlibrary.physicsModels[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction parsePhysicsRigidBody( xml, data ) {nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'technique_common':nttttttparsePhysicsTechniqueCommon( child, data );nttttttbreak;nntttt}nnttt}nntt}nnttfunction parsePhysicsTechniqueCommon( xml, data ) {nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'inertia':nttttttdata.inertia = parseFloats( child.textContent );nttttttbreak;nntttttcase 'mass':nttttttdata.mass = parseFloats( child.textContent )[ 0 ];nttttttbreak;nntttt}nnttt}nntt}nntt// scenennttfunction parseKinematicsScene( xml ) {nntttvar data = {nttttbindJointAxis: []nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'bind_joint_axis':nttttttdata.bindJointAxis.push( parseKinematicsBindJointAxis( child ) );nttttttbreak;nntttt}nnttt}nntttlibrary.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data;nntt}nnttfunction parseKinematicsBindJointAxis( xml ) {nntttvar data = {ntttttarget: xml.getAttribute( 'target' ).split( '/' ).pop()nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'axis':nttttttvar param = child.getElementsByTagName( 'param' )[ 0 ];nttttttdata.axis = param.textContent;nttttttvar tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ];nttttttdata.jointIndex = tmpJointIndex.substr( 0, tmpJointIndex.length - 1 );nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction buildKinematicsScene( data ) {nntttif ( data.build !== undefined ) return data.build;nntttreturn data;nntt}nnttfunction getKinematicsScene( id ) {nntttreturn getBuild( library.kinematicsScenes[ id ], buildKinematicsScene );nntt}nnttfunction setupKinematics() {nntttvar kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ];ntttvar kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ];ntttvar visualSceneId = Object.keys( library.visualScenes )[ 0 ];nntttif ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return;nntttvar kinematicsModel = getKinematicsModel( kinematicsModelId );ntttvar kinematicsScene = getKinematicsScene( kinematicsSceneId );ntttvar visualScene = getVisualScene( visualSceneId );nntttvar bindJointAxis = kinematicsScene.bindJointAxis;ntttvar jointMap = {};nntttfor ( var i = 0, l = bindJointAxis.length; i < l; i ++ ) {nnttttvar axis = bindJointAxis[ i ];nntttt// the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix'nnttttvar targetElement = collada.querySelector( '[sid="' + axis.target + '"]' );nnttttif ( targetElement ) {nnttttt// get the parent of the transfrom elementnntttttvar parentVisualElement = targetElement.parentElement;nnttttt// connect the joint of the kinematics model with the element in the visual scenenntttttconnect( axis.jointIndex, parentVisualElement );nntttt}nnttt}nntttfunction connect( jointIndex, visualElement ) {nnttttvar visualElementName = visualElement.getAttribute( 'name' );nttttvar joint = kinematicsModel.joints[ jointIndex ];nnttttvisualScene.traverse( function ( object ) {nntttttif ( object.name === visualElementName ) {nnttttttjointMap[ jointIndex ] = {ntttttttobject: object,nttttttttransforms: buildTransformList( visualElement ),ntttttttjoint: joint,ntttttttposition: joint.zeroPositionntttttt};nnttttt}nntttt} );nnttt}nntttvar m0 = new Matrix4();nntttkinematics = {nnttttjoints: kinematicsModel && kinematicsModel.joints,nnttttgetJointValue: function ( jointIndex ) {nntttttvar jointData = jointMap[ jointIndex ];nntttttif ( jointData ) {nnttttttreturn jointData.position;nnttttt} else {nnttttttconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\'t exist.' );nnttttt}nntttt},nnttttsetJointValue: function ( jointIndex, value ) {nntttttvar jointData = jointMap[ jointIndex ];nntttttif ( jointData ) {nnttttttvar joint = jointData.joint;nnttttttif ( value > joint.limits.max || value < joint.limits.min ) {nntttttttconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' );nntttttt} else if ( joint.static ) {nntttttttconsole.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' );nntttttt} else {nntttttttvar object = jointData.object;ntttttttvar axis = joint.axis;ntttttttvar transforms = jointData.transforms;nntttttttmatrix.identity();nnttttttt// each update, we have to apply all transforms in the correct ordernntttttttfor ( var i = 0; i < transforms.length; i ++ ) {nnttttttttvar transform = transforms[ i ];nntttttttt// if there is a connection of the transform node with a joint, apply the joint valuennttttttttif ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) {nntttttttttswitch ( joint.type ) {nnttttttttttcase 'revolute':ntttttttttttmatrix.multiply( m0.makeRotationAxis( axis, _Math.degToRad( value ) ) );ntttttttttttbreak;nnttttttttttcase 'prismatic':ntttttttttttmatrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) );ntttttttttttbreak;nnttttttttttdefault:ntttttttttttconsole.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type );ntttttttttttbreak;nnttttttttt}nntttttttt} else {nntttttttttswitch ( transform.type ) {nnttttttttttcase 'matrix':ntttttttttttmatrix.multiply( transform.obj );ntttttttttttbreak;nnttttttttttcase 'translate':ntttttttttttmatrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) );ntttttttttttbreak;nnttttttttttcase 'scale':ntttttttttttmatrix.scale( transform.obj );ntttttttttttbreak;nnttttttttttcase 'rotate':ntttttttttttmatrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) );ntttttttttttbreak;nnttttttttt}nntttttttt}nnttttttt}nntttttttobject.matrix.copy( matrix );ntttttttobject.matrix.decompose( object.position, object.quaternion, object.scale );nntttttttjointMap[ jointIndex ].position = value;nntttttt}nnttttt} else {nnttttttconsole.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' );nnttttt}nntttt}nnttt};nntt}nnttfunction buildTransformList( node ) {nntttvar transforms = [];nntttvar xml = collada.querySelector( '[id="' + node.id + '"]' );nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'matrix':nttttttvar array = parseFloats( child.textContent );nttttttvar matrix = new Matrix4().fromArray( array ).transpose();ntttttttransforms.push( {ntttttttsid: child.getAttribute( 'sid' ),nttttttttype: child.nodeName,ntttttttobj: matrixntttttt} );nttttttbreak;nntttttcase 'translate':ntttttcase 'scale':nttttttvar array = parseFloats( child.textContent );nttttttvar vector = new Vector3().fromArray( array );ntttttttransforms.push( {ntttttttsid: child.getAttribute( 'sid' ),nttttttttype: child.nodeName,ntttttttobj: vectorntttttt} );nttttttbreak;nntttttcase 'rotate':nttttttvar array = parseFloats( child.textContent );nttttttvar vector = new Vector3().fromArray( array );nttttttvar angle = _Math.degToRad( array[ 3 ] );ntttttttransforms.push( {ntttttttsid: child.getAttribute( 'sid' ),nttttttttype: child.nodeName,ntttttttobj: vector,ntttttttangle: anglentttttt} );nttttttbreak;nntttt}nnttt}nntttreturn transforms;nntt}nntt// nodesnnttfunction prepareNodes( xml ) {nntttvar elements = xml.getElementsByTagName( 'node' );nnttt// ensure all node elements have id attributesnntttfor ( var i = 0; i < elements.length; i ++ ) {nnttttvar element = elements[ i ];nnttttif ( element.hasAttribute( 'id' ) === false ) {nntttttelement.setAttribute( 'id', generateId() );nntttt}nnttt}nntt}nnttvar matrix = new Matrix4();nttvar vector = new Vector3();nnttfunction parseNode( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' ) || '',ntttttype: xml.getAttribute( 'type' ),nttttid: xml.getAttribute( 'id' ),nttttsid: xml.getAttribute( 'sid' ),nttttmatrix: new Matrix4(),nttttnodes: [],nttttinstanceCameras: [],nttttinstanceControllers: [],nttttinstanceLights: [],nttttinstanceGeometries: [],nttttinstanceNodes: [],ntttttransforms: {}nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttif ( child.nodeType !== 1 ) continue;nnttttswitch ( child.nodeName ) {nntttttcase 'node':nttttttdata.nodes.push( child.getAttribute( 'id' ) );nttttttparseNode( child );nttttttbreak;nntttttcase 'instance_camera':nttttttdata.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );nttttttbreak;nntttttcase 'instance_controller':nttttttdata.instanceControllers.push( parseNodeInstance( child ) );nttttttbreak;nntttttcase 'instance_light':nttttttdata.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );nttttttbreak;nntttttcase 'instance_geometry':nttttttdata.instanceGeometries.push( parseNodeInstance( child ) );nttttttbreak;nntttttcase 'instance_node':nttttttdata.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );nttttttbreak;nntttttcase 'matrix':nttttttvar array = parseFloats( child.textContent );nttttttdata.matrix.multiply( matrix.fromArray( array ).transpose() );nttttttdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;nttttttbreak;nntttttcase 'translate':nttttttvar array = parseFloats( child.textContent );nttttttvector.fromArray( array );nttttttdata.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) );nttttttdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;nttttttbreak;nntttttcase 'rotate':nttttttvar array = parseFloats( child.textContent );nttttttvar angle = _Math.degToRad( array[ 3 ] );nttttttdata.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) );nttttttdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;nttttttbreak;nntttttcase 'scale':nttttttvar array = parseFloats( child.textContent );nttttttdata.matrix.scale( vector.fromArray( array ) );nttttttdata.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName;nttttttbreak;nntttttcase 'extra':nttttttbreak;nntttttdefault:nttttttconsole.log( child );nntttt}nnttt}nntttif ( hasNode( data.id ) ) {nnttttconsole.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id );nnttt} else {nnttttlibrary.nodes[ data.id ] = data;nnttt}nntttreturn data;nntt}nnttfunction parseNodeInstance( xml ) {nntttvar data = {nttttid: parseId( xml.getAttribute( 'url' ) ),nttttmaterials: {},nttttskeletons: []nttt};nntttfor ( var i = 0; i < xml.childNodes.length; i ++ ) {nnttttvar child = xml.childNodes[ i ];nnttttswitch ( child.nodeName ) {nntttttcase 'bind_material':nttttttvar instances = child.getElementsByTagName( 'instance_material' );nnttttttfor ( var j = 0; j < instances.length; j ++ ) {nntttttttvar instance = instances[ j ];ntttttttvar symbol = instance.getAttribute( 'symbol' );ntttttttvar target = instance.getAttribute( 'target' );nntttttttdata.materials[ symbol ] = parseId( target );nntttttt}nnttttttbreak;nntttttcase 'skeleton':nttttttdata.skeletons.push( parseId( child.textContent ) );nttttttbreak;nntttttdefault:nttttttbreak;nntttt}nnttt}nntttreturn data;nntt}nnttfunction buildSkeleton( skeletons, joints ) {nntttvar boneData = [];ntttvar sortedBoneData = [];nntttvar i, j, data;nnttt// a skeleton can have multiple root bones. collada expresses thisnttt// situtation with multiple "skeleton" tags per controller instancenntttfor ( i = 0; i < skeletons.length; i ++ ) {nnttttvar skeleton = skeletons[ i ];nnttttvar root;nnttttif ( hasNode( skeleton ) ) {nntttttroot = getNode( skeleton );ntttttbuildBoneHierarchy( root, joints, boneData );nntttt} else if ( hasVisualScene( skeleton ) ) {nnttttt// handle case where the skeleton refers to the visual scene (#13335)nntttttvar visualScene = library.visualScenes[ skeleton ];ntttttvar children = visualScene.children;nntttttfor ( var j = 0; j < children.length; j ++ ) {nnttttttvar child = children[ j ];nnttttttif ( child.type === 'JOINT' ) {nntttttttvar root = getNode( child.id );ntttttttbuildBoneHierarchy( root, joints, boneData );nntttttt}nnttttt}nntttt} else {nntttttconsole.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton );nntttt}nnttt}nnttt// sort bone data (the order is defined in the corresponding controller)nntttfor ( i = 0; i < joints.length; i ++ ) {nnttttfor ( j = 0; j < boneData.length; j ++ ) {nntttttdata = boneData[ j ];nntttttif ( data.bone.name === joints[ i ].name ) {nnttttttsortedBoneData[ i ] = data;nttttttdata.processed = true;nttttttbreak;nnttttt}nntttt}nnttt}nnttt// add unprocessed bone data at the end of the listnntttfor ( i = 0; i < boneData.length; i ++ ) {nnttttdata = boneData[ i ];nnttttif ( data.processed === false ) {nntttttsortedBoneData.push( data );ntttttdata.processed = true;nntttt}nnttt}nnttt// setup arrays for skeleton creationnntttvar bones = [];ntttvar boneInverses = [];nntttfor ( i = 0; i < sortedBoneData.length; i ++ ) {nnttttdata = sortedBoneData[ i ];nnttttbones.push( data.bone );nttttboneInverses.push( data.boneInverse );nnttt}nntttreturn new Skeleton( bones, boneInverses );nntt}nnttfunction buildBoneHierarchy( root, joints, boneData ) {nnttt// setup bone data from visual scenenntttroot.traverse( function ( object ) {nnttttif ( object.isBone === true ) {nntttttvar boneInverse;nnttttt// retrieve the boneInverse from the controller datanntttttfor ( var i = 0; i < joints.length; i ++ ) {nnttttttvar joint = joints[ i ];nnttttttif ( joint.name === object.name ) {nntttttttboneInverse = joint.boneInverse;ntttttttbreak;nntttttt}nnttttt}nntttttif ( boneInverse === undefined ) {nntttttt// Unfortunately, there can be joints in the visual scene that are not part of thentttttt// corresponding controller. In this case, we have to create a dummy boneInverse matrixntttttt// for the respective bone. This bone won't affect any vertices, because there are no skin indicesntttttt// and weights defined for it. But we still have to add the bone to the sorted bone list in order tontttttt// ensure a correct animation of the model.nnttttttboneInverse = new Matrix4();nnttttt}nntttttboneData.push( { bone: object, boneInverse: boneInverse, processed: false } );nntttt}nnttt} );nntt}nnttfunction buildNode( data ) {nntttvar objects = [];nntttvar matrix = data.matrix;ntttvar nodes = data.nodes;ntttvar type = data.type;ntttvar instanceCameras = data.instanceCameras;ntttvar instanceControllers = data.instanceControllers;ntttvar instanceLights = data.instanceLights;ntttvar instanceGeometries = data.instanceGeometries;ntttvar instanceNodes = data.instanceNodes;nnttt// nodesnntttfor ( var i = 0, l = nodes.length; i < l; i ++ ) {nnttttobjects.push( getNode( nodes[ i ] ) );nnttt}nnttt// instance camerasnntttfor ( var i = 0, l = instanceCameras.length; i < l; i ++ ) {nnttttvar instanceCamera = getCamera( instanceCameras[ i ] );nnttttif ( instanceCamera !== null ) {nntttttobjects.push( instanceCamera.clone() );nntttt}nnttt}nnttt// instance controllersnntttfor ( var i = 0, l = instanceControllers.length; i < l; i ++ ) {nnttttvar instance = instanceControllers[ i ];nttttvar controller = getController( instance.id );nttttvar geometries = getGeometry( controller.id );nttttvar newObjects = buildObjects( geometries, instance.materials );nnttttvar skeletons = instance.skeletons;nttttvar joints = controller.skin.joints;nnttttvar skeleton = buildSkeleton( skeletons, joints );nnttttfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {nntttttvar object = newObjects[ j ];nntttttif ( object.isSkinnedMesh ) {nnttttttobject.bind( skeleton, controller.skin.bindMatrix );nttttttobject.normalizeSkinWeights();nnttttt}nntttttobjects.push( object );nntttt}nnttt}nnttt// instance lightsnntttfor ( var i = 0, l = instanceLights.length; i < l; i ++ ) {nnttttvar instanceLight = getLight( instanceLights[ i ] );nnttttif ( instanceLight !== null ) {nntttttobjects.push( instanceLight.clone() );nntttt}nnttt}nnttt// instance geometriesnntttfor ( var i = 0, l = instanceGeometries.length; i < l; i ++ ) {nnttttvar instance = instanceGeometries[ i ];nntttt// a single geometry instance in collada can lead to multiple object3Ds.ntttt// this is the case when primitives are combined like triangles and linesnnttttvar geometries = getGeometry( instance.id );nttttvar newObjects = buildObjects( geometries, instance.materials );nnttttfor ( var j = 0, jl = newObjects.length; j < jl; j ++ ) {nntttttobjects.push( newObjects[ j ] );nntttt}nnttt}nnttt// instance nodesnntttfor ( var i = 0, l = instanceNodes.length; i < l; i ++ ) {nnttttobjects.push( getNode( instanceNodes[ i ] ).clone() );nnttt}nntttvar object;nntttif ( nodes.length === 0 && objects.length === 1 ) {nnttttobject = objects[ 0 ];nnttt} else {nnttttobject = ( type === 'JOINT' ) ? new Bone() : new Group();nnttttfor ( var i = 0; i < objects.length; i ++ ) {nntttttobject.add( objects[ i ] );nntttt}nnttt}nntttif ( object.name === '' ) {nnttttobject.name = ( type === 'JOINT' ) ? data.sid : data.name;nnttt}nntttobject.matrix.copy( matrix );ntttobject.matrix.decompose( object.position, object.quaternion, object.scale );nntttreturn object;nntt}nnttvar fallbackMaterial = new MeshBasicMaterial( { color: 0xff00ff } );nnttfunction resolveMaterialBinding( keys, instanceMaterials ) {nntttvar materials = [];nntttfor ( var i = 0, l = keys.length; i < l; i ++ ) {nnttttvar id = instanceMaterials[ keys[ i ] ];nnttttif ( id === undefined ) {nntttttconsole.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] );ntttttmaterials.push( fallbackMaterial );nntttt} else {nntttttmaterials.push( getMaterial( id ) );nntttt}nnttt}nntttreturn materials;nntt}nnttfunction buildObjects( geometries, instanceMaterials ) {nntttvar objects = [];nntttfor ( var type in geometries ) {nnttttvar geometry = geometries[ type ];nnttttvar materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials );nntttt// handle case if no materials are definednnttttif ( materials.length === 0 ) {nntttttif ( type === 'lines' || type === 'linestrips' ) {nnttttttmaterials.push( new LineBasicMaterial() );nnttttt} else {nnttttttmaterials.push( new MeshPhongMaterial() );nnttttt}nntttt}nntttt// regard skinningnnttttvar skinning = ( geometry.data.attributes.skinIndex !== undefined );nnttttif ( skinning ) {nntttttfor ( var i = 0, l = materials.length; i < l; i ++ ) {nnttttttmaterials[ i ].skinning = true;nnttttt}nntttt}nntttt// choose between a single or multi materials (material array)nnttttvar material = ( materials.length === 1 ) ? materials[ 0 ] : materials;nntttt// now create a specific 3D objectnnttttvar object;nnttttswitch ( type ) {nntttttcase 'lines':nttttttobject = new LineSegments( geometry.data, material );nttttttbreak;nntttttcase 'linestrips':nttttttobject = new Line( geometry.data, material );nttttttbreak;nntttttcase 'triangles':ntttttcase 'polylist':nttttttif ( skinning ) {nntttttttobject = new SkinnedMesh( geometry.data, material );nntttttt} else {nntttttttobject = new Mesh( geometry.data, material );nntttttt}nttttttbreak;nntttt}nnttttobjects.push( object );nnttt}nntttreturn objects;nntt}nnttfunction hasNode( id ) {nntttreturn library.nodes[ id ] !== undefined;nntt}nnttfunction getNode( id ) {nntttreturn getBuild( library.nodes[ id ], buildNode );nntt}nntt// visual scenesnnttfunction parseVisualScene( xml ) {nntttvar data = {nttttname: xml.getAttribute( 'name' ),nttttchildren: []nttt};nntttprepareNodes( xml );nntttvar elements = getElementsByTagName( xml, 'node' );nntttfor ( var i = 0; i < elements.length; i ++ ) {nnttttdata.children.push( parseNode( elements[ i ] ) );nnttt}nntttlibrary.visualScenes[ xml.getAttribute( 'id' ) ] = data;nntt}nnttfunction buildVisualScene( data ) {nntttvar group = new Group();ntttgroup.name = data.name;nntttvar children = data.children;nntttfor ( var i = 0; i < children.length; i ++ ) {nnttttvar child = children[ i ];nnttttgroup.add( getNode( child.id ) );nnttt}nntttreturn group;nntt}nnttfunction hasVisualScene( id ) {nntttreturn library.visualScenes[ id ] !== undefined;nntt}nnttfunction getVisualScene( id ) {nntttreturn getBuild( library.visualScenes[ id ], buildVisualScene );nntt}nntt// scenesnnttfunction parseScene( xml ) {nntttvar instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ];ntttreturn getVisualScene( parseId( instance.getAttribute( 'url' ) ) );nntt}nnttfunction setupAnimations() {nntttvar clips = library.clips;nntttif ( isEmpty( clips ) === true ) {nnttttif ( isEmpty( library.animations ) === false ) {nnttttt// if there are animations but no clips, we create a default clip for playbacknntttttvar tracks = [];nntttttfor ( var id in library.animations ) {nnttttttvar animationTracks = getAnimation( id );nnttttttfor ( var i = 0, l = animationTracks.length; i < l; i ++ ) {nnttttttttracks.push( animationTracks[ i ] );nntttttt}nnttttt}nntttttanimations.push( new AnimationClip( 'default', - 1, tracks ) );nntttt}nnttt} else {nnttttfor ( var id in clips ) {nntttttanimations.push( getAnimationClip( id ) );nntttt}nnttt}nntt}nntt// convert the parser error element into text with each child elements textntt// separated by new lines.nnttfunction parserErrorToText( parserError ) {nntttvar result = '';ntttvar stack = [ parserError ];nntttwhile ( stack.length ) {nnttttvar node = stack.shift();nnttttif ( node.nodeType === Node.TEXT_NODE ) {nntttttresult += node.textContent;nntttt} else {nntttttresult += '\n';ntttttstack.push.apply( stack, node.childNodes );nntttt}nnttt}nntttreturn result.trim();nntt}nnttif ( text.length === 0 ) {nntttreturn { scene: new Scene() };nntt}nnttvar xml = new DOMParser().parseFromString( text, 'application/xml' );nnttvar collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ];nnttvar parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ];nttif ( parserError !== undefined ) {nnttt// Chrome will return parser error with a div in itnntttvar errorElement = getElementsByTagName( parserError, 'div' )[ 0 ];ntttvar errorText;nntttif ( errorElement ) {nntttterrorText = errorElement.textContent;nnttt} else {nntttterrorText = parserErrorToText( parserError );nnttt}nntttconsole.error( 'THREE.ColladaLoader: Failed to parse collada file.\n', errorText );nntttreturn null;nntt}nntt// metadatannttvar version = collada.getAttribute( 'version' );nttconsole.log( 'THREE.ColladaLoader: File version', version );nnttvar asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] );nttvar textureLoader = new TextureLoader( this.manager );ntttextureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );nnttvar tgaLoader;nnttif ( TGALoader ) {nnttttgaLoader = new TGALoader( this.manager );nttttgaLoader.setPath( this.resourcePath || path );nntt}nntt//nnttvar animations = [];nttvar kinematics = {};nttvar count = 0;nntt//nnttvar library = {ntttanimations: {},ntttclips: {},ntttcontrollers: {},ntttimages: {},nttteffects: {},ntttmaterials: {},ntttcameras: {},ntttlights: {},ntttgeometries: {},ntttnodes: {},ntttvisualScenes: {},ntttkinematicsModels: {},ntttphysicsModels: {},ntttkinematicsScenes: {}ntt};nnttparseLibrary( collada, 'library_animations', 'animation', parseAnimation );nttparseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip );nttparseLibrary( collada, 'library_controllers', 'controller', parseController );nttparseLibrary( collada, 'library_images', 'image', parseImage );nttparseLibrary( collada, 'library_effects', 'effect', parseEffect );nttparseLibrary( collada, 'library_materials', 'material', parseMaterial );nttparseLibrary( collada, 'library_cameras', 'camera', parseCamera );nttparseLibrary( collada, 'library_lights', 'light', parseLight );nttparseLibrary( collada, 'library_geometries', 'geometry', parseGeometry );nttparseLibrary( collada, 'library_nodes', 'node', parseNode );nttparseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene );nttparseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel );nttparseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel );nttparseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene );nnttbuildLibrary( library.animations, buildAnimation );nttbuildLibrary( library.clips, buildAnimationClip );nttbuildLibrary( library.controllers, buildController );nttbuildLibrary( library.images, buildImage );nttbuildLibrary( library.effects, buildEffect );nttbuildLibrary( library.materials, buildMaterial );nttbuildLibrary( library.cameras, buildCamera );nttbuildLibrary( library.lights, buildLight );nttbuildLibrary( library.geometries, buildGeometry );nttbuildLibrary( library.visualScenes, buildVisualScene );nnttsetupAnimations();nttsetupKinematics();nnttvar scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] );nnttif ( asset.upAxis === 'Z_UP' ) {nntttscene.quaternion.setFromEuler( new Euler( - Math.PI / 2, 0, 0 ) );nntt}nnttscene.scale.multiplyScalar( asset.unit );nnttreturn {ntttanimations: animations,ntttkinematics: kinematics,ntttlibrary: library,ntttscene: scenentt};nnt}nn};nnexport { ColladaLoader };”]},“metadata”:{},“sourceType”:“module”}