View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0030440 | Community | OCCT:Visualization | public | 2019-01-11 05:33 | 2019-05-26 10:48 |
Reporter | Vico Liang | Assigned To | bugmaster | ||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 6.8.0 | ||||
Target Version | 7.4.0 | Fixed in Version | 7.4.0 | ||
Summary | 0030440: Visualization - Graphic3d_Camera::Frustum() returns wrong planes in portrait mode | ||||
Description | Six planes returned from Graphic3d_Camera::Frustum() are correct in landscape mode, while it's wrong in portrait mode. It's scaled some distance to screen center in portrait mode. | ||||
Tags | No tags attached. | ||||
Test case number | Not required | ||||
child of | 0024413 | closed | Open CASCADE | Visualization - get rid of projection shift from orthographic camera definition |
|
Could you please provide a reproducible scenario clarifying what is actually wrong? Graphic3d_Camera has no platform-specific code, so I suppose the problem should be reproducible on desktop as well. I don't see anything unexpected with vertically stretched window in Draw Harness and vcamera command output. |
|
cadass_protrait.png (56,433 bytes) |
|
Please see my comment at the last two lines below, Aspect() > 1 condition is correct, the issue just occurs when Aspect() < 1. void Graphic3d_Camera::Frustum (gp_Pln& theLeft, gp_Pln& theRight, gp_Pln& theBottom, gp_Pln& theTop, gp_Pln& theNear, gp_Pln& theFar) const { gp_Vec aProjection = gp_Vec (Direction()); gp_Vec anUp = OrthogonalizedUp(); gp_Vec aSide = aProjection ^ anUp; Standard_ASSERT_RAISE ( !aProjection.IsParallel (anUp, Precision::Angular()), "Can not derive SIDE = PROJ x UP - directions are parallel"); theNear = gp_Pln (Eye().Translated (aProjection * ZNear()), aProjection); theFar = gp_Pln (Eye().Translated (aProjection * ZFar()), -aProjection); // BUG HERE: if (Aspect() > 1.0) Standard_Real aHScaleHor = Scale() * 0.5 * Aspect(); Standard_Real aHScaleVer = Scale() * 0.5; //else if(Aspect() < 1) Otherwise, the code should be Standard_Real aHScaleHor = Scale() * 0.5; Standard_Real aHScaleVer = Scale() * 0.5 / Aspect(); |
|
Branch CR30440 has been created by kgv. SHA-1: ae530f21ff3988752da8cee0b1dcbf07ca942f6f Detailed log of new commits: Author: kgv Date: Thu May 23 12:02:29 2019 +0300 0030440: Visualization - Graphic3d_Camera::Frustum() returns wrong planes in portrait mode Graphic3d_Camera::Frustum() now handles window Aspect Ratio < 1.0. |
|
Well, these points are used nowhere in OCCT (V3d_View::FitMinMax() takes only directions), but, indeed, aspect ratio should be taken into account. |
|
Please take the patch. http://jenkins-test-12.nnov.opencascade.com:8080/view/CR30440-master-KGV/ |
|
Combination - OCCT branch : CR30440 master SHA - ae530f21ff3988752da8cee0b1dcbf07ca942f6f d67d4b811012eef8913d3c535c29654d0acf3c4c Products branch : master SHA - 986f3b05d4ac9538c920d339cc6c45c66f97af3b was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian80-64: OCCT Total CPU difference: 16329.970000000028 / 16353.149999999998 [-0.14%] Products Total CPU difference: 10514.79000000005 / 10547.03000000006 [-0.31%] Windows-64-VC14: OCCT Total CPU difference: 17768.3125 / 17737.640625 [+0.17%] Products Total CPU difference: 12142.015625 / 12094.59375 [+0.39%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR30440 has been deleted by inv. SHA-1: ae530f21ff3988752da8cee0b1dcbf07ca942f6f |
occt: master a4d594cb 2019-05-23 09:02:29 Committer: bugmaster Details Diff |
0030440: Visualization - Graphic3d_Camera::Frustum() returns wrong planes in portrait mode Graphic3d_Camera::Frustum() now handles window Aspect Ratio < 1.0. |
Affected Issues 0030440 |
|
mod - src/Graphic3d/Graphic3d_Camera.cxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-01-11 05:33 | Vico Liang | New Issue | |
2019-01-11 05:33 | Vico Liang | Assigned To | => kgv |
2019-05-22 13:16 | kgv | Note Added: 0084540 | |
2019-05-22 13:16 | kgv | Assigned To | kgv => Vico Liang |
2019-05-22 13:16 | kgv | Status | new => feedback |
2019-05-22 16:15 | kgv | File Added: cadass_protrait.png | |
2019-05-23 05:26 | Vico Liang | Note Added: 0084553 | |
2019-05-23 05:26 | Vico Liang | Assigned To | Vico Liang => kgv |
2019-05-23 05:27 | Vico Liang | Status | feedback => assigned |
2019-05-23 12:01 | kgv | Summary | Visualization - Graphic3d_Camera::Frustum() return wrong in portrait mode for Android => Visualization - Graphic3d_Camera::Frustum() returns wrong planes in portrait mode |
2019-05-23 12:04 | git | Note Added: 0084556 | |
2019-05-23 12:06 | kgv | Note Added: 0084557 | |
2019-05-23 12:07 | kgv | Relationship added | child of 0024413 |
2019-05-23 12:08 | kgv | Product Version | => 6.8.0 |
2019-05-23 13:27 | kgv | Note Added: 0084563 | |
2019-05-23 13:27 | kgv | Assigned To | kgv => bugmaster |
2019-05-23 13:27 | kgv | Status | assigned => resolved |
2019-05-23 13:27 | kgv | Status | resolved => reviewed |
2019-05-23 13:27 | kgv | Note Edited: 0084563 | |
2019-05-23 15:45 | bugmaster | Note Added: 0084572 | |
2019-05-23 15:45 | bugmaster | Status | reviewed => tested |
2019-05-23 15:45 | bugmaster | Test case number | => Not required |
2019-05-25 19:58 | bugmaster | Changeset attached | => occt master a4d594cb |
2019-05-25 19:58 | bugmaster | Status | tested => verified |
2019-05-25 19:58 | bugmaster | Resolution | open => fixed |
2019-05-26 10:48 | git | Note Added: 0084627 |