<p dir="auto"><code class="notranslate">OBJLoader2</code> is now around for a while and I think that especially the Parser has reached at least feature parity with the other implementation. It currently has less known bugs and the code is now more accessible to others than it has been in the past (code reviews&amp;verification in R90 and R91).</p>
<p dir="auto"><code class="notranslate">OBJLoader</code> is more widely used and replacing it with <code class="notranslate">OBJLoader2</code> will only be smooth once the following issues and questions are solved and answers are found together with you:</p>
<ul dir="auto">
<li>Any external dependency <code class="notranslate">LoaderSupport</code> needs to be removed. The current <a href="https://github.com/kaisalmen/three.js/tree/OBJLoader2_OBJLoader">dev version</a> of <code class="notranslate">OBJLoader2</code> already solved this.</li>
<li>The dev version sill contains the generic <code class="notranslate">MeshBuilder</code>. It provides among other things a mesh building function which uses data directly or data from web worker (buffers as Transferables). It could stay inside <code class="notranslate">OBJLoader</code>, but logically it should be outside violating the first assumption. I currently don't have a good answer for this problem. One solution is to put <code class="notranslate">MeshBuilder</code> inside `WorkerLoader´ where it is needed, but then it cannot be used here. I don't like having code duplicates. Do you at all see that this is a useful feature for other loader or beyond? What's you opinion?</li>
<li>Reduce LOCs as much as possible. Due to the second point, more overall features (see table below) and MTL utility function (which should be kept as dependency is not enforced) it is currently twice as big as <code class="notranslate">OBJLoader</code></li>
</ul>
<p dir="auto">Async loading/parsing currently available with <code class="notranslate">OBJLoader2</code>/<code class="notranslate">LoaderSupport</code> will be realized by <a href="https://github.com/mrdoob/three.js/issues/13664" data-hovercard-type="issue" data-hovercard-url="/mrdoob/three.js/issues/13664/hovercard">Generic WorkerLoader</a>.</p>
<p dir="auto">The following table outlines the major features of both loaders:</p>
<table role="table">
<thead>
<tr>
<th align="left">Feature</th>
<th>OBJLoader</th>
<th>OBJLoader2</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Handle all face types</td>
<td>[x]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Support for points and lines</td>
<td>[x]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Negative face indices</td>
<td>[x]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Support Ngons</td>
<td>[x]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Flat/Smooth Multi-Materials</td>
<td>[ ]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Indexed Rendering</td>
<td>[ ]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Handle Face-Type change inside group</td>
<td>[x]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Deactivate console logging</td>
<td>[ ]</td>
<td>[x]</td>
</tr>
<tr>
<td align="left">Load MTLs via <code class="notranslate">MTLLoader</code> if desired</td>
<td>[ ]</td>
<td>[x]</td>
</tr>
</tbody>
</table>
<p dir="auto">Progress can be tracked in the <a href="https://github.com/kaisalmen/three.js/tree/OBJLoader2_OBJLoader">dev branch mentioned above</a> and in the external <a href="https://github.com/kaisalmen/WWOBJLoader/tree/Issue36/src/loaders">OBJLoader2 repo</a>.</p>
<p dir="auto">I hope you agree that the time has come to replace <code class="notranslate">OBJLoader</code> and we can maintain one implementation in the future.</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" checked=""> Dev</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> r91</li>
</ul>
<p dir="auto">I found some problem on loader .obj</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3197d36a9c5b1d67113e5e6e1887b007816d81b5e3cad3d56701ae90f726032b/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f343036363136322f3833373335322f38383730396336362d663330342d313165322d396662332d3663626262363165633939392e6a7067"><img src="https://camo.githubusercontent.com/3197d36a9c5b1d67113e5e6e1887b007816d81b5e3cad3d56701ae90f726032b/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f343036363136322f3833373335322f38383730396336362d663330342d313165322d396662332d3663626262363165633939392e6a7067" alt="qthreejs" data-canonical-src="https://f.cloud.github.com/assets/4066162/837352/88709c66-f304-11e2-9fb3-6cbbb61ec999.jpg" style="max-width: 100%;"></a></p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/67c0ccae4405bf9e2e854924b10ffd0e05ae34cf4a0641ca704892f87a77d638/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f343036363136322f3833373337392f30626362323331612d663330352d313165322d383632312d6337363761623138626530392e706e67"><img src="https://camo.githubusercontent.com/67c0ccae4405bf9e2e854924b10ffd0e05ae34cf4a0641ca704892f87a77d638/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f343036363136322f3833373337392f30626362323331612d663330352d313165322d383632312d6337363761623138626530392e706e67" alt="image" data-canonical-src="https://f.cloud.github.com/assets/4066162/837379/0bcb231a-f305-11e2-8621-c767ab18be09.png" style="max-width: 100%;"></a></p>
<p dir="auto">Some face on model missing.<br>
What's the problem?</p>