1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0030630: Visualization - wrong visualization of shape with mirrored transformation

Solids with mirror location are displayed, according to their normals.

vaspects -setBackFaceColor, added command to set backface color.
This commit is contained in:
ika
2019-04-04 16:07:05 +03:00
committed by bugmaster
parent 7c08e3ac6e
commit 6b9b7e3c92
5 changed files with 161 additions and 2 deletions

View File

@@ -1762,6 +1762,8 @@ struct ViewerTest_AspectsChangeSet
Standard_Integer ToSetColor;
Quantity_Color Color;
Standard_Integer ToSetBackFaceColor;
Quantity_Color BackFaceColor;
Standard_Integer ToSetLineWidth;
Standard_Real LineWidth;
@@ -1848,6 +1850,8 @@ struct ViewerTest_AspectsChangeSet
Visibility (1),
ToSetColor (0),
Color (DEFAULT_COLOR),
ToSetBackFaceColor(0),
BackFaceColor (DEFAULT_COLOR),
ToSetLineWidth (0),
LineWidth (1.0),
ToSetTypeOfLine (0),
@@ -1909,6 +1913,7 @@ struct ViewerTest_AspectsChangeSet
&& ToSetTransparency == 0
&& ToSetAlphaMode == 0
&& ToSetColor == 0
&& ToSetBackFaceColor == 0
&& ToSetMaterial == 0
&& ToSetShowFreeBoundary == 0
&& ToSetFreeBoundaryColor == 0
@@ -2143,6 +2148,15 @@ struct ViewerTest_AspectsChangeSet
theDrawer->ShadingAspect()->Aspect()->SetShadingModel (ShadingModel);
}
}
if (ToSetBackFaceColor != 0)
{
if (ToSetBackFaceColor != -1
|| theDrawer->HasOwnShadingAspect())
{
toRecompute = theDrawer->SetupOwnShadingAspect (aDefDrawer) || toRecompute;
theDrawer->ShadingAspect()->SetColor (BackFaceColor, Aspect_TOFM_BACK_SIDE);
}
}
if (ToSetAlphaMode != 0)
{
if (ToSetAlphaMode != -1
@@ -2675,6 +2689,10 @@ static Standard_Integer VAspects (Draw_Interpretor& /*theDI*/,
}
else if (anArg == "-setcolor"
|| anArg == "-color"
|| anArg == "-setbackfacecolor"
|| anArg == "-backfacecolor"
|| anArg == "-setbackcolor"
|| anArg == "-backcolor"
|| anArg == "-setfaceboundarycolor"
|| anArg == "-setboundarycolor"
|| anArg == "-faceboundarycolor"
@@ -2704,6 +2722,14 @@ static Standard_Integer VAspects (Draw_Interpretor& /*theDI*/,
aChangeSet->ToSetFaceBoundaryColor = 1;
aChangeSet->FaceBoundaryColor = aColor;
}
else if (anArg == "-setbackfacecolor"
|| anArg == "-backfacecolor"
|| anArg == "-setbackcolor"
|| anArg == "-backcolor")
{
aChangeSet->ToSetBackFaceColor = 1;
aChangeSet->BackFaceColor = aColor;
}
else
{
aChangeSet->ToSetColor = 1;
@@ -3218,6 +3244,8 @@ static Standard_Integer VAspects (Draw_Interpretor& /*theDI*/,
aChangeSet->AlphaCutoff = 0.5f;
aChangeSet->ToSetColor = -1;
aChangeSet->Color = DEFAULT_COLOR;
//aChangeSet->ToSetBackFaceColor = -1; // should be reset by ToSetColor
//aChangeSet->BackFaceColor = DEFAULT_COLOR;
aChangeSet->ToSetMaterial = -1;
aChangeSet->Material = Graphic3d_NOM_DEFAULT;
aChangeSet->ToSetShowFreeBoundary = -1;
@@ -6565,6 +6593,7 @@ void ViewerTest::Commands(Draw_Interpretor& theCommands)
"vaspects [-noupdate|-update] [name1 [name2 [...]] | -defaults]"
"\n\t\t: [-setVisibility 0|1]"
"\n\t\t: [-setColor ColorName] [-setcolor R G B] [-unsetColor]"
"\n\t\t: [-setBackFaceColor Color]"
"\n\t\t: [-setMaterial MatName] [-unsetMaterial]"
"\n\t\t: [-setTransparency Transp] [-unsetTransparency]"
"\n\t\t: [-setWidth LineWidth] [-unsetWidth]"