我正在尝试使用OpenGL创建3D游戏。我已经有了一个非常基础的世界,现在正在制作角色。我想将一个纹理映射到头部,这个头部是椭圆形的。如何进行贴图?我知道如何映射到平面上。我想知道法线是否可以用来帮助贴图,但我从未尝试过,当我在谷歌搜索时没有任何帮助。如果不使用Blender或Maya,我打算全部通过编程实现,这会有什么区别吗?
从你的帖子中我猜测你对几何学很熟悉?
对于一般情况下的自动映射,你的想法是一个好主意——从每个顶点开始,沿着其法线向外延伸,直到碰到一个明确定义的外部基元,然后从那里向内复制纹理位置。
在这种情况下,我认为关键可能在于如何生成几何形状。如果你正在创建16个点的8个环,实际上是在一个外部循环和另一个内部循环中迭代绕着一个圆圈,那么你可以同时迭代u和v来获得映射。你会得到一些大小不规则的多边形,在极点处映射变得麻烦,但在面部周围的区域效果非常好。
如果你想要更均等大小的多边形和所有区域都可靠的映射,那么就从过度细分的立方体开始(例如,每个表面有8x8个四边形网格而不仅仅是一个),并以任何有意义的方式映射纹理坐标。考虑一个立方体的网络。然后通过计算从中心到每个点的向量并将该点移动到距离中心的球体半径处来将立方体变形为球体。最后,通过不同比例地缩放不同的轴将球体变形为椭圆形。