如何用unity3D shader修改渲染设置 使空缺贴图显示透明而不是白色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用unity3D shader修改渲染设置 使空缺贴图显示透明而不是白色相关的知识,希望对你有一定的参考价值。

修改对象为unity5手游
拆包后哪类文件是渲染设置

在property里面,声明贴图属性的那一行,后面的="white"就是默认值为不透明白色了,要透明就改成=(0,0,0,0),另外材质本身必须是pragma写了透明的 参考技术A Pass

Blend SrcAlpha OneMinusSrcAlpha

如何用maya 渲染论文彩图 (occulusion效果)

本文指导如何使用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:MeshShape;' %frameid) 这里涉及到 mesh的名称,可以看到里面的名称
是与网格的名称对应的,如果你不按照 mesh_0000.obj的命名,那么脚本中相关的名称要改一下

脚本文件:
import  re import  maya.api.OpenMaya as api import  maya.mel as mel global  cnt global  framenum framenum  =  3   cnt  =  0 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:MeshShape;'  % frameid)              mel. eval ( 'polyColorPerVertex -r 0.5 -g 0.5 -b 0.5 -a 1 -cdo;' )                             fColor  =  open (labelColorFilePath,  'r' )              lineColor  =  fColor.readline()              =  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)                         =  api.MColor(rgbVal)                      cArray.append(c)                      count  + =  1                      lineColor  =  fColor.readline()                      if  count > countmax:                              break              fColor.close()                 iArray  =  [i  for  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  re 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 unity3d 怎么建shader

unity3d 如何用一张png图片,绘制一个圆环?

Unity3D ShaderLab 修改渲染队列进行深度排序

Unity3D Shader之路 写Shader前必须要知道的事情 渲染流水线的概括

unity3d shader 自定义光照函数

Unity3D之高级渲染-Shader Forge增强版

(c)2006-2024 SYSTEM All Rights Reserved IT常识