菜鸟教程小白 发表于 2022-12-12 15:12:15

ios - 如果我替换 Vuforia iOS 项目的茶壶对象,为什么只看到三角形而不是立方体?


                                            <p><p>我下载了示例 Vuforia iOS 项目。而不是茶壶,我想旋转一个有纹理的立方体。为了创建一个具有纹理的立方体,我使用了 blender 并创建了一个带有 UV 映射图像的 OBJ 文件,如下所示:</p>

<p> <a href="/image/uf4N6.png" rel="noreferrer noopener nofollow"><img src="/image/uf4N6.png" alt="enter image description here"/></a> </p>

<p>在 blender 中,它呈现完美,我可以完美地看到立方体对象的纹理。</p>

<p>然后我使用 perl 脚本将 OBJ 文件转换为 .h 文件,并替换了 Teapot.h 文件,并将茶壶图像替换为我在上面附加的 PNG。</p>

<p>当我运行该项目时,可以看到立方体的纹理,但每边都切割了三角形,如下所示:</p>

<p> <a href="/image/1AyTJ.jpg" rel="noreferrer noopener nofollow"><img src="/image/1AyTJ.jpg" alt="enter image description here"/></a> </p>

<p>我迫切希望在现有的 iOS 项目中创建自定义正方形、具有纹理的立方体,但是我在检查可行性方面没有取得成功。 </p>

<blockquote>
<p>NOTE: My project is already developed with lots of frameworks and
libraries and in one screen, I need to integrate this function.</p>
</blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我可以通过添加到 Blender 来实现它,然后直接从 Blender 导出 <code>.h</code> 文件。在导出之前无需进行三角测量,因为 <code>Unity</code> 已经为我们进行了三角测量。</p>

<ul>
<li>从 <a href="https://github.com/StickyBeat/BlenderVuforiaExport" rel="noreferrer noopener nofollow">here</a> 下载插件.有关于如何将其添加到 Blender 的完整指南。</li>
<li><p>在 Blender 中准备你想要的 3D 对象。查看 <a href="https://www.cs.usfca.edu/~galles/cs420/lecture/blender1/BlenderTutorial1.html" rel="noreferrer noopener nofollow">this</a>教程,它解释了如何使用 Blender 并制作一个简单的 3D 对象,它周围有纹理。</p></li>
<li><p>一旦你有了你想要的模型,去 <code>File</code> > <code>Export</code> > <code>Vuforia OpenGL C Include</code> 如下图所示图片。将 <code>.h</code> 文件保存在某个位置</p></li>
</ul>

<p> <a href="/image/V3TfN.png" rel="noreferrer noopener nofollow"><img src="/image/V3TfN.png" alt="enter image description here"/></a> </p>

<ul>
<li><p>在 Vuforia iOS 示例项目中,以同样的方式添加这个 <code>.h</code> 文件和 <code>UV-mapping</code> 图像(我们用来渲染我们的对象)<code> Teapot.h</code> 及其 <code>UV-mapping</code> 图像。</p></li>
<li><p>导入头文件。</p></li>
<li><p>更换茶壶:</p></li>
</ul>

<p>替换</p>

<blockquote>
<pre><code>glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)teapotVertices);
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)teapotNormals);
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)teapotTexCoords);
</code></pre>
</blockquote>

<p>与</p>

<blockquote>
<pre><code>BlenderExportedObject object = rectObject;

glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)object.vertices);
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)object.normals);
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)object.texCoords);
</code></pre>
</blockquote>

<p>其中 <code>rectObject</code> 是对象名称。在我的例子中,我的 Blender 对象名称是 <code>rect</code> 所以它在 <code>.h</code> 文件中创建了 <code>rectObject</code> 名称。检查您的 <code>.h</code> 文件以找到该名称。</p>

<ul>
<li>绘制元素:</li>
</ul>

<p>替换</p>

<blockquote>
<pre><code>glDrawElements(GL_TRIANGLES, NUM_TEAPOT_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)teapotIndices);
</code></pre>
</blockquote>

<p>与</p>

<blockquote>
<pre><code>glDrawElements(GL_TRIANGLES, NUM_RECT_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)object.indices);
</code></pre>
</blockquote>

<p>引用<code>.h</code>文件找到<code>NUM_RECT_OBJECT_INDEX</code>。</p>

<ul>
<li>就是这样。它现在应该可以完美地渲染任何复杂的 3D 对象。</li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如果我替换 Vuforia iOS 项目的茶壶对象,为什么只看到三角形而不是立方体?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/56703277/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/56703277/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如果我替换 Vuforia iOS 项目的茶壶对象,为什么只看到三角形而不是立方体?