<p dir="auto">Library Version: THREE.WebGLRenderer 74dev (also occured in current master branch)<br>
Firefox 42.0, Windows 10, NVIDIA GeForce GTX 560 Ti</p>
<p dir="auto">The code for creating a sphere in SphereBufferGeometry.js (<a href="https://github.com/mrdoob/three.js/blob/master/src/extras/geometries/SphereBufferGeometry.js">https://github.com/mrdoob/three.js/blob/master/src/extras/geometries/SphereBufferGeometry.js</a>) creates multiple vertices ontop of each other.<br>
(see lines 53-55):</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="for ( var y = 0; y &lt;= heightSegments; y ++ ) {

        var verticesRow = [];

        var v = y / heightSegments;

        for ( var x = 0; x &lt;= widthSegments; x ++ ) {

            var u = x / widthSegments;

            var px = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );
            var py = radius * Math.cos( thetaStart + v * thetaLength );
            var pz = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );"><pre class="notranslate"><span class="pl-k">for</span> <span class="pl-kos">(</span> <span class="pl-k">var</span> <span class="pl-s1">y</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span><span class="pl-kos">;</span> <span class="pl-s1">y</span> <span class="pl-c1">&lt;=</span> <span class="pl-s1">heightSegments</span><span class="pl-kos">;</span> <span class="pl-s1">y</span> <span class="pl-c1">++</span> <span class="pl-kos">)</span> <span class="pl-kos">{</span>

        <span class="pl-k">var</span> <span class="pl-s1">verticesRow</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">;</span>

        <span class="pl-k">var</span> <span class="pl-s1">v</span> <span class="pl-c1">=</span> <span class="pl-s1">y</span> <span class="pl-c1">/</span> <span class="pl-s1">heightSegments</span><span class="pl-kos">;</span>

        <span class="pl-k">for</span> <span class="pl-kos">(</span> <span class="pl-k">var</span> <span class="pl-s1">x</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span><span class="pl-kos">;</span> <span class="pl-s1">x</span> <span class="pl-c1">&lt;=</span> <span class="pl-s1">widthSegments</span><span class="pl-kos">;</span> <span class="pl-s1">x</span> <span class="pl-c1">++</span> <span class="pl-kos">)</span> <span class="pl-kos">{</span>

            <span class="pl-k">var</span> <span class="pl-s1">u</span> <span class="pl-c1">=</span> <span class="pl-s1">x</span> <span class="pl-c1">/</span> <span class="pl-s1">widthSegments</span><span class="pl-kos">;</span>

            <span class="pl-k">var</span> <span class="pl-s1">px</span> <span class="pl-c1">=</span> <span class="pl-c1">-</span> <span class="pl-s1">radius</span> <span class="pl-c1">*</span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">cos</span><span class="pl-kos">(</span> <span class="pl-s1">phiStart</span> <span class="pl-c1">+</span> <span class="pl-s1">u</span> <span class="pl-c1">*</span> <span class="pl-s1">phiLength</span> <span class="pl-kos">)</span> <span class="pl-c1">*</span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">sin</span><span class="pl-kos">(</span> <span class="pl-s1">thetaStart</span> <span class="pl-c1">+</span> <span class="pl-s1">v</span> <span class="pl-c1">*</span> <span class="pl-s1">thetaLength</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>
            <span class="pl-k">var</span> <span class="pl-s1">py</span> <span class="pl-c1">=</span> <span class="pl-s1">radius</span> <span class="pl-c1">*</span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">cos</span><span class="pl-kos">(</span> <span class="pl-s1">thetaStart</span> <span class="pl-c1">+</span> <span class="pl-s1">v</span> <span class="pl-c1">*</span> <span class="pl-s1">thetaLength</span> <span class="pl-kos">)</span><span class="pl-kos">;</span>
            <span class="pl-k">var</span> <span class="pl-s1">pz</span> <span class="pl-c1">=</span> <span class="pl-s1">radius</span> <span class="pl-c1">*</span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">sin</span><span class="pl-kos">(</span> <span class="pl-s1">phiStart</span> <span class="pl-c1">+</span> <span class="pl-s1">u</span> <span class="pl-c1">*</span> <span class="pl-s1">phiLength</span> <span class="pl-kos">)</span> <span class="pl-c1">*</span> <span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">sin</span><span class="pl-kos">(</span> <span class="pl-s1">thetaStart</span> <span class="pl-c1">+</span> <span class="pl-s1">v</span> <span class="pl-c1">*</span> <span class="pl-s1">thetaLength</span> <span class="pl-kos">)</span><span class="pl-kos">;</span><span class="pl-kos"></span><span class="pl-kos"></span></pre></div>
<p dir="auto">Since v is always 0 for the first row of vertices, and the sin(0) is also 0, x and z of the first vertices will always be zero.<br>
y will always be 1, since cos(0) == 1<br>
So unless thetaStart is chosen != 0, it will create multiple vertices ontop of each other.</p>
<p dir="auto">See fiddle and screenshot.<br>
Repro:<br>
Create a sphere with default values (let phiStart and thetaStart be 0)<br>
Check vertices (print them to console, for example.</p>
<p dir="auto"><a href="http://jsfiddle.net/hw9rcLL8/" rel="nofollow">http://jsfiddle.net/hw9rcLL8/</a></p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/636083/11654033/f9f9a5c6-9da2-11e5-840a-bd188fa5e78b.PNG"><img src="https://cloud.githubusercontent.com/assets/636083/11654033/f9f9a5c6-9da2-11e5-840a-bd188fa5e78b.PNG" alt="threejssphere" style="max-width: 100%;"></a></p>
<p dir="auto">I noticed that there is an unnecessary repetition of vertices in the output when exporting from blender to JSON in BufferGeometry format.</p>
<p dir="auto">Consider the following cube example:<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/7864858/27977649-8bd5baea-6320-11e7-8187-78f0e343b4bd.jpg"><img src="https://user-images.githubusercontent.com/7864858/27977649-8bd5baea-6320-11e7-8187-78f0e343b4bd.jpg" alt="cubeflat" style="max-width: 100%;"></a><br>
When I export it using <code class="notranslate">type: Buffergeometry</code>, I get a 1.8 kb file with 34 vertices:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&quot;metadata&quot;:{
    &quot;normal&quot;:34,
    &quot;position&quot;:34,
    &quot;version&quot;:3,
    &quot;type&quot;:&quot;BufferGeometry&quot;,
    &quot;generator&quot;:&quot;io_three&quot;
}"><pre class="notranslate"><code class="notranslate">"metadata":{
    "normal":34,
    "position":34,
    "version":3,
    "type":"BufferGeometry",
    "generator":"io_three"
}
</code></pre></div>
<p dir="auto"><a href="https://gist.github.com/marquizzo/3a1b76cf0cd39bb257480e864e82aeea">see full output for flat cube</a></p>
<p dir="auto">However, when I smooth out the faces, like this...<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/7864858/27977773-19f26620-6321-11e7-8dda-dc9b38f1d3a3.jpg"><img src="https://user-images.githubusercontent.com/7864858/27977773-19f26620-6321-11e7-8dda-dc9b38f1d3a3.jpg" alt="cubesmooth" style="max-width: 100%;"></a></p>
<p dir="auto">... I get a much more reasonable output with only eight vertices, and a 0.9 kb file:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&quot;metadata&quot;:{
    &quot;normal&quot;:8,
    &quot;position&quot;:8,
    &quot;version&quot;:3,
    &quot;type&quot;:&quot;BufferGeometry&quot;,
    &quot;generator&quot;:&quot;io_three&quot;
}"><pre class="notranslate"><code class="notranslate">"metadata":{
    "normal":8,
    "position":8,
    "version":3,
    "type":"BufferGeometry",
    "generator":"io_three"
}
</code></pre></div>
<p dir="auto"><a href="https://gist.github.com/marquizzo/075778a210c53cfd3925eb6329fb0674">see full output for smooth cube</a></p>
<p dir="auto">Why does the flat cube get 34 vertices, instead of the expected 8? Shouldn't the flattening be handled in the normals instead of by making all faces separate? When I export a flat cube using the <code class="notranslate">type: Geometry</code> setting, I get 8 vertices and 6 normals, so it seems that it's possible.</p>
<h5 dir="auto">System Specs:</h5>
<ul dir="auto">
<li>[ x ] Windows</li>
<li>[ x ] Blender 2.78a</li>
<li>[ x ] io_three version: (1, 5, 0)</li>
<li>Exporter settings:<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/7864858/27978270-4c64d15e-6323-11e7-989c-c164fc3433a4.jpg"><img src="https://user-images.githubusercontent.com/7864858/27978270-4c64d15e-6323-11e7-989c-c164fc3433a4.jpg" alt="settings" style="max-width: 100%;"></a>
<ul dir="auto">
<li>Enabled precision to 2</li>
</ul>
</li>
</ul>