MAXScript

本页提供有关使用MAXScript与V-Ray的信息。

在3ds Max中,假设您当前的渲染器设置为V-Ray,您可以使用渲染器结构从MAXScript引用它:

VR = renderers.current

V_Ray_Adv_3_30_04:V_Ray_Adv_3_30_04

假设变量 vr 保存V-Ray渲染器的一个实例,您可以像其他任何MAXScript对象一样使用渲染器设置:

showproperties vr

.imageSampler_type : integer

.fixedRate_subdivs : integer

.fixedRate_rand : boolean

...............

...............

...............

.options_maxDepth : integer

.options_maps : boolean

.options_filterMaps : boolean

.output_on : boolean

.output_width : integer

.output_height : integer

.output_fileOnly : boolean

.output_saveFile : boolean

.output_fileName : string

.output_saveRawFile : boolean

.output_rawFileName : string

false

假设变量 vr 保存V-Ray渲染器的一个实例,您可以像其他任何MAXScript对象一样使用渲染器设置:

访问参数是相当容易的,例如:

vr.gi_on=true

true

以下方法可用于保存/加载辐照度和光子图(假设 vr持有V-Ray的实例):

全局功能 描述
VR.saveCausticsPhotonMap < filename > 将当前的焦散光子图保存到给定文件中。
VR.saveGlobalPhotonMap < filename > 将当前的全局光子图保存到给定文件。
VR.saveIrradianceMap < filename > 将当前的辐照度图保存到给定的文件。
VR.saveLightCache < filename > 将当前的光缓存保存到给定的文件。
VR.loadIrradianceMap < filename > 从给定的文件加载辐照度图。
VR.clearIrradianceMap() 清除当前在内存中的辐照度图
VR.clearLightCache() 清除当前在内存中的光缓存。
VR.showLastVFB() 显示具有最后渲染图像的V-Ray VFB窗口。

此外,以下MAXScript功能在全球范围内可用:

渲染方法 描述
doVRayObjectProperties() 启动V-Ray对象属性对话框。
doVRayMeshExport() 启动V-Ray Mesh Export对话框。
vrayMeshExport
[ meshFile:<mesh file > ”]
[ autoCreateProxies: true | false]
[ exportMultiple: true | false]
[ animation: on|off]
[ animationRange: #scene | #explicit]
[ animationStart: < integer > ]
[ animationEnd: < integer > ]
[ animationRedrawViews: true | false]
[ minPreviewFaces: < integer > ]
[ maxPreviewFaces: < integer > ]
[ previewFacesPercentage: < integer >]
[ previewMesh: < preview node > ]
[ nodes: < object / objects of object / objectset >]
[ proxyName:< string > ”]
[ createMultiMtl: true | false]
[ condenseMultiMtl: true | false]
[ facesPerVoxel: < integer > ]
[ oneVoxelPerMesh: true | false]
[ exportPointClouds: true | false]
[ pointSize: < float >]
[ previewType: < string >]

导出 .vrmesh文件,而不显示对话框。返回一个新创建的VRayProxy对象的数组(如果有的话)。

< mesh file > 是所需的 .vrmesh 文件的名称 。如果名称不包含路径,则使用默认的3ds Max网格路径。如果该名称不包含扩展名, 则会自动附加一个 .vrmesh扩展名。如果名称不包含文件名,则使用场景节点名称。

如果 未指定autoCreateProxies 选项,则默认情况下,只会导出网格,在场景中不会创建代理。

如果 未指定exportMultiple 选项,默认情况下将网格导出到多个文件。

如果 动画 选项设置为 开 ,则会创建动画代理文件。

在这种情况下,动画范围由 animationRange 选项 确定 - 如果设置为 #explicit ,则导出的帧范围由 animationStart 和 animationEnd 选项(以帧为单位)指定,否则使用当前场景动画范围。

如果将 animationRedrawViews 选项设置为 true, 则将在动画导出过程中更新视口。

如果 指定了minPreviewFaces 参数,则导出的 .vrmesh 文件将包含具有指定的最小三角形数量的预览 。

如果 指定了maxPreviewFaces 参数,则导出的 .vrmesh 文件将包含具有指定最大三角形的预览,否则将使用默认值 10000个 三角形。

如果 指定了previewFacesPercentage 参数, 那么在预览网格中将显示总面积的百分比。

previewType可以接受三个字符串作为值: “clustering”, “combine”和“face_sampling”(按照该顺序对应于UI的“顶点聚类”,“精简聚类”和“Face Skipping”),

注意: previewMesh 选项仅在导出到单个.vrmesh文件(即exportMultiple 为 false) 时才有效。该 的proxyName 选项仅在有效 autoCreateProxies 是真实的。

vrayMeshImport
[ proxy:< proxy mesh object(s)>]
[ explicitNormals:true | false]
[ weldVertices:true | false]

将所选的VRayProxy对象的几何导入为可编辑的网格

< proxy mesh object(s)> 是一个 VRayProxy 对象,一个 VRayProxy 对象或一个 ObjectSet (例如$ geometry) 的数组 。如果未指定此选项, 则从当前选择的VRayProxy 对象将作为网格导入。

registerVRayMenus() 将各种V-Ray组件(灯,相机,几何对象,修饰符等)注册到3ds Max 创建,修饰符等菜单中。如果3ds Max菜单系统被重置并且菜单关联丢失,则此功能非常有用。您还可以直接从V-Ray工具栏调用此功能。
unregisterVRayMenus() 从3dsMax标准菜单中删除V-Ray特定项目
updateVRayMenus() 刷新3ds Max标准菜单中的所有V-Ray特定项目
setVRaySilentMode() 禁用加载场景时可能出现的任何V-Ray对话(即与旧版本的差异的通知等)。
vrayEditDRSettings() 打开编辑V-Ray DR设置的对话框。
vrayAddTraceSets < node> 添加并返回指定节点的新的V-Ray跟踪集对象(或者只返回它,如果已经存在)。对返回的对象使用showproperties来查看可用的属性(反射和折射跟踪集)。
vrayRemoveTraceSets < node> 删除指定节点的V-Ray跟踪集对象。
vrayGetTraceSets < node> 返回指定节点的V-Ray跟踪集对象,如果不存在则返回未定义。
vrayVersion() 使用当前版本的V-Ray和内部版本号返回两个元素的数组。构建号仅用于夜间构建,并且可能是用于官方构建的空字符串。
vrayShowMsgLogWindow() 显示V-Ray消息窗口。
vrayCloseMsgLogWindow() 关闭V-Ray消息窗口。

以下全局MAXScript函数可用于访问V-Ray虚拟帧缓冲区。

坐标。
全局VFB功能 描述
vrayVFBGetRegionEnabled() 返回V-Ray VFB中的区域渲染是否启用(true)还是禁用(false)。
vrayVFBGetRegion() 返回一个具有四个整数元素的数组,表示VFB渲染区域的像素坐标(左,上,右,下)。左侧和上侧坐标包含在该区域中,右侧和底部坐标不包括在该区域中。
vrayVFBSetRegionEnabled true | false 打开或关闭VFB区域渲染选项。
vrayVFBSetRegion left top right bottom 将VFB渲染区域设置为指定的
vrayVFBGetNumChannels() 返回V-Ray VFB中的通道数(渲染元素)。如果VFB未初始化或不存储任何数据,则返回0。
vrayVFBGetChannelName i 返回第i个频道的名称。索引从1开始。
vrayVFBGetChannelType i 返回第i个通道的存储类型。索引从1开始。返回值指定给定通道中每个像素的数据类型:
0 - 索引无效或VFB不存储图像;
1 - 单个浮点数(例如,用于z深度通道);
2 - 三个浮点数(用于常规颜色通道);
3 - 两个浮点数; 4 - 单个整数(例如,由渲染ID和材料ID元素使用);
5 - 三个带符号的浮点数(例如,用于法线和世界排名通道)。
vrayVFBGetChannelAlias i 返回第i个通道的别名。索引从1开始。请参阅V-Ray SDK文件“pixelbuffer.h”中的RegionChannelAlias枚举。
vrayVFBGetChannelBitmap i 以3ds Max位图形式返回指定通道的内容。索引从1开始。如果通道索引无效或VFB不包含任何数据,则返回未定义。
vfbControl() 允许控制V-Ray VFB的各个方面。键入vfbControl()以获取可用参数的列表,或者有关详细信息,请参阅以编程方式控制VFB页面。
vfbControl #show [true / false] 打开(true)或关闭(false)VFB窗口或返回其当前显示状态,如果调用没有值。

附加的MAXScript函数由V-Ray RT渲染器添加。

V-Ray RT功能 描述
vrayGetRTBitmap() 将当前ActiveShade窗口的内容返回为位图,如果ActiveShade未启动,则返回未定义。
vrayExportRTScene<filename>
[ separateFiles:true|false]
[ exportView:true|false]
[ exportLights:true|false]
[ exportGeometry:true|false]
[ exportNodes:true|false]
[ exportMaterials:true|false]
[ exportTextures:true|false]
[ exportBitmaps:true|false]
[ incrBaseFrame:true|false]
[ prefix: <prefix string >]
[ startFrame: <startFrame >]
[ endFrame: <endFrame>]
[ stripPaths: true|false]

直接从当前视口将当前3ds Max场景导出为.vrscene文件。如果将“ separateFiles”选项设置为true,则会根据其类型(视图转换,灯光,网格几何,节点转换,材质,纹理和位图)将场景组件分割为不同的文件。如果指定了prefix关键字,则前缀字符串将被添加到生成的.vrscene文件中的所有插件名前。如果指定了startFrameendFrame选项,则会为指定的帧导出动画的.vrscene文件。如果stripPaths选项设置为true,则任何资产(位图,辐照度图,

注意:必须选择V-Ray RT作为当前ActiveShade渲染器才能使此功能正常工作。

注2:目前,.vrscene导出遵循V-Ray RT ActiveShade渲染器中的设置,用于导出代理,X-Ref场景和容器,粒子系统和位移。

附加的MAXScript功能可用于交互式制作渲染。

V-Ray IPR功能 描述
vrayStartIPR() 开始交互式制作渲染。当使用V-Ray RT作为生产渲染器时,这将启动ActiveShade渲染。将使用任何预先存在的V-Ray RT ActiveShade设置。否则,ActiveShade渲染将使用当前RT生产渲染设置。
vrayUpdateIPR() 刷新交互式渲染。
vrayStopIPR() 停止当前的交互式渲染。

当渲染完成后,V-Ray会尝试呼接的MAXScript功能vrayIPRImageComplete。要在渲染完成时执行操作,您可以自己定义此功能。例如,以下代码在渲染完成时打印消息:

global vrayIPRImageComplete< font >< /font >
<font > </font >

fn vrayIPRImageComplete = (< font >< /font >

print "IPR Image completed "< font >< /font >
)< font >< /font >