Need help with volume rendering Preset

In presets.js it has a collection of parameters to be used to create a 3D actor by calling
applyPreset(actor, preset);

My question is how to adjust these parameters to make a proper 3D volume rendering. For example, the CT-Bone preset below will pick up Bone pixels and show it in red-orange color and in semi transparent way. I would like to be able to disable the transparency and show it in a more nature color (e.g,. yellow or gray). How should I change the preset?
{
name: ‘CT-Bone’,
gradientOpacity: ‘4 0 1 255 1’,
specularPower: ‘10’,
scalarOpacity: ‘8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882’,
id: ‘vtkMRMLVolumePropertyNode3’,
specular: ‘0.2’,
shade: ‘1’,
ambient: ‘0.1’,
colorTransfer:
‘16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1’,
selectable: ‘true’,
diffuse: ‘0.9’,
interpolation: ‘1’,
effectiveRange: ‘-16.4458 641.385’,
}

Is there any place explain these parameters and how it should be defined? Please help, Thanks!

You can change the scalarOpacity to adjust your transparency. It’s in the format K v1 op1 ... vN opN, where K is equal to 2*N, and v_i is the voxel value that gets mapped to opacity value op_i.

The colorTransfer is similar, except each voxel value maps to a 3-tuple of rgb.

I recommend you try Slicer’s module VolumeRendering so you can edit your opacity or color transfer functions with live feedback. There are also preset examples available.

Slicer uses vtk internally and it has a python interactor for you to test scripts (ie. changing those transfer functions through code)

1 Like

Got it, the 3D rendering looks good now. Thanks.