#1 楼
通常定义的方式是,网格中的每个顶点都对应一个UV坐标,并且每个顶点必须恰好有一个这样的坐标,因为渲染器将以此方式获取纹理像素。因此,除非对网格进行多个参数化,否则不可能对单个顶点具有多个UV坐标。但是,网格经常在参数化过程中分裂,并且相同的顶点可能会在多个位置出现,就像您的示例一样。通常,在加载/渲染时会简单地复制这些顶点,因此顶点到uv的映射保持1对1或多对1的关系。因此,渲染器可能会将您的示例解释为以下内容(v5分为4个):
#2 楼
我只需要在ap_的答案中添加一点即可。当然,对于一个顶点,您可以具有多个UV,这称为UV层。自从光照贴图问世以来,这就是引擎同时显示光照贴图和反照率贴图的方式。 (也许是1996年的地震引擎?)
如果要进行多重纹理化(例如地形,光照贴图,反照率大,反照率明细,法线贴图),则可以具有更多的UV层。
不幸的是,光栅化器将永远不会根据要渲染的图元来选择UV层。可以使用辅助索引缓冲区(UV层映射缓冲区的原始缓冲区)来完成此类渲染器,但是没有图形卡,也没有图形API对此提供支持。无论如何,这对KISS来说是不必要的侵犯。
因此,在这种情况下,要做的就是在设计时将金字塔顶点分成4个不同的顶点。无论如何,这的第一个原因不是UV展开,而是大多数情况下是正常清晰度。如果需要锐利的边缘,则需要打断阴影,因此需要具有不同的法线,它们也一样,例如UV,通常在顶点流中定义为1-1。
最后的建议,也许您真的不想使用这种展开方法,我宁愿提出以下建议:
这样,您可以无缝连续用于过滤,并在边缘和顶点看起来。
评论
您似乎认为“将金字塔投影到2D星形对象中”是已定义的操作。除非您这样做,否则不是这样。为了以这种方式进行UV映射,您必须将(5)视为恰好具有相同XYZ坐标的四个不同的顶点。