If your drawing contains 3D faces, meshes, surfaces, or solids, you can control how the 3D objects appear when outputting a layout. A viewport can be set to use a visual style, render preset, one of the other values defined by the ShadePlotStype enum. Shaded and rendered viewports are previewed, plotted, and plotted to file with full shading and rendering. Use the SetShadePlot method and ShadePlot property of the Viewport object to query and set the option for plotting a shaded viewport.
When outputting a layout, you can override the ShadePlot property of all the viewports on a Layout object by using the layout's ShadePlot property and control the shaded quality using the ShadePlotResLevel property.
This example creates two new viewports (rectangular and nonrectangular, and assigns a visual style to one and a render preset to another. A help function is used to create a render preset that can then be assigned to the viewport.
' Standard .NET namespaces Imports System.Runtime.InteropServices ' Main AutoCAD namespaces Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.Geometry Imports Autodesk.AutoCAD.GraphicsInterface Imports Autodesk.AutoCAD ' Used to set a viewport current <DllImport("accore.dll", CallingConvention:=CallingConvention.Cdecl, _ EntryPoint:="?acedSetCurrentVPort@@YA?AW4ErrorStatus@Acad@@PEBVAcDbViewport@@@Z")> _ Public Shared Function acedSetCurrentVPort(ByVal AcDbVport As IntPtr) As IntPtr End Function ' Used to create a rectangular and nonrectangular viewports <CommandMethod("CreatViewportsAndSetShadePlot")> _ Public Sub CreatViewportsAndSetShadePlot() ' Get the current document and database, and start a transaction Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument Dim acCurDb As Database = acDoc.Database Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() ' Open the Block table for read Dim acBlkTbl As BlockTable = acTrans.GetObject(acCurDb.BlockTableId, _ OpenMode.ForRead) ' Open the Block table record Paper space for write Dim acBlkTblRec As BlockTableRecord = _ acTrans.GetObject(acBlkTbl(BlockTableRecord.PaperSpace), _ OpenMode.ForWrite) ' Switch to the previous Paper space layout Application.SetSystemVariable("TILEMODE", 0) acDoc.Editor.SwitchToPaperSpace() ' Remove any viewports that already exist For Each objId As ObjectId In acBlkTblRec Dim dbObj As DBObject = acTrans.GetObject(objId, OpenMode.ForRead) ' Remove any viewports in the block If TypeOf dbObj Is DatabaseServices.Viewport Then dbObj.UpgradeOpen() dbObj.Erase(True) End If Next ' Create a Viewport Using acVport1 As DatabaseServices.Viewport = New DatabaseServices.Viewport() ' Set the center point and size of the viewport acVport1.CenterPoint = New Point3d(3.75, 4, 0) acVport1.Width = 7.5 acVport1.Height = 7.5 ' Lock the viewport acVport1.Locked = True ' Set the scale to 1" = 4' acVport1.CustomScale = 48 ' Set visual style Dim vStyles As DBDictionary = _ acTrans.GetObject(acCurDb.VisualStyleDictionaryId, _ OpenMode.ForRead) acVport1.SetShadePlot(ShadePlotType.VisualStyle, _ vStyles.GetAt("Sketchy")) ' Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acVport1) acTrans.AddNewlyCreatedDBObject(acVport1, True) ' Change the view direction and enable the viewport acVport1.ViewDirection = New Vector3d(-1, -1, 1) acVport1.On = True ' Create a rectangular viewport to change to a non-rectangular viewport Using acVport2 As DatabaseServices.Viewport = New DatabaseServices.Viewport() acVport2.CenterPoint = New Point3d(9, 6.5, 0) acVport2.Width = 2.5 acVport2.Height = 2.5 ' Set the scale to 1" = 8' acVport2.CustomScale = 96 ' Set render preset Dim namedObjs As DBDictionary = _ acTrans.GetObject(acCurDb.NamedObjectsDictionaryId, _ OpenMode.ForRead) ' Check to see if the Render Settings dictionary already exists Dim renderSettings As DBDictionary If namedObjs.Contains("ACAD_RENDER_PLOT_SETTINGS") = True Then renderSettings = acTrans.GetObject( _ namedObjs.GetAt("ACAD_RENDER_PLOT_SETTINGS"), _ OpenMode.ForWrite) Else ' If it does not exist, create it and add it to the drawing namedObjs.UpgradeOpen() renderSettings = New DBDictionary namedObjs.SetAt("ACAD_RENDER_PLOT_SETTINGS", renderSettings) acTrans.AddNewlyCreatedDBObject(renderSettings, True) End If ' Create the new render preset, based on the settings ' of the Medium render preset Using renderSetting As New MentalRayRenderSettings GetDefaultRenderPreset(renderSetting, "Medium") renderSetting.Name = "Medium" renderSettings.SetAt("Medium", renderSetting) acTrans.AddNewlyCreatedDBObject(renderSetting, True) acVport2.SetShadePlot(ShadePlotType.RenderPreset, _ renderSetting.ObjectId) End Using ' Create a circle Using acCirc As Circle = New Circle() acCirc.Center = acVport2.CenterPoint acCirc.Radius = 1.25 ' Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acCirc) acTrans.AddNewlyCreatedDBObject(acCirc, True) ' Clip the viewport using the circle acVport2.NonRectClipEntityId = acCirc.ObjectId acVport2.NonRectClipOn = True End Using ' Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acVport2) acTrans.AddNewlyCreatedDBObject(acVport2, True) ' Change the view direction acVport2.ViewDirection = New Vector3d(0, 0, 1) ' Enable the viewport acVport2.On = True End Using ' Activate model space acDoc.Editor.SwitchToModelSpace() ' Set the new viewport current via an imported ObjectARX function acedSetCurrentVPort(acVport1.UnmanagedObject) End Using ' Save the new objects to the database acTrans.Commit() End Using End Sub ' Method used to populate a MentalRayRenderSettings object with the ' same settings used by the standard render presets Private Shared Sub GetDefaultRenderPreset( _ ByRef renderPreset As MentalRayRenderSettings, _ ByVal name As String) ' Set the values common to multiple default render presets renderPreset.BackFacesEnabled = False renderPreset.DiagnosticBackgroundEnabled = False renderPreset.DiagnosticBSPMode = _ DiagnosticBSPMode.Depth renderPreset.DiagnosticGridMode = _ New MentalRayRenderSettingsTraitsDiagnosticGridModeParameter( _ DiagnosticGridMode.Object, 10.0) renderPreset.DiagnosticMode = _ DiagnosticMode.Off renderPreset.DiagnosticPhotonMode = _ DiagnosticPhotonMode.Density renderPreset.DisplayIndex = 0 renderPreset.EnergyMultiplier = 1.0 renderPreset.ExportMIEnabled = False renderPreset.ExportMIFileName = "" renderPreset.FGRayCount = 100 ' FGSampleRadius cannot be set, it returns invalid input renderPreset.FGSampleRadiusState = _ New MentalRayRenderSettingsTraitsBoolParameter( _ False, False, False) renderPreset.FinalGatheringEnabled = False renderPreset.FinalGatheringMode = _ FinalGatheringMode.FinalGatherOff renderPreset.GIPhotonsPerLight = 1000 renderPreset.GISampleCount = 500 renderPreset.GISampleRadius = 1.0 renderPreset.GISampleRadiusEnabled = False renderPreset.GlobalIlluminationEnabled = False renderPreset.LightLuminanceScale = 1500.0 renderPreset.MaterialsEnabled = True renderPreset.MemoryLimit = 1048 renderPreset.PhotonTraceDepth = _ New MentalRayRenderSettingsTraitsTraceParameter( _ 5, 5, 5) renderPreset.PreviewImageFileName = "" renderPreset.RayTraceDepth = _ New MentalRayRenderSettingsTraitsTraceParameter( _ 3, 3, 3) renderPreset.RayTracingEnabled = False renderPreset.Sampling = _ New MentalRayRenderSettingsTraitsIntegerRangeParameter( _ -2, -1) renderPreset.SamplingContrastColor = _ New MentalRayRenderSettingsTraitsFloatParameter( _ 0.1, 0.1, 0.1, 0.1) renderPreset.SamplingFilter = _ New MentalRayRenderSettingsTraitsSamplingParameter( _ Filter.Box, 1.0, 1.0) renderPreset.ShadowMapsEnabled = False renderPreset.ShadowMode = ShadowMode.Simple renderPreset.ShadowSamplingMultiplier = _ ShadowSamplingMultiplier.SamplingMultiplierZero renderPreset.ShadowsEnabled = True renderPreset.TextureSampling = False renderPreset.TileOrder = TileOrder.Hilbert renderPreset.TileSize = 32 Select Case name.ToUpper() ' Assigns the values to match the Draft render preset Case "DRAFT" renderPreset.Description = _ "The lowest rendering quality which entails no raytracing, " & _ "no texture filtering and force 2-sided is inactive." renderPreset.Name = "Draft" Case ("LOW") renderPreset.Description = _ "Rendering quality is improved over Draft. " & _ "Low anti-aliasing and a raytracing depth of 3 " & _ "reflection/refraction are processed." renderPreset.Name = "Low" renderPreset.RayTracingEnabled = True renderPreset.Sampling = _ New MentalRayRenderSettingsTraitsIntegerRangeParameter( _ -1, 0) renderPreset.SamplingContrastColor = _ New MentalRayRenderSettingsTraitsFloatParameter( _ 0.1, 0.1, 0.1, 0.1) renderPreset.SamplingFilter = _ New MentalRayRenderSettingsTraitsSamplingParameter( _ Filter.Triangle, 2.0, 2.0) renderPreset.ShadowSamplingMultiplier = _ ShadowSamplingMultiplier.SamplingMultiplierOneFourth Case "MEDIUM" renderPreset.BackFacesEnabled = True renderPreset.Description = _ "Rendering quality is improved over Low to include " & _ "texture filtering and force 2-sided is active. " & _ "Moderate anti-aliasing and a raytracing depth of " & _ "5 reflections/refractions are processed." renderPreset.FGRayCount = 200 renderPreset.FinalGatheringMode = _ FinalGatheringMode.FinalGatherAuto renderPreset.GIPhotonsPerLight = 10000 renderPreset.Name = "Medium" renderPreset.RayTraceDepth = _ New MentalRayRenderSettingsTraitsTraceParameter( _ 5, 5, 5) renderPreset.RayTracingEnabled = True renderPreset.Sampling = _ New MentalRayRenderSettingsTraitsIntegerRangeParameter( _ 0, 1) renderPreset.SamplingContrastColor = _ New MentalRayRenderSettingsTraitsFloatParameter( _ 0.05, 0.05, 0.05, 0.05) renderPreset.SamplingFilter = _ New MentalRayRenderSettingsTraitsSamplingParameter( _ Filter.Gauss, 3.0, 3.0) renderPreset.ShadowSamplingMultiplier = _ ShadowSamplingMultiplier.SamplingMultiplierOneHalf renderPreset.TextureSampling = True Case "HIGH" renderPreset.BackFacesEnabled = True renderPreset.Description = _ "Rendering quality is improved over Medium. " & _ "High anti-aliasing and a raytracing depth of 7 " & _ "reflections/refractions are processed." renderPreset.FGRayCount = 500 renderPreset.FinalGatheringMode = _ FinalGatheringMode.FinalGatherAuto renderPreset.GIPhotonsPerLight = 10000 renderPreset.Name = "High" renderPreset.RayTraceDepth = _ New MentalRayRenderSettingsTraitsTraceParameter( _ 7, 7, 7) renderPreset.RayTracingEnabled = True renderPreset.Sampling = _ New MentalRayRenderSettingsTraitsIntegerRangeParameter( _ 0, 2) renderPreset.SamplingContrastColor = _ New MentalRayRenderSettingsTraitsFloatParameter( _ 0.05, 0.05, 0.05, 0.05) renderPreset.SamplingFilter = _ New MentalRayRenderSettingsTraitsSamplingParameter( _ Filter.Mitchell, 4.0, 4.0) renderPreset.ShadowSamplingMultiplier = _ ShadowSamplingMultiplier.SamplingMultiplierOne renderPreset.TextureSampling = True Case "PRESENTATION" renderPreset.BackFacesEnabled = True renderPreset.Description = _ "Rendering quality is improved over High. " & _ "Very high anti-aliasing and a raytracing depth of 9 " & _ "reflections/refractions are processed." renderPreset.FGRayCount = 1000 renderPreset.FinalGatheringMode = _ FinalGatheringMode.FinalGatherAuto renderPreset.GIPhotonsPerLight = 10000 renderPreset.Name = "Presentation" renderPreset.RayTraceDepth = _ New MentalRayRenderSettingsTraitsTraceParameter( _ 9, 9, 9) renderPreset.RayTracingEnabled = True renderPreset.Sampling = _ New MentalRayRenderSettingsTraitsIntegerRangeParameter( _ 1, 2) renderPreset.SamplingContrastColor = _ New MentalRayRenderSettingsTraitsFloatParameter( _ 0.05, 0.05, 0.05, 0.05) renderPreset.SamplingFilter = _ New MentalRayRenderSettingsTraitsSamplingParameter( _ Filter.Lanczos, 4.0, 4.0) renderPreset.ShadowSamplingMultiplier = _ ShadowSamplingMultiplier.SamplingMultiplierOne renderPreset.TextureSampling = True End Select End Sub
// Standard .NET namespaces using System; using System.Runtime.InteropServices; // Main AutoCAD namespaces using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.GraphicsInterface; using Autodesk.AutoCAD; // Used to set a viewport current [DllImport("accore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?acedSetCurrentVPort@@YA?AW4ErrorStatus@Acad@@PEBVAcDbViewport@@@Z")] extern static private int acedSetCurrentVPort(IntPtr AcDbVport); // Used to create a rectangular and nonrectangular viewports [CommandMethod("CreatViewportsAndSetShadePlot")] public void CreatViewportsAndSetShadePlot() { // Get the current document and database, and start a transaction Document acDoc = Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // Open the Block table for read BlockTable acBlkTbl= acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // Open the Block table record Paper space for write BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.PaperSpace], OpenMode.ForWrite) as BlockTableRecord; // Switch to the previous Paper space layout Application.SetSystemVariable("TILEMODE", 0); acDoc.Editor.SwitchToPaperSpace(); // Remove any viewports that already exist foreach (ObjectId objId in acBlkTblRec) { DBObject dbObj = acTrans.GetObject(objId, OpenMode.ForRead) as DBObject; // Remove any viewports in the block Autodesk.AutoCAD.DatabaseServices.Viewport acVport = dbObj as Autodesk.AutoCAD.DatabaseServices.Viewport; if (acVport != null) { dbObj.UpgradeOpen(); dbObj.Erase(true); } } // Create a Viewport using (Autodesk.AutoCAD.DatabaseServices.Viewport acVport1 = new Autodesk.AutoCAD.DatabaseServices.Viewport()) { // Set the center point and size of the viewport acVport1.CenterPoint = new Point3d(3.75, 4, 0); acVport1.Width = 7.5; acVport1.Height = 7.5; // Lock the viewport acVport1.Locked = true; // Set the scale to 1" = 4' acVport1.CustomScale = 48; // Set visual style DBDictionary vStyles = acTrans.GetObject(acCurDb.VisualStyleDictionaryId, OpenMode.ForRead) as DBDictionary; acVport1.SetShadePlot(ShadePlotType.VisualStyle, vStyles.GetAt("Sketchy")); // Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acVport1); acTrans.AddNewlyCreatedDBObject(acVport1, true); // Change the view direction and enable the viewport acVport1.ViewDirection = new Vector3d(-1, -1, 1); acVport1.On = true; // Create a rectangular viewport to change to a non-rectangular viewport using (Autodesk.AutoCAD.DatabaseServices.Viewport acVport2 = new Autodesk.AutoCAD.DatabaseServices.Viewport()) { acVport2.CenterPoint = new Point3d(9, 6.5, 0); acVport2.Width = 2.5; acVport2.Height = 2.5; // Set the scale to 1" = 8' acVport2.CustomScale = 96; // Set render preset DBDictionary namedObjs = acTrans.GetObject(acCurDb.NamedObjectsDictionaryId, OpenMode.ForRead) as DBDictionary; // Check to see if the Render Settings dictionary already exists DBDictionary renderSettings; if (namedObjs.Contains("ACAD_RENDER_PLOT_SETTINGS") == true) { renderSettings = acTrans.GetObject( namedObjs.GetAt("ACAD_RENDER_PLOT_SETTINGS"), OpenMode.ForWrite) as DBDictionary; } else { // If it does not exist, create it and add it to the drawing namedObjs.UpgradeOpen(); renderSettings = new DBDictionary(); namedObjs.SetAt("ACAD_RENDER_PLOT_SETTINGS", renderSettings); acTrans.AddNewlyCreatedDBObject(renderSettings, true); } // Create the new render preset, based on the settings // of the Medium render preset MentalRayRenderSettings renderSetting = new MentalRayRenderSettings(); GetDefaultRenderPreset(ref renderSetting, "Medium"); renderSetting.Name = "Medium"; renderSettings.SetAt("Medium", renderSetting); acTrans.AddNewlyCreatedDBObject(renderSetting, true); acVport2.SetShadePlot(ShadePlotType.RenderPreset, renderSetting.ObjectId); renderSetting.Dispose(); // Create a circle using (Circle acCirc = new Circle()) { acCirc.Center = acVport2.CenterPoint; acCirc.Radius = 1.25; // Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acCirc); acTrans.AddNewlyCreatedDBObject(acCirc, true); // Clip the viewport using the circle acVport2.NonRectClipEntityId = acCirc.ObjectId; acVport2.NonRectClipOn = true; } // Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acVport2); acTrans.AddNewlyCreatedDBObject(acVport2, true); // Change the view direction acVport2.ViewDirection = new Vector3d(0, 0, 1); // Enable the viewport acVport2.On = true; } // Activate model space acDoc.Editor.SwitchToModelSpace(); // Set the new viewport current via an imported ObjectARX function acedSetCurrentVPort(acVport1.UnmanagedObject); } // Save the new objects to the database acTrans.Commit(); } } // Method used to populate a MentalRayRenderSettings object with the // same settings used by the standard render presets private static void GetDefaultRenderPreset( ref MentalRayRenderSettings renderPreset, string name) { // Set the values common to multiple default render presets renderPreset.BackFacesEnabled = false; renderPreset.DiagnosticBackgroundEnabled = false; renderPreset.DiagnosticBSPMode = DiagnosticBSPMode.Depth; renderPreset.DiagnosticGridMode = new MentalRayRenderSettingsTraitsDiagnosticGridModeParameter( DiagnosticGridMode.Object, (float)10.0); renderPreset.DiagnosticMode = DiagnosticMode.Off; renderPreset.DiagnosticPhotonMode = DiagnosticPhotonMode.Density; renderPreset.DisplayIndex = 0; renderPreset.EnergyMultiplier = (float)1.0; renderPreset.ExportMIEnabled = false; renderPreset.ExportMIFileName = ""; renderPreset.FGRayCount = 100; // FGSampleRadius cannot be set, it returns invalid input renderPreset.FGSampleRadiusState = new MentalRayRenderSettingsTraitsBoolParameter( false, false, false); renderPreset.FinalGatheringEnabled = false; renderPreset.FinalGatheringMode = FinalGatheringMode.FinalGatherOff; renderPreset.GIPhotonsPerLight = 1000; renderPreset.GISampleCount = 500; renderPreset.GISampleRadius = 1.0; renderPreset.GISampleRadiusEnabled = false; renderPreset.GlobalIlluminationEnabled = false; renderPreset.LightLuminanceScale = 1500.0; renderPreset.MaterialsEnabled = true; renderPreset.MemoryLimit = 1048; renderPreset.PhotonTraceDepth = new MentalRayRenderSettingsTraitsTraceParameter( 5, 5, 5); renderPreset.PreviewImageFileName = ""; renderPreset.RayTraceDepth = new MentalRayRenderSettingsTraitsTraceParameter( 3, 3, 3); renderPreset.RayTracingEnabled = false; renderPreset.Sampling = new MentalRayRenderSettingsTraitsIntegerRangeParameter( -2, -1); renderPreset.SamplingContrastColor = new MentalRayRenderSettingsTraitsFloatParameter( (float)0.1, (float)0.1, (float)0.1, (float)0.1); renderPreset.SamplingFilter = new MentalRayRenderSettingsTraitsSamplingParameter( Filter.Box, 1.0, 1.0); renderPreset.ShadowMapsEnabled = false; renderPreset.ShadowMode = ShadowMode.Simple; renderPreset.ShadowSamplingMultiplier = ShadowSamplingMultiplier.SamplingMultiplierZero; renderPreset.ShadowsEnabled = true; renderPreset.TextureSampling = false; renderPreset.TileOrder = TileOrder.Hilbert; renderPreset.TileSize = 32; switch (name.ToUpper()) { // Assigns the values to match the Draft render preset case "DRAFT": renderPreset.Description = "The lowest rendering quality which entails no raytracing, " + "no texture filtering and force 2-sided is inactive."; renderPreset.Name = "Draft"; break; case "LOW": renderPreset.Description = "Rendering quality is improved over Draft. " + "Low anti-aliasing and a raytracing depth of 3 " + "reflection/refraction are processed."; renderPreset.Name = "Low"; renderPreset.RayTracingEnabled = true; renderPreset.Sampling = new MentalRayRenderSettingsTraitsIntegerRangeParameter( -1, 0); renderPreset.SamplingContrastColor = new MentalRayRenderSettingsTraitsFloatParameter( (float)0.1, (float)0.1, (float)0.1, (float)0.1); renderPreset.SamplingFilter = new MentalRayRenderSettingsTraitsSamplingParameter( Filter.Triangle, 2.0, 2.0); renderPreset.ShadowSamplingMultiplier = ShadowSamplingMultiplier.SamplingMultiplierOneFourth; break; case "MEDIUM": renderPreset.BackFacesEnabled = true; renderPreset.Description = "Rendering quality is improved over Low to include " + "texture filtering and force 2-sided is active. " + "Moderate anti-aliasing and a raytracing depth of " + "5 reflections/refractions are processed."; renderPreset.FGRayCount = 200; renderPreset.FinalGatheringMode = FinalGatheringMode.FinalGatherAuto; renderPreset.GIPhotonsPerLight = 10000; renderPreset.Name = "Medium"; renderPreset.RayTraceDepth = new MentalRayRenderSettingsTraitsTraceParameter( 5, 5, 5); renderPreset.RayTracingEnabled = true; renderPreset.Sampling = new MentalRayRenderSettingsTraitsIntegerRangeParameter( 0, 1); renderPreset.SamplingContrastColor = new MentalRayRenderSettingsTraitsFloatParameter( (float)0.05, (float)0.05, (float)0.05, (float)0.05); renderPreset.SamplingFilter = new MentalRayRenderSettingsTraitsSamplingParameter( Filter.Gauss, 3.0, 3.0); renderPreset.ShadowSamplingMultiplier = ShadowSamplingMultiplier.SamplingMultiplierOneHalf; renderPreset.TextureSampling = true; break; case "HIGH": renderPreset.BackFacesEnabled = true; renderPreset.Description = "Rendering quality is improved over Medium. " + "High anti-aliasing and a raytracing depth of 7 " + "reflections/refractions are processed."; renderPreset.FGRayCount = 500; renderPreset.FinalGatheringMode = FinalGatheringMode.FinalGatherAuto; renderPreset.GIPhotonsPerLight = 10000; renderPreset.Name = "High"; renderPreset.RayTraceDepth = new MentalRayRenderSettingsTraitsTraceParameter( 7, 7, 7); renderPreset.RayTracingEnabled = true; renderPreset.Sampling = new MentalRayRenderSettingsTraitsIntegerRangeParameter( 0, 2); renderPreset.SamplingContrastColor = new MentalRayRenderSettingsTraitsFloatParameter( (float)0.05, (float)0.05, (float)0.05, (float)0.05); renderPreset.SamplingFilter = new MentalRayRenderSettingsTraitsSamplingParameter( Filter.Mitchell, 4.0, 4.0); renderPreset.ShadowSamplingMultiplier = ShadowSamplingMultiplier.SamplingMultiplierOne; renderPreset.TextureSampling = true; break; case "PRESENTATION": renderPreset.BackFacesEnabled = true; renderPreset.Description = "Rendering quality is improved over High. " + "Very high anti-aliasing and a raytracing depth of 9 " + "reflections/refractions are processed."; renderPreset.FGRayCount = 1000; renderPreset.FinalGatheringMode = FinalGatheringMode.FinalGatherAuto; renderPreset.GIPhotonsPerLight = 10000; renderPreset.Name = "Presentation"; renderPreset.RayTraceDepth = new MentalRayRenderSettingsTraitsTraceParameter( 9, 9, 9); renderPreset.RayTracingEnabled = true; renderPreset.Sampling = new MentalRayRenderSettingsTraitsIntegerRangeParameter( 1, 2); renderPreset.SamplingContrastColor = new MentalRayRenderSettingsTraitsFloatParameter( (float)0.05, (float)0.05, (float)0.05, (float)0.05); renderPreset.SamplingFilter = new MentalRayRenderSettingsTraitsSamplingParameter( Filter.Lanczos, 4.0, 4.0); renderPreset.ShadowSamplingMultiplier = ShadowSamplingMultiplier.SamplingMultiplierOne; renderPreset.TextureSampling = true; break; } }