<h5 dir="auto">Description of the problem</h5>
<p dir="auto">I'm using computeVertexNormals on mesh from OBJ and VRML Loader in order to have a smooth shading applied.</p>
<p dir="auto">It works with VRML Loader but it don't using OBJ Loader with exactly the same mesh.</p>
<p dir="auto">You can see how normal looks like in the 2 cases :</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/7044986/13814266/dca8b634-eb85-11e5-8e8e-b89462cc51a2.png"><img src="https://cloud.githubusercontent.com/assets/7044986/13814266/dca8b634-eb85-11e5-8e8e-b89462cc51a2.png" alt="cone-obj-normals" style="max-width: 100%;"></a><br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/7044986/13814267/dcac0582-eb85-11e5-9239-fe4f55af840c.png"><img src="https://cloud.githubusercontent.com/assets/7044986/13814267/dcac0582-eb85-11e5-9239-fe4f55af840c.png" alt="cone-vrml-normals" style="max-width: 100%;"></a></p>
<p dir="auto">VRML is smooth shaded and normals (even if inside the mesh) are mingled for one given vertex.<br>
OBJ mesh normals are diverging for one given vertex and consequently mesh is not smooth shaded.</p>
<p dir="auto">The question is ... why ?</p>
<p dir="auto">One difference I have noticed is loaded mesh use  geometry in VRML case and BufferGeometry in OBJ case.</p>
<p dir="auto">Thanks in advance for answers</p>
<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>[x ] r74</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>[] All of them</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Windows</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>
<h5 dir="auto">Hardware Requirements (graphics card, VR Device, ...)</h5>
<h5 dir="auto">Description of the problem</h5>
<p dir="auto">When rendering scene, objects outside camera's frustum will not be rendered. But if object is geometry with groups, frustum.intersectsObject only checks the whole object's bounding sphere. Currently I workaround this by toggling material's visibility in scene.onBeforeRender/onAfterRender, but if some groups of geometry share the same material, this will not work.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="intersectsObject: function () {

	var sphere = new Sphere();

	return function intersectsObject( object ) {

		var geometry = object.geometry;

		if ( geometry.boundingSphere === null )
			geometry.computeBoundingSphere();

		sphere.copy( geometry.boundingSphere )
			.applyMatrix4( object.matrixWorld );

		return this.intersectsSphere( sphere );

	};

}()"><pre class="notranslate"><code class="notranslate">intersectsObject: function () {

	var sphere = new Sphere();

	return function intersectsObject( object ) {

		var geometry = object.geometry;

		if ( geometry.boundingSphere === null )
			geometry.computeBoundingSphere();

		sphere.copy( geometry.boundingSphere )
			.applyMatrix4( object.matrixWorld );

		return this.intersectsSphere( sphere );

	};

}()
</code></pre></div>
<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" checked=""> Dev</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> r90</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>
</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>
</ul>