【学习填坑之路】VRay渲染之Plugins介绍和使用

VRay插件-plugins

1、什么是plugins?——插件是场景的构建块(包括顶级插件灯光,几何,非顶级插件材质,特殊插件设置),都有对应的getter,setter,getPlugin()来调用,在调用或者禁用json文件中的字段都需要使用到plugins。

ex2.1
#创建一个相机实体
renderView = renderer.plugins.renderView
#这样创建也是可以的
renderView = renderer.plugins["renderView"]
#输出实例
allInstanceNames = [plugin.getName() for plugin in renderer.plugins]
print(allInstanceNames)
#输出类名
allClassNames = [klass.getName() for klass in renderer.classes] print(allClassNames)
for node in renderer.classes.Node.getInstances():
print(node.getName())

2、vray元数据meta——即所有插件都会公开有关其属性的名称,类型,默认值和描述的信息

  • 创建删除插件实例:
ex2.2
renderView = renderer.plugins.classes.RenderView()
# 创建和删除一个新节点
node = renderer.plugins["Nodename"]
del renderer.plugins["Nodename"]
# 或者
del renderer.plugins.Nodename
# 或者
del renderer.plugins[node.getName()]
oldPlugin = renderer.plugins["oldMaterial"]
newPlugin = renderer.classes.MtlSingleBRDF("newMaterial")
newPlugin.brdf = renderer.classes.BRDFDiffuse("grayDiffuse")
oldPlugin.replaceWith(newPlugin)
  • 操作输出参数和运行时类型:
ex2.3
renderView.transform = vray.Transform()
print(renderView.transform)
copyTransform = renderView.transform
copyTransform.replaceOffset(vray.Vector(10, copyTransform.offset.y, copyTransform.offset.z))
print(renderView.transform)
renderView.transform = copyTransform
print(renderView.transform)
# 使用材质插件
brdfVRayMtl.opacity = texBitmap.getReference("alpha")
# 或者
brdfVRayMtl.opacity = texBitmap.alpha
# 材质不透明度将来自位图alpha通道
meta = brdfVRayMtl.getMeta()
# 此参数的输出将取决于应用于此元数据中的内容
print(meta['diffuse']['type'], meta['diffuse']['runtimeType'])
# 我们还可以在运行时在元信息中检查列表的大小
meta = brdfLayered.getMeta()
print(meta['brdfs']['elementsCount'])

3、VRay场景文件格式:一般来说VRay使用基于文本的场景文件格式(.vrscene)

  • 可以使用#include“another.vrscene”指令将文件拼接在一个单独的vrscene文件中,然后进行操作调用,一般一个场景不同的vrmesh放在不同的场景下使用该指令进行操作,方便修改添加。
  • 每个插件实例都在一个新行上定义,该行以其类型名称开头,后跟空格,实例名称,另一个空格和一个左大括号。
  • 每个参数都写在一个新行上,其名称是一个等号,两边都没有空格和一个值。该行以分号结尾。对于长逗号分隔值(例如列表),参数定义行可以分成多行。
  • 通过写出不带引号的实例名称来定义对其他插件的引用。使用附加的双冒号和参数名称(instance_name :: out_param_name)以相同的方式指定输出参数。
  • 解析器对缩进和空行无动于衷。唯一的空白规则是参数值赋值运算符(=)周围没有空格。

你可能感兴趣的:(VRay_SDK)