首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >球体OpenGl上的UV映射问题工件

球体OpenGl上的UV映射问题工件
EN

Stack Overflow用户
提问于 2017-10-25 05:41:35
回答 2查看 1.1K关注 0票数 3

我正在UV映射3d球体X,Y,Z坐标上的2D纹理,使用公式

代码语言:javascript
运行
复制
u = (0.5 + atan2(X, Y) / (2 * glm::pi<double>()));
v = (0.5 - asin(Z) / glm::pi<double>());

在现代openGL C++中。

我不知道为什么球体里会有这样的神器。我想不出来。

EN

回答 2

Stack Overflow用户

发布于 2017-10-27 03:58:39

好了,我已经弄清楚并纠正了这个问题,我想我现在终于可以在这里回答了。

非常感谢BDL和Rabbid76。

每当u == 0时,我将相同的顶点位置(X,Y,Z)添加到顶点向量(或数组),也增加了索引,但这次将纹理u硬编码为1.0f。

现在没有问题了,接缝现在看起来很完美。

票数 1
EN

Stack Overflow用户

发布于 2017-10-25 16:07:16

这是带纹理的球体几何体的详细信息,该几何体已建立索引。你应该使用索引来获得更好的性能: m_meridians和m_latitudes是球体的细节级别。

代码语言:javascript
运行
复制
for (size_t i = 0; i < m_meridians + 1; i++)
{
    for (size_t j = 0; j < m_latitudes + 2; j++)
    {
        // texCoord in the range [(0,0), (1,1)]
       QVector2D texCoord((float)i / m_meridians, (float)j / (m_latitudes+1));
        // theta = longitude from 0 to 2pi
        // phi = latitude from -pi/2 to pi/2
        double theta, phi;
        theta = 2*M_PI * texCoord.x();
        phi = M_PI * texCoord.y() - M_PI_2;
        QVector3D pos;
        pos.setY((float)std::sin(phi));
        pos.setX((float)std::cos(phi) * std::cos(theta));
        pos.setZ((float)std::cos(phi) * std::sin(theta));

        m_vertices.push_back({pos, texCoord});
    }
}

// Calculate triangle indices

for (size_t i = 0; i < m_meridians; i++)
{
    // Construct triangles between successive meridians
    for (size_t j = 0; j < m_latitudes + 1; j++)
    {
        m_indices.push_back(i * (m_latitudes+2) + j);
        m_indices.push_back(i * (m_latitudes+2) + j+1);
        m_indices.push_back((i+1) * (m_latitudes+2) + j+1);

        m_triangleCount++;

        m_indices.push_back((i+1) * (m_latitudes+2) + j+1);
        m_indices.push_back((i+1) * (m_latitudes+2) + j);
        m_indices.push_back(i * (m_latitudes+2) + j);

        m_triangleCount++;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46920517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档