Skip to content

Commit d8c52f9

Browse files
committed
Added transparency slider. Closes #554
Also set the minimum width for viewscene to be a bit larger.
1 parent 09e9d38 commit d8c52f9

File tree

6 files changed

+170
-91
lines changed

6 files changed

+170
-91
lines changed

src/Interface/Modules/Render/ViewScene.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</property>
1919
<property name="minimumSize">
2020
<size>
21-
<width>400</width>
21+
<width>425</width>
2222
<height>150</height>
2323
</size>
2424
</property>

src/Interface/Modules/Visualization/ShowField.ui

Lines changed: 151 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
<string notr="true"/>
6868
</property>
6969
<property name="currentIndex">
70-
<number>0</number>
70+
<number>2</number>
7171
</property>
7272
<widget class="QWidget" name="nodesTab_">
7373
<attribute name="title">
@@ -376,92 +376,156 @@
376376
<attribute name="title">
377377
<string>Faces</string>
378378
</attribute>
379-
<layout class="QVBoxLayout" name="verticalLayout_9">
380-
<item>
381-
<layout class="QVBoxLayout" name="verticalLayout_10">
382-
<item>
383-
<widget class="QCheckBox" name="showFacesCheckBox_">
384-
<property name="text">
385-
<string>Show Faces</string>
386-
</property>
387-
<property name="checked">
388-
<bool>true</bool>
389-
</property>
390-
</widget>
391-
</item>
392-
<item>
393-
<widget class="QCheckBox" name="enableTransparencyFacesCheckBox_">
394-
<property name="text">
395-
<string>Enable Transparency</string>
396-
</property>
397-
</widget>
398-
</item>
399-
<item>
400-
<widget class="QGroupBox" name="groupBox_5">
401-
<property name="enabled">
402-
<bool>false</bool>
403-
</property>
404-
<property name="title">
405-
<string>Face Coloring</string>
406-
</property>
407-
<layout class="QVBoxLayout" name="verticalLayout_16">
408-
<item>
409-
<widget class="QRadioButton" name="defaultNodeColoringButton_2">
410-
<property name="text">
411-
<string>Default</string>
412-
</property>
413-
</widget>
414-
</item>
415-
<item>
416-
<widget class="QRadioButton" name="colormapLookupNodeColoringButton_2">
417-
<property name="text">
418-
<string>Colormap Lookup</string>
419-
</property>
420-
<property name="checked">
421-
<bool>true</bool>
422-
</property>
423-
</widget>
424-
</item>
425-
<item>
426-
<widget class="QRadioButton" name="conversionRGBNodeColoringButton_2">
427-
<property name="text">
428-
<string>Conversion to RGB</string>
429-
</property>
430-
</widget>
431-
</item>
432-
</layout>
433-
</widget>
434-
</item>
435-
<item>
436-
<widget class="QCheckBox" name="invertNormalsCheckBox">
437-
<property name="text">
438-
<string>Invert Normals</string>
439-
</property>
440-
</widget>
441-
</item>
442-
<item>
443-
<widget class="QCheckBox" name="checkBox">
444-
<property name="enabled">
445-
<bool>false</bool>
446-
</property>
447-
<property name="text">
448-
<string>Use Face Normals</string>
449-
</property>
450-
</widget>
451-
</item>
452-
<item>
453-
<widget class="QCheckBox" name="checkBox_2">
454-
<property name="enabled">
455-
<bool>false</bool>
456-
</property>
457-
<property name="text">
458-
<string>Render Images as a texture (Colormap Only)</string>
459-
</property>
460-
</widget>
461-
</item>
462-
</layout>
463-
</item>
464-
</layout>
379+
<widget class="QCheckBox" name="checkBox">
380+
<property name="enabled">
381+
<bool>false</bool>
382+
</property>
383+
<property name="geometry">
384+
<rect>
385+
<x>10</x>
386+
<y>186</y>
387+
<width>107</width>
388+
<height>17</height>
389+
</rect>
390+
</property>
391+
<property name="text">
392+
<string>Use Face Normals</string>
393+
</property>
394+
</widget>
395+
<widget class="QCheckBox" name="invertNormalsCheckBox">
396+
<property name="geometry">
397+
<rect>
398+
<x>10</x>
399+
<y>163</y>
400+
<width>94</width>
401+
<height>17</height>
402+
</rect>
403+
</property>
404+
<property name="text">
405+
<string>Invert Normals</string>
406+
</property>
407+
</widget>
408+
<widget class="QGroupBox" name="groupBox_5">
409+
<property name="enabled">
410+
<bool>false</bool>
411+
</property>
412+
<property name="geometry">
413+
<rect>
414+
<x>10</x>
415+
<y>61</y>
416+
<width>241</width>
417+
<height>96</height>
418+
</rect>
419+
</property>
420+
<property name="sizePolicy">
421+
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
422+
<horstretch>0</horstretch>
423+
<verstretch>0</verstretch>
424+
</sizepolicy>
425+
</property>
426+
<property name="title">
427+
<string>Face Coloring</string>
428+
</property>
429+
<layout class="QVBoxLayout" name="verticalLayout_16">
430+
<item>
431+
<widget class="QRadioButton" name="defaultNodeColoringButton_2">
432+
<property name="text">
433+
<string>Default</string>
434+
</property>
435+
</widget>
436+
</item>
437+
<item>
438+
<widget class="QRadioButton" name="colormapLookupNodeColoringButton_2">
439+
<property name="text">
440+
<string>Colormap Lookup</string>
441+
</property>
442+
<property name="checked">
443+
<bool>true</bool>
444+
</property>
445+
</widget>
446+
</item>
447+
<item>
448+
<widget class="QRadioButton" name="conversionRGBNodeColoringButton_2">
449+
<property name="text">
450+
<string>Conversion to RGB</string>
451+
</property>
452+
</widget>
453+
</item>
454+
</layout>
455+
</widget>
456+
<widget class="QCheckBox" name="showFacesCheckBox_">
457+
<property name="geometry">
458+
<rect>
459+
<x>10</x>
460+
<y>10</y>
461+
<width>79</width>
462+
<height>17</height>
463+
</rect>
464+
</property>
465+
<property name="text">
466+
<string>Show Faces</string>
467+
</property>
468+
<property name="checked">
469+
<bool>true</bool>
470+
</property>
471+
</widget>
472+
<widget class="QCheckBox" name="checkBox_2">
473+
<property name="enabled">
474+
<bool>false</bool>
475+
</property>
476+
<property name="geometry">
477+
<rect>
478+
<x>10</x>
479+
<y>209</y>
480+
<width>239</width>
481+
<height>17</height>
482+
</rect>
483+
</property>
484+
<property name="text">
485+
<string>Render Images as a texture (Colormap Only)</string>
486+
</property>
487+
</widget>
488+
<widget class="QDoubleSpinBox" name="transparencyDoubleSpinBox_">
489+
<property name="enabled">
490+
<bool>true</bool>
491+
</property>
492+
<property name="geometry">
493+
<rect>
494+
<x>190</x>
495+
<y>31</y>
496+
<width>53</width>
497+
<height>20</height>
498+
</rect>
499+
</property>
500+
<property name="maximum">
501+
<double>1.000000000000000</double>
502+
</property>
503+
<property name="singleStep">
504+
<double>0.010000000000000</double>
505+
</property>
506+
<property name="value">
507+
<double>0.750000000000000</double>
508+
</property>
509+
</widget>
510+
<widget class="QCheckBox" name="enableTransparencyFacesCheckBox_">
511+
<property name="geometry">
512+
<rect>
513+
<x>11</x>
514+
<y>35</y>
515+
<width>123</width>
516+
<height>17</height>
517+
</rect>
518+
</property>
519+
<property name="sizePolicy">
520+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
521+
<horstretch>0</horstretch>
522+
<verstretch>0</verstretch>
523+
</sizepolicy>
524+
</property>
525+
<property name="text">
526+
<string>Enable Transparency</string>
527+
</property>
528+
</widget>
465529
</widget>
466530
<widget class="QWidget" name="textTab_">
467531
<attribute name="title">

src/Interface/Modules/Visualization/ShowFieldDialog.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ ShowFieldDialog::ShowFieldDialog(const std::string& name, ModuleStateHandle stat
5353
addCheckBoxManager(enableTransparencyEdgesCheckBox_, ShowFieldModule::EdgeTransparency);
5454
addCheckBoxManager(enableTransparencyFacesCheckBox_, ShowFieldModule::FaceTransparency);
5555
addCheckBoxManager(invertNormalsCheckBox, ShowFieldModule::FaceInvertNormals);
56+
addDoubleSpinBoxManager(transparencyDoubleSpinBox_, ShowFieldModule::FaceTransparencyValue);
5657
connectButtonToExecuteSignal(showNodesCheckBox_);
5758
connectButtonToExecuteSignal(showEdgesCheckBox_);
5859
connectButtonToExecuteSignal(showFacesCheckBox_);
@@ -67,6 +68,7 @@ ShowFieldDialog::ShowFieldDialog(const std::string& name, ModuleStateHandle stat
6768

6869
pushNodeType();
6970
pushColor();
71+
pushTransparencyValue();
7072
}
7173

7274
void ShowFieldDialog::push()
@@ -111,3 +113,7 @@ void ShowFieldDialog::pushNodeType()
111113
state_->setValue(ShowFieldModule::NodeAsSpheres, nodesAsSpheresButton_->isChecked());
112114
}
113115

116+
void ShowFieldDialog::pushTransparencyValue()
117+
{
118+
state_->setValue(ShowFieldModule::FaceTransparencyValue, transparencyDoubleSpinBox_->value());
119+
}

src/Interface/Modules/Visualization/ShowFieldDialog.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ namespace SCIRun {
5454
void push();
5555
void pushColor();
5656
void pushNodeType();
57+
void pushTransparencyValue();
5758
void assignDefaultMeshColor();
5859
private:
5960
QColor defaultMeshColor_;

src/Modules/Visualization/ShowField.cc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ void ShowFieldModule::setStateDefaults()
7575
state->setValue(DefaultMeshColor, ColorRGB(1.0, 1.0, 1.0).toString());
7676
state->setValue(NodeAsPoints, true);
7777
state->setValue(NodeAsSpheres, false);
78+
state->setValue(FaceTransparency, 0.75f);
79+
transparencyValue_ = 0.75f;
7880

7981
// NOTE: We need to add radio buttons for USE_DEFAULT_COLOR, COLORMAP, and
8082
// COLOR_CONVERT. USE_DEFAULT_COLOR is selected by default. COLOR_CONVERT
@@ -151,6 +153,8 @@ RenderState ShowFieldModule::getFaceRenderState(
151153

152154
renState.defaultColor = ColorRGB(state->getValue(ShowFieldModule::DefaultMeshColor).toString());
153155

156+
transparencyValue_ = (float)(state->getValue(ShowFieldModule::FaceTransparencyValue).toDouble());
157+
154158
if (colorMap)
155159
{
156160
renState.set(RenderState::USE_COLORMAP, true);
@@ -618,7 +622,7 @@ void ShowFieldModule::renderFacesLinear(
618622

619623
if (state.get(RenderState::USE_TRANSPARENCY))
620624
{
621-
uniforms.push_back(GeometryObject::SpireSubPass::Uniform("uTransparency", (float)(0.4f)));
625+
uniforms.push_back(GeometryObject::SpireSubPass::Uniform("uTransparency", (float)(transparencyValue_)));
622626
}
623627
else
624628
{
@@ -682,7 +686,7 @@ void ShowFieldModule::renderFacesLinear(
682686
if (state.get(RenderState::USE_TRANSPARENCY))
683687
{
684688
uniforms.push_back(GeometryObject::SpireSubPass::Uniform(
685-
"uDiffuseColor", glm::vec4(defaultColor.r(), defaultColor.g(), defaultColor.b(), 0.4f)));
689+
"uDiffuseColor", glm::vec4(defaultColor.r(), defaultColor.g(), defaultColor.b(), transparencyValue_)));
686690
}
687691
else
688692
{
@@ -697,7 +701,7 @@ void ShowFieldModule::renderFacesLinear(
697701
{
698702
/// \todo Add transparency slider.
699703
uniforms.push_back(GeometryObject::SpireSubPass::Uniform(
700-
"uColor", glm::vec4(defaultColor.r(), defaultColor.g(), defaultColor.b(), 0.4f)));
704+
"uColor", glm::vec4(defaultColor.r(), defaultColor.g(), defaultColor.b(), transparencyValue_)));
701705
}
702706
else
703707
{
@@ -1662,6 +1666,7 @@ AlgorithmParameterName ShowFieldModule::FaceInvertNormals("FaceInvertNormals");
16621666
AlgorithmParameterName ShowFieldModule::NodeAsPoints("NodeAsPoints");
16631667
AlgorithmParameterName ShowFieldModule::NodeAsSpheres("NodeAsSpheres");
16641668
AlgorithmParameterName ShowFieldModule::DefaultMeshColor("DefaultMeshColor");
1669+
AlgorithmParameterName ShowFieldModule::FaceTransparencyValue("FaceTransparencyValue");
16651670

16661671

16671672

src/Modules/Visualization/ShowField.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ namespace Visualization {
5858
static Core::Algorithms::AlgorithmParameterName NodeAsPoints;
5959
static Core::Algorithms::AlgorithmParameterName NodeAsSpheres;
6060
static Core::Algorithms::AlgorithmParameterName DefaultMeshColor;
61+
static Core::Algorithms::AlgorithmParameterName FaceTransparencyValue;
6162

6263
INPUT_PORT(0, Field, LegacyField);
6364
INPUT_PORT(1, ColorMapObject, ColorMap);
@@ -138,6 +139,8 @@ namespace Visualization {
138139
void applyColorMapScaling(boost::shared_ptr<SCIRun::Field> field,
139140
Core::Datatypes::GeometryObject::SpireSubPass& pass);
140141

142+
float transparencyValue_;
143+
141144
};
142145

143146
} // Visualization

0 commit comments

Comments
 (0)