A very good question I was asked recently about the possibility of change on the fly graphics quality of a scene. It's indeed possible in different ways:
This options will display the following panel that will allow you to enable or disable any Nova quality options and channels and therefore the speed of rendering.
-
Using Nova scripting, Nova plugin model or Nova SDK. Indeed all Nova quality options and channels are available through Nova Object Model. In the following script, I first create a slider that will change on the fly Nova Engine option according 3 values ranges:
- From 0.0 to 1.0 excluded: main quality options are disabled.
- From 1.0 to 2.0 excluded: some quality options are enabled.
- Else: all quality options are enabled.
Class Script
Private slider As NovaSlider
Private currentScene As NovaScene
Public Sub New(scene As NovaScene)
currentScene = scene
slider = Scene.CreateSlider()
slider.Top = 10
slider.Left = 10
slider.Min = 0.0
slider.Max = 3.0
slider.Value = slider.Max
slider.Width = 300
slider.ID = "SliderQualitySensor"
slider.Text = "Quality Sensor"
slider.RelativeWidth = False
slider.Visible = True
AddHandler slider.ValueChanged, AddressOf manageValueChanged
End Sub
Private Sub manageValueChanged(ByVal o As Object, e As EventArgs)
If slider.Value >= 0.0 AndAlso slider.Value < 1.0 Then
changeToLowQuality()
ElseIf slider.Value >= 1.0 AndAlso slider.Value < 2.0 Then
changeToMediumQuality()
Else
changeToHighQuality()
End If
End Sub
Private Sub changeToLowQuality()
currentScene.Engine.QualityLevel = 0
NovaEngine.Shadows = False
NovaEngine.BumpChannel = False
NovaEngine.SpecularChannel = False
NovaEngine.ReflectionChannel = False
NovaEngine.RefractionChannel = False
Novaengine.EmissiveChannel = False
Novaengine.AmbientChannel = False
NovaEngine.ParticleSystems = False
NovaEngine.MirrorMatrixActivated = False
End Sub
Private Sub changeToMediumQuality()
currentScene.Engine.QualityLevel = 1
NovaEngine.Shadows = False
NovaEngine.BumpChannel = True
NovaEngine.SpecularChannel = True
NovaEngine.ReflectionChannel = True
NovaEngine.RefractionChannel = False
Novaengine.EmissiveChannel = False
Novaengine.AmbientChannel = False
NovaEngine.ParticleSystems = True
NovaEngine.MirrorMatrixActivated = False
End Sub
Private Sub changeToHighQuality()
currentScene.Engine.QualityLevel = 3
NovaEngine.Shadows = True
NovaEngine.BumpChannel = True
NovaEngine.SpecularChannel = True
NovaEngine.ReflectionChannel = True
NovaEngine.RefractionChannel = True
Novaengine.EmissiveChannel = True
Novaengine.AmbientChannel = True
NovaEngine.ParticleSystems = True
NovaEngine.MirrorMatrixActivated = True
End Sub
Protected Overrides Sub Finalize()
RemoveHandler slider.ValueChanged, AddressOf manageValueChanged
currentScene.Widgets.Clear()
End Sub
End Class
SliderManager.nsr (2.83 kb)