Fix #86325: tilted viewport orientation in default startup
Since v2.5 Blenders viewport view has been tilted by around ~0.8 degrees to the right, resolve this using a lookup table to update the the defaults. Ref !113751
This commit is contained in:
committed by
Campbell Barton
parent
976b2d47b4
commit
913acaf395
@@ -200,6 +200,44 @@ static void blo_update_defaults_screen(bScreen *screen,
|
||||
/* Disable Curve Normals. */
|
||||
v3d->overlay.edit_flag &= ~V3D_OVERLAY_EDIT_CU_NORMALS;
|
||||
v3d->overlay.normals_constant_screen_size = 7.0f;
|
||||
|
||||
/* Level out the 3D Viewport camera rotation, see: #113751. */
|
||||
constexpr float viewports_to_level[][4] = {
|
||||
/* Animation, Modeling, Scripting, Texture Paint, UV Editing. */
|
||||
{0x1.6e7cb8p-1, -0x1.c1747p-2, -0x1.2997dap-2, -0x1.d5d806p-2},
|
||||
/* Layout. */
|
||||
{0x1.6e7cb8p-1, -0x1.c17478p-2, -0x1.2997dcp-2, -0x1.d5d80cp-2},
|
||||
/* Geometry Nodes. */
|
||||
{0x1.6e7cb6p-1, -0x1.c17476p-2, -0x1.2997dep-2, -0x1.d5d80cp-2},
|
||||
};
|
||||
|
||||
constexpr float viewports_to_clear_ofs[][4] = {
|
||||
/* Geometry Nodes. */
|
||||
{0x1.6e7cb6p-1, -0x1.c17476p-2, -0x1.2997dep-2, -0x1.d5d80cp-2},
|
||||
/* Sculpting. */
|
||||
{0x1.885b28p-1, -0x1.2d10cp-1, -0x1.42ae54p-3, -0x1.a486a2p-3},
|
||||
};
|
||||
|
||||
constexpr float unified_viewquat[4] = {
|
||||
0x1.6cbc88p-1, -0x1.c3a5c8p-2, -0x1.26413ep-2, -0x1.db430ap-2};
|
||||
|
||||
LISTBASE_FOREACH (ARegion *, region, &area->regionbase) {
|
||||
if (region->regiontype == RGN_TYPE_WINDOW) {
|
||||
RegionView3D *rv3d = static_cast<RegionView3D *>(region->regiondata);
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(viewports_to_clear_ofs); i++) {
|
||||
if (equals_v4v4(rv3d->viewquat, viewports_to_clear_ofs[i])) {
|
||||
zero_v3(rv3d->ofs);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(viewports_to_level); i++) {
|
||||
if (equals_v4v4(rv3d->viewquat, viewports_to_level[i])) {
|
||||
copy_qt_qt(rv3d->viewquat, unified_viewquat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (area->spacetype == SPACE_CLIP) {
|
||||
SpaceClip *sclip = static_cast<SpaceClip *>(area->spacedata.first);
|
||||
|
||||
Reference in New Issue
Block a user