mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-07 05:53:59 -06:00
Added 'align selected face with buildplate' feature.
Alt-click to select a face. See the (identically named) 'feature_bottom_face' branch in Uranium for more indepth information.
This commit is contained in:
parent
243d51eb23
commit
b97015a354
5 changed files with 55 additions and 2 deletions
|
@ -26,6 +26,7 @@ Item
|
|||
|
||||
property alias deleteSelection: deleteSelectionAction;
|
||||
property alias centerSelection: centerSelectionAction;
|
||||
property alias bottomFaceSelection: bottomFaceSelectionAction;
|
||||
property alias multiplySelection: multiplySelectionAction;
|
||||
|
||||
property alias deleteObject: deleteObjectAction;
|
||||
|
@ -271,6 +272,15 @@ Item
|
|||
onTriggered: CuraActions.centerSelection();
|
||||
}
|
||||
|
||||
Action
|
||||
{
|
||||
id: bottomFaceSelectionAction;
|
||||
text: catalog.i18nc("@action:inmenu menubar:edit", "Align Selected Face To Bottom");
|
||||
enabled: UM.Controller.toolsEnabled && UM.Selection.hasFaceSelected;
|
||||
// iconName: "NO-ICON-YET"; // TODO?
|
||||
onTriggered: CuraActions.bottomFaceSelection();
|
||||
}
|
||||
|
||||
Action
|
||||
{
|
||||
id: multiplySelectionAction;
|
||||
|
|
|
@ -20,6 +20,7 @@ Menu
|
|||
// Selection-related actions.
|
||||
MenuItem { action: Cura.Actions.centerSelection; }
|
||||
MenuItem { action: Cura.Actions.deleteSelection; }
|
||||
MenuItem { action: Cura.Actions.bottomFaceSelection; }
|
||||
MenuItem { action: Cura.Actions.multiplySelection; }
|
||||
|
||||
// Extruder selection - only visible if there is more than 1 extruder
|
||||
|
|
|
@ -32,6 +32,8 @@ fragment =
|
|||
|
||||
uniform lowp float u_overhangAngle;
|
||||
uniform lowp vec4 u_overhangColor;
|
||||
uniform lowp vec4 u_faceColor;
|
||||
uniform highp int u_faceId;
|
||||
|
||||
varying highp vec3 f_vertex;
|
||||
varying highp vec3 f_normal;
|
||||
|
@ -58,7 +60,7 @@ fragment =
|
|||
highp float NdotR = clamp(dot(viewVector, reflectedLight), 0.0, 1.0);
|
||||
finalColor += pow(NdotR, u_shininess) * u_specularColor;
|
||||
|
||||
finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor;
|
||||
finalColor = (u_faceId != gl_PrimitiveID) ? ((-normal.y > u_overhangAngle) ? u_overhangColor : finalColor) : u_faceColor;
|
||||
|
||||
gl_FragColor = finalColor;
|
||||
gl_FragColor.a = 1.0;
|
||||
|
@ -99,6 +101,8 @@ fragment41core =
|
|||
|
||||
uniform lowp float u_overhangAngle;
|
||||
uniform lowp vec4 u_overhangColor;
|
||||
uniform lowp vec4 u_faceColor;
|
||||
uniform highp int u_faceId;
|
||||
|
||||
in highp vec3 f_vertex;
|
||||
in highp vec3 f_normal;
|
||||
|
@ -127,7 +131,7 @@ fragment41core =
|
|||
highp float NdotR = clamp(dot(viewVector, reflectedLight), 0.0, 1.0);
|
||||
finalColor += pow(NdotR, u_shininess) * u_specularColor;
|
||||
|
||||
finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor;
|
||||
finalColor = (u_faceId != gl_PrimitiveID) ? ((-normal.y > u_overhangAngle) ? u_overhangColor : finalColor) : u_faceColor;
|
||||
|
||||
frag_color = finalColor;
|
||||
frag_color.a = 1.0;
|
||||
|
@ -138,6 +142,7 @@ u_ambientColor = [0.3, 0.3, 0.3, 1.0]
|
|||
u_diffuseColor = [1.0, 0.79, 0.14, 1.0]
|
||||
u_specularColor = [0.4, 0.4, 0.4, 1.0]
|
||||
u_overhangColor = [1.0, 0.0, 0.0, 1.0]
|
||||
u_faceColor = [0.0, 0.0, 1.0, 1.0]
|
||||
u_shininess = 20.0
|
||||
|
||||
[bindings]
|
||||
|
@ -148,6 +153,7 @@ u_normalMatrix = normal_matrix
|
|||
u_viewPosition = view_position
|
||||
u_lightPosition = light_0_position
|
||||
u_diffuseColor = diffuse_color
|
||||
u_faceId = selected_face
|
||||
|
||||
[attributes]
|
||||
a_vertex = vertex
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue