View Issue Details

IDProjectCategoryView StatusLast Update
0032886Open CASCADEOCCT:Visualizationpublic2022-05-16 23:09
Reporterkgv Assigned Tokgv  
PrioritynormalSeverityfeature 
Status verifiedResolutionfixed 
Target Version7.7.0 
Summary0032886: Visualization, V3d_View - introduce interface for creating a subview
DescriptionExisting API allows creation of V3d_View for individual native windows (Aspect_Window, V3d_View::SetWindow()), which might share graphics resources (via the same Graphic3d_GraphicDriver / V3d_Viewer instance).
This API has a strong dependency on native window systems for composing multiple Views onto the screen, with each View occupying an entire native window.
In some cases, this dependency may limit application functionality (some platforms like Android or Emscripten has no API for sharing OpenGL ES / WebGL resources between multiple canvases) or require a complicated solutions for some common use cases.

It is proposed implementing an API that would allow defining a V3d_View as a subview of another V3d_View instance:
- The root V3d_View instance is mapped onto a native window;
- V3d_View created as sub-views of another V3d_View, reuses existing native window and occupies it's portion;
- Sub-views layout splitting parent V3d_View vertically or horizontally with some proportions;
- A floating sub-view, displayed on top of another (sub)-views;
- Rendering of sub-views is done into off-screen FBOs;
- The root V3d_View is be responsible for composition of sub-views onto the screen;
- The root V3d_View may avoid creation of it's own offscreen FBOs and just blit FBOs of sub-views directly into backbuffer;
- AIS_ViewController should support working with the root V3d_View instance and automatically dispatch events to sub-views;
- AIS_ViewController should carefully handle redrawing of sub-views taking into account immediate / invalidation flags;
- vinit command may support a new syntax "vinit V2/SubView -parent V1/RootView" for identifying sub-views by name;
Steps To Reproduce
pload MODELING VISUALIZATION
vinit V1/RootView -width 1024 -height 512 -composer 0
vbackground GRAY20

vinit V2/ViewLeft -subView -width 0.5 -height 1.0
vbackground GRAY30

box b 1 2 3
vdisplay -dispMode 1 b
vaspects b -faceBoundaryDraw 1
vfit
vviewcube vc

vinit V3/ViewRight -parent V1/RootView -width 0.5 -height 1.0 -left 0.5
vbackground GRAY40
psphere s 1
vdisplay -dispMode 1 s
vaspects s -material SILVER
vfit
vzbufftrihedron
TagsNo tags attached.
Test case numberopengl general multiview1

Attached Files

  • multiview6.png (29,516 bytes)

Relationships

parent of 0032935 verifiedkgv Visualization, TKOpenGles - use size window within OpenGl_Window::init() 
parent of 0032975 reviewedbugmaster Visualization, TKOpenGl - do not blit inactive Subview 
Not all the children of this issue are yet resolved or closed.

Activities

git

2022-04-11 20:00

administrator   ~0107853

Branch CR32886 has been created by kgv.

SHA-1: 3215b40c5401e7d7f1794f949f873f1f4ea82359


Detailed log of new commits:

Author: kgv
Date: Mon Apr 11 20:00:39 2022 +0300

    0032886: Visualization, V3d_View - introduce interface for creating a subview
    
    TODO

git

2022-04-11 21:08

administrator   ~0107854

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 370b7dc193f290bfa4e82b66d946683aba8f4d4e

git

2022-04-11 21:26

administrator   ~0107855

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 6988d88ded7f9442a3711974116690834c087ebb

git

2022-04-11 22:27

administrator   ~0107857

Branch CR32886 has been updated forcibly by kgv.

SHA-1: bd846874f5b47e034905ed31bf123350921d6195

git

2022-04-11 22:45

administrator   ~0107858

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 7bd604ebfbc02e130db32e5540bfbef661b1a550

git

2022-04-11 22:53

administrator   ~0107859

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 4bee95a4f50e1be48bb374e7c1a95a79f267bf2c

git

2022-04-11 23:31

administrator   ~0107860

Branch CR32886 has been updated forcibly by kgv.

SHA-1: cdf2586b968337df972356312e27de34f0be7d0f

git

2022-04-11 23:33

administrator   ~0107861

Branch CR32886 has been updated forcibly by kgv.

SHA-1: daf4131742171da936a0b78781d21740bbdd4029

git

2022-04-11 23:50

administrator   ~0107863

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 2ae2f6d6dbdb5b61c7e3241c0e1f5cf60738854f

git

2022-04-12 00:06

administrator   ~0107867

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 6570175e7457042334081d25aa61185dbabd02f2

git

2022-04-12 00:47

administrator   ~0107869

Branch CR32886 has been updated forcibly by kgv.

SHA-1: e7518258c5c53e06f4ce45396f9010045c5b8c77

git

2022-04-12 00:59

administrator   ~0107871

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 5b698a5eb914483863656619c0dd8932eb6c5224

git

2022-04-13 14:02

administrator   ~0107911

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 704cb1e5688f4aaf09fa8dd6d514c99085e0d84e

git

2022-04-13 14:04

administrator   ~0107912

Branch CR32886 has been updated forcibly by kgv.

SHA-1: adb1ba8d021a064056b0b3ec5590e9d83e370ce6

git

2022-04-13 21:35

administrator   ~0107931

Branch CR32886 has been updated forcibly by kgv.

SHA-1: d9ff830d19231086d47759251b1e255a269cd610

git

2022-04-13 22:12

administrator   ~0107934

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 5492c108e8b844d56a597faa36cfe7720275c86a

git

2022-04-13 22:25

administrator   ~0107935

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 1a35c0c028eb7ad654e8c62fcdab0bfaff081acd

git

2022-04-13 23:01

administrator   ~0107936

Branch CR32886 has been updated forcibly by kgv.

SHA-1: aaed653b02612032a2025e945be2e02fadd9f798

git

2022-04-13 23:28

administrator   ~0107937

Branch CR32886 has been updated forcibly by kgv.

SHA-1: dadd9bc7fda0de1b225f391249b0fa7cc8eace17

git

2022-04-13 23:50

administrator   ~0107938

Branch CR32886 has been updated forcibly by kgv.

SHA-1: d34869b17a9c9aa510ad54017b0ccc862dd9276b

git

2022-04-14 00:41

administrator   ~0107939

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 21dd5970399c34d53a3edd95d913a283498fc49b

git

2022-04-14 01:01

administrator   ~0107940

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 982bd4b57071032857f179c0922597ee8c1d28bd

git

2022-04-14 02:03

administrator   ~0107941

Branch CR32886 has been updated forcibly by kgv.

SHA-1: c193690656a72869360584014b051afb1c3931aa

git

2022-04-14 02:14

administrator   ~0107942

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 89b6cadaadfcca3dd5a2e18611607e4ad45a73f1

git

2022-04-14 02:34

administrator   ~0107943

Branch CR32886 has been updated forcibly by kgv.

SHA-1: b882ac05ec14a1a41d471dfd1c4eb8b5acfc2f14

git

2022-04-14 02:42

administrator   ~0107944

Branch CR32886 has been updated forcibly by kgv.

SHA-1: e21a9faf7d36d08dca2fbd82399508270cfd4ffe

git

2022-04-14 10:47

administrator   ~0107945

Branch CR32886 has been updated forcibly by kgv.

SHA-1: f0fbac162089210c903313fe58c8f97b4a8bda75

git

2022-04-14 12:14

administrator   ~0107949

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 0de7e33d8d5a2060661aeea5cfa67c7aa890745c

git

2022-04-14 13:24

administrator   ~0107952

Branch CR32886 has been updated forcibly by kgv.

SHA-1: b35cf0551eda3a871beb77a5a81e65b190fdccc7

git

2022-04-14 14:33

administrator   ~0107954

Branch CR32886 has been updated forcibly by kgv.

SHA-1: c7f4d26dbe261b8a7ec48849415eb100f1aa74bb

git

2022-04-14 14:59

administrator   ~0107955

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 380be69ca5a5f64f7338263e940d0e7ad7989169

git

2022-04-14 15:21

administrator   ~0107956

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 32c024d34efefd60142c892243137ff3c8f25282

git

2022-04-14 15:39

administrator   ~0107957

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 6609b3c412da6141f1a1b44187d794811043aa47

git

2022-04-14 16:10

administrator   ~0107959

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 2161daafe12dc3d96235c79605acd13424e7c320

git

2022-04-14 16:20

administrator   ~0107960

Branch CR32886 has been updated forcibly by kgv.

SHA-1: bce55f234059902af4eaf402737f44729ed38eac

git

2022-04-14 16:25

administrator   ~0107961

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 062671571b98c2e3547b04a15bcb2c1411bf51d7

git

2022-04-14 16:37

administrator   ~0107962

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 6a9e358cd1776a5dcfd61f7d57706b0acdc6e7ac

git

2022-04-14 16:39

administrator   ~0107963

Branch CR32886 has been updated forcibly by kgv.

SHA-1: fff9d4aeb6c84f0a2d9a44b2ed9311e8323a7ddf

git

2022-04-14 18:12

administrator   ~0107964

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 1362e9db1cdeaaab5cee7ef4a4bcddeb02351720

git

2022-04-14 18:19

administrator   ~0107965

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 33d7cc22c4050e359d80e99cb10b966cf257de12

git

2022-04-14 18:23

administrator   ~0107966

Branch CR32886 has been updated forcibly by kgv.

SHA-1: b038d88ac3280afddd2097a7de5044c0eec38d49

git

2022-04-14 18:32

administrator   ~0107967

Branch CR32886 has been updated forcibly by kgv.

SHA-1: 5924cb69166735c0cad4d9bc3f5c1955abfc842d

git

2022-04-14 20:48

administrator   ~0107970

Branch CR32886_1 has been created by kgv.

SHA-1: ee6cbf6d9a110697b09acc610fd4d176d2d9048f


Detailed log of new commits:

Author: kgv
Date: Mon Apr 11 20:00:39 2022 +0300

    00C: Visualization, V3d_View - introduce interface for creating a subview
    
    V3d_View/Graphic3d_CView pair has been extended to define subview within the other V3d_View instance.
    The initialization is done in form of V3d_View::SetWindow() taking parent V3d_View instance on input.
    
    Subview definition includes dimensions defined as a fraction of a parent view and offset from a corner.
    This scheme allows splitting window into several subviews automatically occupying entire viewport,
    like splitting window into two vertial subviews (100%x50% + 100%x50%),
    three horizontal subviews (33%x100% + 30%x100% + 30%x100%),
    1 + 2 stacked subviews (50%x100% + 50%x50% + 50%x50%),
    as well as thumbnail-alike subviews displayed on top of another larger view.
    
    OpenGl_View::Redraw() blits content of subviews into the window within immediate redraw step.
    
    AIS_ViewController::FlushViewEvents() has been extended
    to re-calculate mouse input into local subview coordinates.
    AIS_ViewController::handleViewRedraw() first redraws subviews and then parent views.
    Introduced new callback AIS_ViewController::OnSubviewChanged()
    to switch input focus to another subview on mouse click,
    implemented by ViewerTest_EventManager (has to be done at application level).
    
    vinit command has been extended with parameters -subview and -parent to create a subview.
    In addition, view dimension arguments now can be defined as a fraction of screen size instead of pixels.

git

2022-04-14 22:42

administrator   ~0107975

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 55fef2625acc1cd63814b5ca9461637f65400607

git

2022-04-14 22:44

administrator   ~0107977

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 3c2705c7abf4fcce4df3d7eb9521872670bb43f0

git

2022-04-14 22:50

administrator   ~0107978

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 9e0fd21608d258d1807bce7e0ef94466e96cf3dc

kgv

2022-04-14 22:51

developer   ~0107980

multiview6.png (29,516 bytes)

git

2022-04-14 23:06

administrator   ~0107981

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: b41ef7df0613de7138c6681a14cbebf4c010b6cf

git

2022-04-14 23:44

administrator   ~0107982

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 6b79a3b9381187b92fcb28fa354c2e2c86f790e3

git

2022-04-15 09:27

administrator   ~0107984

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 9e42ee9a8f5af1cadd7ce7cef4fe227bc838254b

git

2022-04-15 09:34

administrator   ~0107985

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 8b3943dc45d5071763a243162d444decdc3ee417

git

2022-04-15 09:51

administrator   ~0107986

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 54058959bfb512dfe88c24efdefd93132f065a17

git

2022-04-15 11:16

administrator   ~0107987

Branch CR32886_1 has been updated forcibly by kgv.

SHA-1: 06aaa67db0745170e9c469e2c1ba95c11de0399e

kgv

2022-04-15 11:22

developer   ~0107989

Please raise the patch
- OCCT: branch CR32886_1.

http://jenkins-test-occt/view/CR32886_1-master-KGV/

smoskvin

2022-04-16 11:35

administrator   ~0108000

Combination -
OCCT branch : IR-2022-04-15
master SHA - 879768fbf2e2c09089d7cd64a8f93b3c9c47d09c
49e51745631c52b6c452c65adae4d6dfa21a1b1e
Products branch : IR-2022-04-15 SHA - db9f5fc1c0877a16922bb1bcbd006c614256ba97
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: 18524.440000000686 / 18453.560000000383 [+0.38%]
Products
Total CPU difference: 11765.190000000111 / 11767.510000000153 [-0.02%]
Windows-64-VC14:
OCCT
Total CPU difference: 20542.0625 / 20540.40625 [+0.01%]
Products
Total CPU difference: 13266.890625 / 13255.140625 [+0.09%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2022-04-16 15:35

administrator   ~0108004

Branch CR32886 has been deleted by mnt.

SHA-1: 5924cb69166735c0cad4d9bc3f5c1955abfc842d

git

2022-04-16 15:35

administrator   ~0108005

Branch CR32886_1 has been deleted by mnt.

SHA-1: 06aaa67db0745170e9c469e2c1ba95c11de0399e

Related Changesets

occt: master 879768fb

2022-04-11 20:00:39

kgv


Committer: smoskvin Details Diff
0032886: Visualization, V3d_View - introduce interface for creating a subview

V3d_View/Graphic3d_CView pair has been extended to define subview within the other V3d_View instance.
The initialization is done in form of V3d_View::SetWindow() taking parent V3d_View instance on input.

Subview definition includes dimensions defined as a fraction of a parent view and offset from a corner.
This scheme allows splitting window into several subviews automatically occupying entire viewport,
like splitting window into two vertial subviews (100%x50% + 100%x50%),
three horizontal subviews (33%x100% + 30%x100% + 30%x100%),
1 + 2 stacked subviews (50%x100% + 50%x50% + 50%x50%),
as well as thumbnail-alike subviews displayed on top of another larger view.

OpenGl_View::Redraw() blits content of subviews into the window within immediate redraw step.

AIS_ViewController::FlushViewEvents() has been extended
to re-calculate mouse input into local subview coordinates.
AIS_ViewController::handleViewRedraw() first redraws subviews and then parent views.
Introduced new callback AIS_ViewController::OnSubviewChanged()
to switch input focus to another subview on mouse click,
implemented by ViewerTest_EventManager (has to be done at application level).

vinit command has been extended with parameters -subview and -parent to create a subview.
In addition, view dimension arguments now can be defined as a fraction of screen size instead of pixels.
Affected Issues
0032886
mod - src/AIS/AIS_ViewController.cxx Diff File
mod - src/AIS/AIS_ViewController.hxx Diff File
mod - src/Aspect/Aspect_Window.hxx Diff File
mod - src/D3DHost/D3DHost_View.cxx Diff File
mod - src/D3DHost/D3DHost_View.hxx Diff File
mod - src/DPrsStd/DPrsStd_AISViewerCommands.cxx Diff File
mod - src/Graphic3d/Graphic3d_CView.cxx Diff File
mod - src/Graphic3d/Graphic3d_CView.hxx Diff File
mod - src/OpenGl/OpenGl_GraphicDriver.cxx Diff File
mod - src/OpenGl/OpenGl_GraphicDriver.hxx Diff File
mod - src/OpenGl/OpenGl_View.cxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_Window.cxx Diff File
mod - src/OpenGl/OpenGl_Window.hxx Diff File
mod - src/OpenGl/OpenGl_Window_1.mm Diff File
mod - src/V3d/V3d_View.cxx Diff File
mod - src/V3d/V3d_View.hxx Diff File
mod - src/V3d/V3d_Viewer.cxx Diff File
mod - src/V3d/V3d_Viewer.hxx Diff File
mod - src/ViewerTest/ViewerTest.cxx Diff File
mod - src/ViewerTest/ViewerTest.hxx Diff File
mod - src/ViewerTest/ViewerTest_AutoUpdater.cxx Diff File
mod - src/ViewerTest/ViewerTest_EventManager.cxx Diff File
mod - src/ViewerTest/ViewerTest_EventManager.hxx Diff File
mod - src/ViewerTest/ViewerTest_OpenGlCommands.cxx Diff File
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx Diff File
mod - src/XDEDRAW/XDEDRAW.cxx Diff File
add - tests/opengl/data/general/multiview1 Diff File
add - tests/opengl/data/general/multiview1ssaa Diff File
add - tests/opengl/data/general/multiview2 Diff File
add - tests/opengl/data/general/multiview3 Diff File
add - tests/opengl/data/general/multiview4 Diff File
add - tests/opengl/data/general/multiview5 Diff File
add - tests/opengl/data/general/multiview6 Diff File

Issue History

Date Modified Username Field Change
2022-03-24 09:45 kgv New Issue
2022-03-24 09:45 kgv Assigned To => kgv
2022-03-24 12:02 kgv Description Updated
2022-04-11 20:00 git Note Added: 0107853
2022-04-11 21:08 git Note Added: 0107854
2022-04-11 21:26 git Note Added: 0107855
2022-04-11 22:27 git Note Added: 0107857
2022-04-11 22:45 git Note Added: 0107858
2022-04-11 22:53 git Note Added: 0107859
2022-04-11 23:31 git Note Added: 0107860
2022-04-11 23:33 git Note Added: 0107861
2022-04-11 23:50 git Note Added: 0107863
2022-04-12 00:06 git Note Added: 0107867
2022-04-12 00:47 git Note Added: 0107869
2022-04-12 00:59 git Note Added: 0107871
2022-04-13 14:02 git Note Added: 0107911
2022-04-13 14:04 git Note Added: 0107912
2022-04-13 21:35 git Note Added: 0107931
2022-04-13 22:12 git Note Added: 0107934
2022-04-13 22:25 git Note Added: 0107935
2022-04-13 23:01 git Note Added: 0107936
2022-04-13 23:28 git Note Added: 0107937
2022-04-13 23:50 git Note Added: 0107938
2022-04-14 00:41 git Note Added: 0107939
2022-04-14 01:01 git Note Added: 0107940
2022-04-14 02:03 git Note Added: 0107941
2022-04-14 02:14 git Note Added: 0107942
2022-04-14 02:34 git Note Added: 0107943
2022-04-14 02:42 git Note Added: 0107944
2022-04-14 10:47 git Note Added: 0107945
2022-04-14 12:14 git Note Added: 0107949
2022-04-14 13:24 git Note Added: 0107952
2022-04-14 14:33 git Note Added: 0107954
2022-04-14 14:59 git Note Added: 0107955
2022-04-14 15:21 git Note Added: 0107956
2022-04-14 15:39 git Note Added: 0107957
2022-04-14 16:10 git Note Added: 0107959
2022-04-14 16:20 git Note Added: 0107960
2022-04-14 16:25 git Note Added: 0107961
2022-04-14 16:37 git Note Added: 0107962
2022-04-14 16:39 git Note Added: 0107963
2022-04-14 18:12 git Note Added: 0107964
2022-04-14 18:19 git Note Added: 0107965
2022-04-14 18:23 git Note Added: 0107966
2022-04-14 18:32 git Note Added: 0107967
2022-04-14 20:48 git Note Added: 0107970
2022-04-14 22:42 git Note Added: 0107975
2022-04-14 22:44 git Note Added: 0107977
2022-04-14 22:50 git Note Added: 0107978
2022-04-14 22:51 kgv Note Added: 0107980
2022-04-14 22:51 kgv File Added: multiview6.png
2022-04-14 23:06 git Note Added: 0107981
2022-04-14 23:44 git Note Added: 0107982
2022-04-15 09:27 git Note Added: 0107984
2022-04-15 09:34 git Note Added: 0107985
2022-04-15 09:51 git Note Added: 0107986
2022-04-15 11:16 git Note Added: 0107987
2022-04-15 11:22 kgv Note Added: 0107989
2022-04-15 11:22 kgv Assigned To kgv => bugmaster
2022-04-15 11:22 kgv Status new => resolved
2022-04-15 11:24 kgv Description Updated
2022-04-15 11:24 kgv Test case number => opengl general multiview1
2022-04-15 11:24 kgv Status resolved => reviewed
2022-04-15 13:04 kgv Steps to Reproduce Updated
2022-04-16 11:35 smoskvin Status reviewed => tested
2022-04-16 11:35 smoskvin Note Added: 0108000
2022-04-16 15:25 smoskvin Changeset attached => occt master 879768fb
2022-04-16 15:25 kgv Assigned To bugmaster => kgv
2022-04-16 15:25 kgv Status tested => verified
2022-04-16 15:25 kgv Resolution open => fixed
2022-04-16 15:35 git Note Added: 0108004
2022-04-16 15:35 git Note Added: 0108005
2022-04-18 20:43 kgv Relationship added parent of 0032935
2022-05-16 23:09 kgv Relationship added parent of 0032975