我正在尝试使用OpenGL创建一个3D游戏。我有一个非常基本的世界,现在正在研究一个角色。我想将纹理映射到椭圆形的头部。我该如何进行映射?我知道如何映射到平面。我想知道法线是否可以用来帮助我但是我从来没有这样做过,当我搜索谷歌时我没有运气。
我打算以编程方式执行此操作,而不是使用Blender或Maya,如果这有任何区别。
答案 0 :(得分:1)
我猜你的帖子中你对几何学很好吗?
对于一般情况下的自动映射,您的猜测是一个好主意 - 从每个顶点开始并向前跟随其正常,直到您点击定义良好的外部基元,然后从中复制纹理位置。
在这种情况下,我认为关键在于如何生成几何体。如果你正在做类似于创建8个16点环的东西,有效地在外循环中迭代一个圆而在内循环中迭代另一个圆,那么你可以同时迭代u和v来获得映射。你会得到一些不规则大小的多边形,并且在极点处的映射变得麻烦,但是面部周围的区域可以很好地工作。
如果你想要一个更大的多边形尺寸和所有区域的可靠映射,那么从一个过度镶嵌的立方体开始(例如,每个表面只有一个8x8四边形的网格而不是一个),并将纹理坐标映射到任何有意义的办法。根据立方体的网络来思考。然后通过计算从中心到每个点的矢量并将点移动,使得它是从中心开始的球体半径,将立方体变形为球体。最后,通过不同地缩放不同的轴,将球体变形为椭圆形。