如何在Maya中修改已经绑定后的模型的法线

前言:最近想把尼尔机械纪元的2B导入到UE中看看效果,可不知道是不是我解包的过程有问题,2B模型的裙子部分的发现有问题,而且裙子的模型还被拆分为了3个部分,直接软边是不管用的,而且已经绑定的模型就算修改了法线导出之后也没有效果,

本文分为两个部分,分别是翻译的一篇artstation上的文章和我自己的做法

一.如何在maya中给已经绑定的物体传递UV

文章出处:Transferring UVs AFTER rigging in Maya
第一段作者表示,他这篇文章也不是原创的,他在他的博客备份的主要原因是怕这个文章会消失,就像是他以前收藏的那些资源一样.并且他新添加了一些图片,他觉得一图胜千言.

然后作者讲解了为什么在绑定之后传递UV不起效果,原因就是你在绑定之后所做的操作在maya的节点堆栈中都会排在绑定节点的后面.等于并没有对原模型做出修改,不理解的话可以看下图.
在这里插入图片描述

可以看到,我们所做的操作都在绑定节点之后(说实话我也不知道为什么在绑定后的节点对mesh节点所做的操作在导出之后会不起作用)

那么该怎么做呢

作者说每个物体都有一个 shape orig节点,他代表了每一个模型在绑定之前原始的模型,我们可以在这个原始的模型上应用UV传递,就可以了

步骤

  • 选择你已经绑定好的模型,(在窗口中找到Hypergraph Hierarchy),然后在菜单中找到options|display|Shape Nodes和Hidden Nodes
    在这里插入图片描述
  • 你会看到一个隐藏的节点,它是你的原点节点,或者说这是你的模型在绑定前的样子

在这里插入图片描述

  • 选择那个原始的shape在Object Display 中找到并取消勾选Intermediate Object,然后为了方便选择,可以再选中绑定后的shape在Obejct Display中取消勾选Visibility,不然在视口中会显示两个模型
    在这里插入图片描述
  • 接着将UV传递给你的原始的模型,然后清除历史就可以了(这点,存疑我在实际操作中没有清除历史导出后也可以继承-至少法线ok)

二.如何处理法线

解决了如何修改绑定后模型属性的问题,接下来就该讨论如何修改法线了.

在这里插入图片描述
首要问题是,如何平滑两个物体间的法线,这里我想的是计算物体交界处点的法线取平均,实测下来效果还OK

# 定义获取顶点法线的函数
def getNormal(vertName):
    normTemp = cmds.polyNormalPerVertex(vertName, query=True, xyz=True)
    xAve = normTemp[0]
    yAve = normTemp[1] 
    zAve = normTemp[2]    
    aveList = [xAve, yAve, zAve]
    return aveList
  # 简单的写一个归一化的函数
def normalize(vec):
	import math
	length = math.sqrt(vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2])
	return(vec[0]/length,vec[1]/length,vec[2]/length)
selectPoints = cmds.ls(selection=True)
if len(selectPoints) == 2:
	normal_1 = getNormal(selectPoints[0])
	normal_2 = getNormal(selectPoints[1])
	normal = normalize([normal_1[0]+normal_2[0],normal_1[1]+normal_2[1],normal_1[2]+normal_2[2]]) #相加并归一化两个顶点的法线
	cmds.polyNormalPerVertex(selectPoints[0],xyz=(normal[0],normal[1],normal[2]))
	cmds.polyNormalPerVertex(selectPoints[1],xyz=(normal[0],normal[1],normal[2]))

接下来只需要一对一对的选择交接出的点,然后应用这个脚本即可,需要注意的是一定要应用在原始模型上面

在这里插入图片描述
在这里插入图片描述
可以看到在交界区的法线已经被平滑了.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值