<p dir="auto">When you clone an Object3D object that contains animation, the newly created object cannot be displayed in the scene.</p>
<p dir="auto">Skinned material need their own geometry to work. This is because the material deforms the geometry, so if you share the same geometry between two meshes with deformation, things are going to get weird (at least that's how I understand it).</p>
<p dir="auto">Now the problem is, if you load a mesh from a FBX or something else and it contains at some point a skinned mesh, and you need multiple instances of it, here's what happens:</p>
<ul dir="auto">
<li>You call <code class="notranslate">clone();</code> on the mesh to generate your new instances</li>
<li>The <code class="notranslate">clone</code> function doesn't generate a new geometry, so both models share geometry, and things gets bad (the mesh doesn't appear at all).</li>
</ul>
<p dir="auto">Here's a code sample: I was able to replicate this problem in the <code class="notranslate">webgl_loader_fbx.html</code> demo with a simple modification: Just clone the mesh once loaded before using it, and you'll see that the cloned version of it doesn't work:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="loader.load( 'models/fbx/xsi_man_skinning.fbx', function( originalObject ) {

	// Using a clone of the mesh, it won't work
	var object = originalObject.clone();
	object.mixer = new THREE.AnimationMixer( object );
	mixers.push( object.mixer );

	var action = object.mixer.clipAction( object.animations[ 0 ] );
	action.play();

	scene.add( object );


}, onProgress, onError );"><pre class="notranslate"><span class="pl-s1">loader</span><span class="pl-kos">.</span><span class="pl-en">load</span><span class="pl-kos">(</span> <span class="pl-s">'models/fbx/xsi_man_skinning.fbx'</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span> <span class="pl-s1">originalObject</span> <span class="pl-kos">)</span> <span class="pl-kos">{</span>

	<span class="pl-c">// Using a clone of the mesh, it won't work</span>
	<span class="pl-k">var</span> <span class="pl-s1">object</span> <span class="pl-c1">=</span> <span class="pl-s1">originalObject</span><span class="pl-kos">.</span><span class="pl-en">clone</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
	<span class="pl-s1">object</span><span class="pl-kos">.</span><span class="pl-c1">mixer</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-c1">THREE</span><span class="pl-kos">.</span><span class="pl-c1">AnimationMixer</span><span class="pl-kos">(</span> <span class="pl-s1">object</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>
	<span class="pl-s1">mixers</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span> <span class="pl-s1">object</span><span class="pl-kos">.</span><span class="pl-c1">mixer</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>

	<span class="pl-k">var</span> <span class="pl-s1">action</span> <span class="pl-c1">=</span> <span class="pl-s1">object</span><span class="pl-kos">.</span><span class="pl-c1">mixer</span><span class="pl-kos">.</span><span class="pl-en">clipAction</span><span class="pl-kos">(</span> <span class="pl-s1">object</span><span class="pl-kos">.</span><span class="pl-c1">animations</span><span class="pl-kos">[</span> <span class="pl-c1">0</span> <span class="pl-kos">]</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>
	<span class="pl-s1">action</span><span class="pl-kos">.</span><span class="pl-en">play</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

	<span class="pl-s1">scene</span><span class="pl-kos">.</span><span class="pl-en">add</span><span class="pl-kos">(</span> <span class="pl-s1">object</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>


<span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-s1">onProgress</span><span class="pl-kos">,</span> <span class="pl-s1">onError</span> <span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">Is there a way to fix this behaviour? Like a deep clone function that also recreates geometries?</p>
<p dir="auto">If not, should I just write a function that recursively recreates all the meshes in my object, regenerating their geometry? Or is it a bad idea?</p>