processNode( object ) {

    		const json = this.json;
    		const options = this.options;
    		const nodeMap = this.nodeMap;

    		if ( ! json.nodes ) json.nodes = [];

    		const nodeDef = {};

    		if ( options.trs ) {

    			const rotation = object.quaternion.toArray();
    			const position = object.position.toArray();
    			const scale = object.scale.toArray();

    			if ( ! equalArray( rotation, [ 0, 0, 0, 1 ] ) ) {

    				nodeDef.rotation = rotation;

    			}

    			if ( ! equalArray( position, [ 0, 0, 0 ] ) ) {

    				nodeDef.translation = position;

    			}

    			if ( ! equalArray( scale, [ 1, 1, 1 ] ) ) {

    				nodeDef.scale = scale;

    			}

    		} else {

    			if ( object.matrixAutoUpdate ) {

    				object.updateMatrix();

    			}

    			if ( isIdentityMatrix( object.matrix ) === false ) {

    				nodeDef.matrix = object.matrix.elements;

    			}

    		}

    		// We don't export empty strings name because it represents no-name in Three.js.
    		if ( object.name !== '' ) nodeDef.name = String( object.name );

    		this.serializeUserData( object, nodeDef );

    		if ( object.isMesh || object.isLine || object.isPoints ) {

    			const meshIndex = this.processMesh( object );

    			if ( meshIndex !== null ) nodeDef.mesh = meshIndex;

    		} else if ( object.isCamera ) {

    			nodeDef.camera = this.processCamera( object );

    		}

    		if ( object.isSkinnedMesh ) this.skins.push( object );

    		if ( object.children.length > 0 ) {

    			const children = [];

    			for ( let i = 0, l = object.children.length; i < l; i ++ ) {

    				const child = object.children[ i ];

    				if ( child.visible || options.onlyVisible === false ) {

    					const nodeIndex = this.processNode( child );

    					if ( nodeIndex !== null ) children.push( nodeIndex );

    				}

    			}

    			if ( children.length > 0 ) nodeDef.children = children;

    		}

    		this._invokeAll( function ( ext ) {

    			ext.writeNode && ext.writeNode( object, nodeDef );

    		} );

    		const nodeIndex = json.nodes.push( nodeDef ) - 1;
    		nodeMap.set( object, nodeIndex );
    		return nodeIndex;

    	}
Process Object3D node
@param  {THREE.Object3D} node Object3D to processNode
@return {Integer} Index of the node in the nodes list