如何keyshot渲染灯光效果可以达到下图效果

图形学(10)
本文指导如何使用Maya来渲染一些用于论文的彩图,效果如下:
本例子所用的maya版本&maya2015
步骤如下:
一、初始环境设置
1.打开 maya , 在新场景 ,确保一些环境设置。
&勾上 Mayatomr.dll &中的 两个选项
二、顶点上色
由于脚本中使用的命名的原因,要到如的obj应该按照图中的格式 ,从mesh_0000.obj 开始
使用移动工具调整好人的位置
下面说下如何上色:
由于 这里使用的网格顶点数都相同,可以都用同一个颜色文件,格式如下:
然后使用 maya 脚本读取 这个 squat2_coloring.seg 文件,给网格上色
framenum 是场景中mesh(也就是本例子中的人)的个数
labelColorFilePath 是上色文件的路径
countmax 这里设为100000 ,是假定网格顶点的数量不超过100000
mel.eval('select&-r&mesh_000%d:MeshS'&%frameid)
这里涉及到 mesh的名称,可以看到里面的名称
是与网格的名称对应的,如果你不按照
mesh_0000.obj的命名,那么脚本中相关的名称要改一下
脚本文件:
import&maya.api.OpenMaya&as&api
import&maya.mel&as&mel
global&cnt
global&framenum
framenum&=&3&&
global&countmax
countmax&=&100000
global&labelColorFilePath
labelColorFilePath&=&r'D:\zzb\squat2\squat2_coloring.seg'
def&paintColor():
&&&&for&frameid&in&range&(framenum):
&&&&&&&&&&&&mel.eval('select&-r&mesh_000%d:MeshS'&%frameid)
&&&&&&&&&&&&mel.eval('polyColorPerVertex&-r&0.5&-g&0.5&-b&0.5&-a&1&-')
&&&&&&&&&&&&&&
&&&&&&&&&&&&fColor&=&open(labelColorFilePath,&'r')
&&&&&&&&&&&&lineColor&=&fColor.readline()
&&&&&&&&&&&&p&=&re.compile('\s+')
&&&&&&&&&&&&count=&0
&&&&&&&&&&&&rgbVal&=&[1.0,0.0,0.0,1.0]
&&&&&&&&&&&&selectionList&=&api.MGlobal.getActiveSelectionList()
&&&&&&&&&&&&nodeDagPath&=&selectionList.getDagPath(0)
&&&&&&&&&&&&mfnMesh&=&api.MFnMesh(nodeDagPath)
&&&&&&&&&&&&cArray&=&[]
&&&&&&&&&&&&while&lineColor:
&&&&&&&&&&&&&&&&&&&&lineColor&=lineColor.strip('&&&')
&&&&&&&&&&&&&&&&&&&&lineColor&=lineColor.strip('\n')
&&&&&&&&&&&&&&&&&&&&splitesult&=&p.split(lineColor)
&&&&&&&&&&&&&&&&&&&&#cmds.select('MeshShape.vtx[%d]'&%&count)
&&&&&&&&&&&&&&&&&&&&rgbVal[0]&=&(float(splitesult[0]))
&&&&&&&&&&&&&&&&&&&&rgbVal[1]&=&(float(splitesult[1]))
&&&&&&&&&&&&&&&&&&&&rgbVal[2]&=&(float(splitesult[2]))&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&#cmds.polyColorPerVertex(&rgb&=&rgbVal&,&notUndoable&=&True)
&&&&&&&&&&&&&&&&&&&&c&=&api.MColor(rgbVal)
&&&&&&&&&&&&&&&&&&&&cArray.append(c)
&&&&&&&&&&&&&&&&&&&&count&+=&1
&&&&&&&&&&&&&&&&&&&&lineColor&=&fColor.readline()
&&&&&&&&&&&&&&&&&&&&if&count&&&countmax:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&break
&&&&&&&&&&&&fColor.close()
&&&&&&&&&&&&iArray&=&[i&for&i&in&xrange(count)]
&&&&&&&&&&&&mfnMesh.setVertexColors(cArray,&iArray)
&&&&&&&&&&&&global&cnt
&&&&&&&&&&&&cnt&+=&1
&&&&&&&&&&&&print&cnt
paintColor()
选择人物右键 ,可以看到新上色的数据保存在colorSet1(RGBA)
此时渲染是没有上色的效果的,这是因为 )Maya中多边形的顶点着色,使用的是与材质无关的另一套数据信息,这些顶点色彩与几何体存储在一起,可以导出到游戏引擎或其他软件中,但使用Maya software渲染器无法渲染出设定的顶点颜色。如图:
三、导出mesh颜色到材质并渲染
由于本文中脚本的所用的节点的命名问题,请确保此时Hypershade中的 材质节点是初始的,这样保证后面创建新的材质节点时命名不会出问题
初始的节点是这三个,工作区为空
如果有 多余的材质节点在,删除它们的连接线后,再点 删除未使用节点
选择人物,再点节点编辑器
可以看到 人物它对应的网格节点 mesh_0000:MeshShape
点可显示&网格节点
mesh_0000:MeshShape 连接的其他节点
可以看到&mesh_0000:MeshShape 一开始 连接的是 initialShadingGroup ,这是初始的材质。
接下来要使用下面的一个代码来连接材质节点,并创建新的材质节点连接来用于我们的渲染
说下下面的脚本,主要是做一些 渲染节点 的创建和连接 ,由于涉及到节点的名称的关系,为了保证名字的正确,在运行这个脚本之前就不要创建其他材质。framenum 是场景中mesh(也就是本例子中的人)的个数
import&maya.cmds&as&cmds
import&maya.mel&as&mel
global&count&
count&=&0&
global&framenum
framenum&=&3
for&frameid&in&range&(0,&framenum):
&&&&print&count
&&&&mel.eval('string&$surfaceShader_%d&=&`createNode&&surfaceShader`;'&%(frameid+1))
&&&&mel.eval('sets&-renderable&true&-noSurfaceShader&true&-empty&-name&surfaceShader%dSG;'%(frameid+1))
&&&&mel.eval('connectAttr&-f&surfaceShader%d.outColor&surfaceShader%dSG.surfaceS'%(frameid+1&,frameid+1))
&&&&mel.eval('string&$mib_amb_occlusion_%d&=&`createNode&&mib_amb_occlusion`;'&%(frameid+1)&)
&&&&mel.eval('connectAttr&-force&mib_amb_occlusion%d.outValue&surfaceShader%d.outC'%(frameid+1&,frameid+1))
&&&&mel.eval('string&$mentalrayVertexColors_%d&=&`createNode&mentalrayVertexColors`;'&%(frameid+1))
&&&&mel.eval('connectAttr&-force&mesh_000%d:MeshShape.colorSet[0].colorName&mentalrayVertexColors%d.cpvSets[0];'&%(frameid&,frameid+1))
&&&&mel.eval('connectAttr&-f&mentalrayVertexColors%d.outColor&mib_amb_occlusion%d.&'%(frameid+1&,frameid+1))
&&&&mel.eval('disconnectAttr&mesh_000%d:MeshShape.instObjGroups[0]&initialShadingGroup.dagSetMembers[%d];'%(frameid&,frameid)&)
&&&&mel.eval('connectAttr&-force&mesh_000%d:MeshShape.instObjGroups[0]&surfaceShader%dSG.dagSetMembers[0];'%(frameid&,frameid+1))
&&&&mel.eval('setAttr&&mib_amb_occlusion%d.samples&&256;'&%(frameid+1)&)
&&&&count+=1
其中&mel.eval('setAttr&&mib_amb_occlusion%d.samples&&256;'&%(frameid+1)&)
设定samples 值为256 ,可根据自己的情况设定
这个新的节点连接中关键是用到了 一个mentalrayVertexColors&节点,它可以把 网格mesh_0000中的颜色集 导出,并输入到其他节点,比如这里的mib_amb_occlusion ,这样使得mib_amb_occlusion
具有mesh_0000中颜色集的颜色了,也就得到了一个新的材质。最后还要把新材质赋予给mesh_0000,即把mesh_0000:MeshShape连接到 surfaceShader1SG
这些节点的连接过程当然可以手工在节点编辑器上完成,但比较麻烦,也可能引发死机(我双点了一下节点就死机了,原因不明)
此时由于occ材质的关系,在 viewport2.0 下物体表面黑色,不利于观察,可以切换到旧版默认视口
效果下面这样
改一下照相机的底色
保存为png 格式,其实那些白色的透明的
但这个效果我们还是不满意,因为感觉缺少阴影效果。由于occ 材质的原因,我们不需要添加灯光,要产生阴影,需要加上一些地板等其他东西,物体与物体之间就会产生阴影效果
接下来给地板也上occ 白色材质
可以用下面这个mel 代码来连接该两个节点
connectAttr -f mib_amb_occlusion4.outValue surfaceShader4.outC
setAttr&&mib_amb_occlusion4.samples& 256;
final results
more results
文中所用的素材以及maya文件请到 我的资源区下载
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6293次
排名:千里之外
转载:15篇
(1)(3)(5)(1)(1)(5)(2)(2)(1)后使用快捷导航没有帐号?
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
求教:如何才能把下图的黑色成烤漆玻璃的效果.还有下图中有何缺点请指出
在线时间5 小时
红宝石0 个
jkjhgkkgkugui
SU版本2015
在线时间2729 小时
吧币2977 个
红宝石1496 个
& & 有些效果是受渲染器功能限制的,当渲染器具有了创造出这种效果的潜力的时候,我们通过建模时的考虑,贴图的选择,是可以模仿出某些效果,但是永远不要试图模仿一张照片,任何虚拟光传的渲染器的最高境界都只能达到单独摆在你面前的时候表现出一种极高的还原度,但是这样的渲染图是罕有能和照片相媲美的
在线时间136 小时
红宝石18 个
反射没加。。。
在线时间1671 小时
吧币1405 个
红宝石2500 个
不要用全黑,用深灰+反射设置即可!!
SU版本2016
在线时间742 小时
红宝石86 个
方法很多,你不去思考。。。
在线时间110 小时
红宝石0 个
到底怎么回事?
在线时间136 小时
红宝石57 个
非聂耳也要调参数哦!!
在线时间0 小时
红宝石0 个
到底怎么回事?
在线时间29 小时
红宝石4 个
[img][/img]
在线时间1542 小时
吧币1016 个
红宝石9 个
看看怎麼回是
在线时间95 小时
红宝石1 个
晕晕晕 又三十天没回帖了 我潜水时间没那么长吧~~~对不起,我灌水了。
在线时间502 小时
吧币182 个
红宝石4 个
我来看来的
在线时间221 小时
红宝石1 个
:-s:-s:-s:-s:-s
在线时间32 小时
红宝石0 个
我不锈钢效果也很难出
在线时间11 小时
红宝石0 个
SU做反光玻璃效果是一个一直没有解决的问题,之后靠后期处理
在线时间192 小时
红宝石0 个
最近也剛碰VFS也碰到這問題,剛好可以解答
在线时间9 小时
红宝石2 个
看不到图片是怎么回事?
在线时间359 小时
红宝石2 个
网站日常维护组
网站日常维护组成员
社区QQ达人
使用QQ帐号登录论坛的用户
2012龙年春节团拜纪念邮
2012龙年春节团拜纪念邮
表彰一直以来关注BAR的吧友
表彰有优异表现的版主
Sketchup建模大赛 第八期 TOP5
Sketchup建模大赛 第八期 TOP5
推动SketchupBAR不断前进的核心力量
宝石收藏家
表彰红宝石拥有者
表彰有突出贡献的吧友
Sketchup建模大赛 第四期 TOP5
Sketchup建模大赛 第四期 TOP5
Sketchup建模大赛 第六期 TOP5
Sketchup建模大赛 第六期 TOP5
共享精神奖
表彰用户的共享精神
热心助人奖
表彰热于助人的吧友
SuBAR聚会纪念邮 上海站
SuBAR聚会纪念邮票
Sketchup建模大赛 第一期 TOP5
Sketchup建模大赛 第一期 TOP5
Sketchup建模大赛 第二期 TOP5
Sketchup建模大赛 第二期 TOP5
在线时间221 小时
红宝石1 个
用户组: SU入学(等级1)
评价与分享
是网站发展的源动力!
站长推荐 /1
SUAPP本次更新,除了及时对2017进行了兼容以外,也对3.0以来新增的工具栏布局进行了多方面改进和修复。
Copyright & 2008 - 2014
All rights reserved.

我要回帖

更多关于 头发移植多久达到效果 的文章

 

随机推荐