为什么Unity中的顶点数比Max中的多?

前言

很多情况下,我们发现Unity中的顶点数量与max中的不一致,很是费解,为什么这样呢?到底谁才是对的呢?

 

 

测试

其实都是对的,只是大家处理的方式不一样而已,但是由于我们最终是要在引擎中进行展示与操作,所以我们还是要以引擎中的为准!那么接下来我们做几个小测试,来看下具体是什么导致顶点数不一样的。

 

首先,我们在max中新建一个立方体,并导入到unity中进行观察:

 

max:8个顶点,12个三角面。

unity:24个顶点,12个三角面。

三角面数一致,顶点数竟然相差这么大!

 

好了,既然问题比我们想象的严重,那我们就一定要搞明白它到底是怎么回事,让我们先忘掉这个Box,让我们从一个更简单的面片开始。

max:4个顶点,2个三角面

unity:4个顶点,2个三角面

目前一切正常,那我们再对面片做一些修改,我们在面片中间加一条线,改变成以下形状。

 

max:6个顶点,4个三角面

unity:6个顶点,4个三角面

目前还是一切正常,OK,这个时候我们有个美术效果的需求,需要让这个模型的两个面呈现硬边状态,也就是两个四角面拥有各自的光滑组。

 

max:6个顶点,4个三角面

unity:8个顶点,4个三角面

这时问题就出现了,unity中比max中多了2个顶点,此时我们在max中显示模型的法线(通过给模型添加Edit Normal修改器即可),并同时做出光滑组一致与不一致的对比效果看下:

我们仔细观察下两个模型的法线(法线有点看不清,请睁大眼睛仔细看。。。)

左图是光滑组不一致的情况,其中有两个顶点有两条法线,就是因为这个导致了unity中多了两个顶点的原因。

接下来,我们把光滑组调成一致,使其在unity中呈现只有6个顶点的情况。然后我们给模型加个Unwarp UVW,对其进行UV编缉(这里只做个示范,没有具体意义),将两个四角面的UV切割开。

 

将其导入到unity中后会发现:

max:6个顶点,4个三角面

unity:8个顶点,4个三角面

问题又出现了,看来不仅仅只有光滑组会导致顶点数增多,将UV切割也同样会产生这个问题。

 

好了,回到我们最开始的Box,用以上的方法对其进行修整,结果如下:

max中与unity中的顶点数一致了。

 

总结

产生顶点数不一致的原因主要有两点:

  1. 光滑组不一致,当多个面设置了不同的光滑组时(如果这些都处于一个平面,则不会)就会导致顶点数增加。当两个光滑组
  2. 当模型上一个顶点在UV中对应多个顶点时(切割UV会产生这种效果)也会导致顶点数增加。

当两个面光滑组不一致时,它们所共用的顶点将需要两个表现法线方向的信息,unity中无法通过一个顶点来获取到这些信息,所以在unity中会被识别为两个顶点,同样,模型上的一个顶点,在UV中出现在多个位置,也会被unity识别为两个顶点。

当然了,并不是说完全不能用光滑组与UV切割,只是如果我们知道了这些原理,那么在制作时就能够制作出性能更佳的模型了。

 

可能很多人都认为游戏中只要关心三角面数就可以了,只要三角面数够低就行了啊,反正上面的操作并不会影响三角面数啊。

其实这是不对的,在引擎渲染管线中,模型将经历顶点着色器和片断着色器两个阶段,如果顶点过多,同样会导致顶点色着器的情能消耗。

技术美术交流公众号:技术美术TA

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值