<h5 dir="auto">Description of the problem</h5>
<h5 dir="auto">Three.js version</h5>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Dev</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> r95</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> ...</li>
</ul>
<h5 dir="auto">Browser</h5>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> All of them</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Chrome</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Firefox</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Internet Explorer</li>
</ul>
<h5 dir="auto">OS</h5>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> All of them</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Windows</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> macOS</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Linux</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Android</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> iOS</li>
</ul>
<p dir="auto"><em>I previously posted this problem on Stackoverflow but got no responses. However I decided to post it here as well as it's only a problem with FBX models and not OBJ models, which makes it look like some kind of bug.</em></p>
<p dir="auto">I am loading FBX models for my project. I Want to create multiple objects of the same FBX model but loading each separately is very inefficient so I would like to save one loaded model and clone it. This concept is working with the .OBJ format.</p>
<p dir="auto">Everything works as expected but then I use "model.clone();" nothing really happens.<br>
The model is no longer visible but I get no errors. If you compare the cloned model with the original they look exactly the same so I don't know why it's not showing up.</p>
<p dir="auto">The part of the code where you can compare the two is:<br>
"var sendModel = model;//Works<br>
//var sendModel = model.clone();//Doesn't works"<br>
Starting at line 30.</p>
<p dir="auto">Here is some simplified working source code:</p>
<div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="    &lt;!DOCTYPE html&gt;
    &lt;html&gt;
    &lt;head&gt;
    &lt;/head&gt;
    &lt;body&gt;
	&lt;script src=&quot;https://vitalkia.com/jsLibraries/zlib.min.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;https://threejs.org/build/three.js&quot;&gt;&lt;/script&gt;
	&lt;script src=&quot;https://threejs.org/examples/js/loaders/FBXLoader.js&quot;&gt; 
    &lt;/script&gt;
	&lt;script&gt;
		var aspectRatio = 240 / 135;
		var scene;
		var renderer;
		var loaderFBX;
		var camera = new THREE.PerspectiveCamera(45, aspectRatio, 1, 10000);

		


		//Actual code
		//Setus up scene and renderer
		sceneSetup();
		
		//Load fbx and render
		//IGNORE ERROR ABOUT NOT FINDING THE RIGHT TEXTURE. It still works
		loaderFBX.load(&quot;https://threejs.org/examples/models/fbx/Samba Dancing.fbx&quot;, function(model){
			//Sending the object &quot;model&quot; works
			//But using model.clone() does not. It doesn't give any errors or anything, it's just not visible
			//If you compare the cloned model with the original they look exactly the same.
		
			var sendModel = model;//Works
			//var sendModel = model.clone();//Doesn't works
			console.log(&quot;Original: &quot;);
			console.log(model);
			console.log(&quot;Cloned: &quot;);
			console.log(model.clone());
		
			calcDistance(sendModel);
		
			scene.add(sendModel);
			renderer.render(scene, camera);
		});




		function calcDistance(model){
			var bbox = new THREE.Box3().setFromObject(model);

			var camDistance = bbox.max.z;
			if(bbox.max.x &gt; camDistance){
				camDistance = bbox.max.x;
			}
			if(bbox.max.y*aspectRatio &gt; camDistance){
				camDistance = bbox.max.y*aspectRatio;
			}
						    
			camera.position.z = camDistance;
			model.position.x -= bbox.getCenter().x;
			model.position.y -= bbox.getCenter().y;
		}


		function sceneSetup(){
			loaderFBX = new THREE.FBXLoader();
			scene = new THREE.Scene();
			renderer = new THREE.WebGLRenderer({antialias: true, alpha: true});
			renderer.setSize(240, 135);
			document.body.appendChild(renderer.domElement);
			var light1 = new THREE.PointLight(0xffffff, 1, 100000000);
			light1.position.set(0, 0, 15);
			scene.add(light1);
			var newLightPoint = new THREE.HemisphereLight(0x8be2ff, 0xfff9cf, 0.55);
			scene.add(newLightPoint);
			camera.position.set(0, 0, 100);
			scene.add(camera);
		}
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;"><pre class="notranslate">    <span class="pl-c1">&lt;!DOCTYPE html<span class="pl-kos">&gt;</span></span>
    <span class="pl-kos">&lt;</span><span class="pl-ent">html</span><span class="pl-kos">&gt;</span>
    <span class="pl-kos">&lt;</span><span class="pl-ent">head</span><span class="pl-kos">&gt;</span>
    <span class="pl-kos">&lt;/</span><span class="pl-ent">head</span><span class="pl-kos">&gt;</span>
    <span class="pl-kos">&lt;</span><span class="pl-ent">body</span><span class="pl-kos">&gt;</span>
	<span class="pl-kos">&lt;</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://vitalkia.com/jsLibraries/zlib.min.js</span>"<span class="pl-kos">&gt;</span><span class="pl-kos">&lt;/</span><span class="pl-ent">script</span><span class="pl-kos">&gt;</span>
	<span class="pl-kos">&lt;</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://threejs.org/build/three.js</span>"<span class="pl-kos">&gt;</span><span class="pl-kos">&lt;/</span><span class="pl-ent">script</span><span class="pl-kos">&gt;</span>
	<span class="pl-kos">&lt;</span><span class="pl-ent">script</span> <span class="pl-c1">src</span>="<span class="pl-s">https://threejs.org/examples/js/loaders/FBXLoader.js</span>"<span class="pl-kos">&gt;</span> 
    <span class="pl-kos">&lt;/</span><span class="pl-ent">script</span><span class="pl-kos">&gt;</span>
	<span class="pl-kos">&lt;</span><span class="pl-ent">script</span><span class="pl-kos">&gt;</span>
		<span class="pl-k">var</span> <span class="pl-s1">aspectRatio</span> <span class="pl-c1">=</span> <span class="pl-c1">240</span> <span class="pl-c1">/</span> <span class="pl-c1">135</span><span class="pl-kos">;</span>
		<span class="pl-k">var</span> <span class="pl-s1">scene</span><span class="pl-kos">;</span>
		<span class="pl-k">var</span> <span class="pl-s1">renderer</span><span class="pl-kos">;</span>
		<span class="pl-k">var</span> <span class="pl-s1">loaderFBX</span><span class="pl-kos">;</span>
		<span class="pl-k">var</span> <span class="pl-s1">camera</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">PerspectiveCamera</span><span class="pl-kos">(</span><span class="pl-c1">45</span><span class="pl-kos">,</span> <span class="pl-s1">aspectRatio</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">10000</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

		


		<span class="pl-c">//Actual code</span>
		<span class="pl-c">//Setus up scene and renderer</span>
		<span class="pl-en">sceneSetup</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
		
		<span class="pl-c">//Load fbx and render</span>
		<span class="pl-c">//IGNORE ERROR ABOUT NOT FINDING THE RIGHT TEXTURE. It still works</span>
		<span class="pl-s1">loaderFBX</span><span class="pl-kos">.</span><span class="pl-en">load</span><span class="pl-kos">(</span><span class="pl-s">"https://threejs.org/examples/models/fbx/Samba Dancing.fbx"</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">model</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
			<span class="pl-c">//Sending the object "model" works</span>
			<span class="pl-c">//But using model.clone() does not. It doesn't give any errors or anything, it's just not visible</span>
			<span class="pl-c">//If you compare the cloned model with the original they look exactly the same.</span>
		
			<span class="pl-k">var</span> <span class="pl-s1">sendModel</span> <span class="pl-c1">=</span> <span class="pl-s1">model</span><span class="pl-kos">;</span><span class="pl-c">//Works</span>
			<span class="pl-c">//var sendModel = model.clone();//Doesn't works</span>
			<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">"Original: "</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s1">model</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">"Cloned: "</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s1">model</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-kos">;</span>
		
			<span class="pl-en">calcDistance</span><span class="pl-kos">(</span><span class="pl-s1">sendModel</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">sendModel</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-s1">renderer</span><span class="pl-kos">.</span><span class="pl-en">render</span><span class="pl-kos">(</span><span class="pl-s1">scene</span><span class="pl-kos">,</span> <span class="pl-s1">camera</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
		<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>




		<span class="pl-k">function</span> <span class="pl-en">calcDistance</span><span class="pl-kos">(</span><span class="pl-s1">model</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
			<span class="pl-k">var</span> <span class="pl-s1">bbox</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">Box3</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">setFromObject</span><span class="pl-kos">(</span><span class="pl-s1">model</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

			<span class="pl-k">var</span> <span class="pl-s1">camDistance</span> <span class="pl-c1">=</span> <span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-c1">max</span><span class="pl-kos">.</span><span class="pl-c1">z</span><span class="pl-kos">;</span>
			<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-c1">max</span><span class="pl-kos">.</span><span class="pl-c1">x</span> <span class="pl-c1">&gt;</span> <span class="pl-s1">camDistance</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
				<span class="pl-s1">camDistance</span> <span class="pl-c1">=</span> <span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-c1">max</span><span class="pl-kos">.</span><span class="pl-c1">x</span><span class="pl-kos">;</span>
			<span class="pl-kos">}</span>
			<span class="pl-k">if</span><span class="pl-kos">(</span><span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-c1">max</span><span class="pl-kos">.</span><span class="pl-c1">y</span><span class="pl-c1">*</span><span class="pl-s1">aspectRatio</span> <span class="pl-c1">&gt;</span> <span class="pl-s1">camDistance</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
				<span class="pl-s1">camDistance</span> <span class="pl-c1">=</span> <span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-c1">max</span><span class="pl-kos">.</span><span class="pl-c1">y</span><span class="pl-c1">*</span><span class="pl-s1">aspectRatio</span><span class="pl-kos">;</span>
			<span class="pl-kos">}</span>
						    
			<span class="pl-s1">camera</span><span class="pl-kos">.</span><span class="pl-c1">position</span><span class="pl-kos">.</span><span class="pl-c1">z</span> <span class="pl-c1">=</span> <span class="pl-s1">camDistance</span><span class="pl-kos">;</span>
			<span class="pl-s1">model</span><span class="pl-kos">.</span><span class="pl-c1">position</span><span class="pl-kos">.</span><span class="pl-c1">x</span> <span class="pl-c1">-=</span> <span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-en">getCenter</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">x</span><span class="pl-kos">;</span>
			<span class="pl-s1">model</span><span class="pl-kos">.</span><span class="pl-c1">position</span><span class="pl-kos">.</span><span class="pl-c1">y</span> <span class="pl-c1">-=</span> <span class="pl-s1">bbox</span><span class="pl-kos">.</span><span class="pl-en">getCenter</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">y</span><span class="pl-kos">;</span>
		<span class="pl-kos">}</span>


		<span class="pl-k">function</span> <span class="pl-en">sceneSetup</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
			<span class="pl-s1">loaderFBX</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">FBXLoader</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-c1">=</span> <span class="pl-k">new</span> <span class="pl-c1">THREE</span><span class="pl-kos">.</span><span class="pl-c1">Scene</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-s1">renderer</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">WebGLRenderer</span><span class="pl-kos">(</span><span class="pl-kos">{</span><span class="pl-c1">antialias</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">alpha</span>: <span class="pl-c1">true</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-s1">renderer</span><span class="pl-kos">.</span><span class="pl-en">setSize</span><span class="pl-kos">(</span><span class="pl-c1">240</span><span class="pl-kos">,</span> <span class="pl-c1">135</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-smi">document</span><span class="pl-kos">.</span><span class="pl-c1">body</span><span class="pl-kos">.</span><span class="pl-en">appendChild</span><span class="pl-kos">(</span><span class="pl-s1">renderer</span><span class="pl-kos">.</span><span class="pl-c1">domElement</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-k">var</span> <span class="pl-s1">light1</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">PointLight</span><span class="pl-kos">(</span><span class="pl-c1">0xffffff</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">100000000</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-s1">light1</span><span class="pl-kos">.</span><span class="pl-c1">position</span><span class="pl-kos">.</span><span class="pl-en">set</span><span class="pl-kos">(</span><span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">15</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">light1</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-k">var</span> <span class="pl-s1">newLightPoint</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">HemisphereLight</span><span class="pl-kos">(</span><span class="pl-c1">0x8be2ff</span><span class="pl-kos">,</span> <span class="pl-c1">0xfff9cf</span><span class="pl-kos">,</span> <span class="pl-c1">0.55</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">newLightPoint</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
			<span class="pl-s1">camera</span><span class="pl-kos">.</span><span class="pl-c1">position</span><span class="pl-kos">.</span><span class="pl-en">set</span><span class="pl-kos">(</span><span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">100</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">camera</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
		<span class="pl-kos">}</span>
	<span class="pl-kos">&lt;/</span><span class="pl-ent">script</span><span class="pl-kos">&gt;</span>
<span class="pl-kos">&lt;/</span><span class="pl-ent">body</span><span class="pl-kos">&gt;</span>
<span class="pl-kos">&lt;/</span><span class="pl-ent">html</span><span class="pl-kos">&gt;</span></pre></div>
<p dir="auto">There are a few things which geometry.clone() doesn't copy a reference to, which it should.</p>
<p dir="auto">.bones<br>
.skinWeights<br>
.skinIndices<br>
.animations<br>
.animation</p>
<p dir="auto">are all left without references to the original, which leads to skinning being broken unless the references to those are manually copied. I think references should be passed as it's less confusing, but I don't think they should be deep copies, or this would lead to mostly wasted memory.</p>