-
Notifications
You must be signed in to change notification settings - Fork 26
Scraps
This page is mostly for internal use and contains misc notes for omegalib features and modifications. Information here may refer to changes in the omegalib core library or any of the modules.
- build -> build.tmp
- link & test current master version (do you get cur mvi?)
- delete source & build.tmp
- link & test current dev version
- download & test railsim
- 3D menu mode enable/disable when entering / exiting pointer mode, or just
- place 2D menu where 3D wand is. This is because panels need 2D menu.
- Plot panel does not display anything.
- arrows to resize workspace do not work?
- need button to turn off sonde drops.
- UI scale issues
- top down view test
- window resize tests
- multi-window tests
- data save/reload tests
- 2D interaction test
- view launching & shutdown
In porthole.js
on connection, python call
porthole.getService().setClientGroup(%client_id%, group name, isMaster()
)
NOTE do not use the phCall because that only sends from master node.
group name = (OMEGA.getAppId() = appName + multi instance id)
porthole::sendjs(cli): if cli has group name, send command to all clients in group, otherwise send to client only.
porthole::broadcastjs(cli) if cli = null send to all if cli != null if cli has group do not send to any client in group otherwise send to all clients except cli.
porthole::setClientGroup find portholeGUI with cli name portholeGUI->groupId portholeGUI->isMaster (set both through a portholeGUI->setGroup method)
Three.js:
// pos and dir are not needed.
raycaster = new THREE.Raycaster(camera.pos, camera.dir);
mouse.x = '''
mouse.y = ...
raycaster.setFromCamera( mouse, camera )
intersections = raycaster.intersectObjects( objects ); // objects = object list
CHange to work in CAVE2
// pos and dir are probably not needed.
raycaster = new THREE.Raycaster(camera.pos, camera.dir);
raycaster.ray = (ray coming from omegalib event)
intersections = raycaster.intersectObjects( objects ); // objects = object list
Simplify frame func support:
OMEGA.frameFunction = (pass the frame function)
in C++
invoke("OMEGA.frameFunction", context);
No need to keep vars around
Passing ray to js page:
OMEGA.buttonFunction(user, source, button, state)
OMEGA.trackerFunction(user, source, position, orientation, direction)
direction = orientation * (0, 0, -1) // direction = orientation * forward vec
both position and direction are relative to default camera for all mocap objects.
frameFunction, buttonFunction and trackerFunction might be set to a default empty function in porthole.js so user does not get errors....
- app creation / destruction
- app canvas updates
- user position
- user / app association ( icecloud can also have its own specific logs)
Canvases: do time snapshots, with window canvas positions each second (or 10 seconds?) Data: TIME, APPID, X, Y, W, H App creation / destruction - this can be inferred from canvas log but save separately TIME, APPID, Action (create / destroy) User log: snapshots every 1 or 10 seconds: TIME, USERID, POSITION, GAZE DIR, INPUT, APP ASSOCIATION (APPID), input mode rate input mode rate = how long input was in pointer vs wand mode over time slot. If time slot is just 1 second, we can just have a 2D or 3D value here Note - input is on/off if there has been input activity from user over last second (or 10 seconds)
icecloud log (one log for all apps - apps may send data to appmagaer, appmanager appmanager takes care of updatig the log to avoid having multiple apps open file for writing) snapshot TIME, APPID, MODE (3d, top/down, graph only, mixed), canvas (redundant), 2D/3D use 2D/3D use = area of display dedicated to 3d view vs area dedicated to 2d views also maybe 2D/3D inpt rate.If time slot is just 1 second input rate can just be 2D or 3D binary value.
- display config changes depending on task - look at canvas snapshots
- users work in parallel: look at user movement + app association
- users alternate 2D/3D work: look at
- 2D/3D interaction rate in apps
- 2D/3D interaction rate over canvases.
- window movement limited to task switching
- canvas rearrangment limited and only happens at specific times in tape.
Multi-View immersion (MVI) can be used to start multiple immersive applications on a single immersive installation. Applications can share the display space, be controller by multiple users, and be managed like windows.
To run applications in MVI mode you need to run the MVI application manager
(appmgr
) which is part of the MVI distribution. You can then:
- run applications from inside
appmgr
, using the:run
quick command:
appmgr>:run path/to/my/script.py
- run external applications and connect them to the app manager. You can do so using the mvi configuration from the mvi module:
bin> ./orun -s path/to/my/script.py -c mvi/mvi.cfg
- appmgr
- mvi
- workspace script
- general code structure
oapp can contain either python code or a config file. osystem reads first line
of file and checks if it starts with config:
to decide how to parse it.
-
normals can't be inverted using gl_FrontFacing
-
add a new default_osx.frag shader and fix the point where it is loaded: the macro APPLE is incorrect.
-
shadow map / render buffer does not seem to clean between frames so th eshadow map end up being written over and over leading to weird shadows.
Automate following steps
- copy vtkbuild/Wrapping/Python/Vtk to modules/vtk
- copy vtkbuild/bin/Release/*.pyd to bin
- copy vtkbuild/bin/Release/*.dll to bin
Side note: sceneTools export to sceneTool, should export to modules/sceneTools
Let secondary cameras have an active viewport so they can become disabled on tiles/nodes that do not need them. Use case is secondary cameras rendering to an image widget - if the widget is off tile boundaries, camera does not need to render on that node.
used by applauncher to set a configurable init script wich then launches the mvi config script using orun. Need a way to start orun without changing dir or an alternative way of running the mvi config scripts.
getting canvas rect from context / system is horrible:
context.tile->displayConfig.getCanvasRect().size()
add some syntactic sugar for this (make issue)
pointCloud vis seems to break for larger point clouds
- use example dataset and identify break parameters (pc size, batch size, ...)
Right now, modules with data sharing enabled share the same data with all slaves. In some scenarios (i.e. pixel data streaming) it is desirable to send a different subset of the data to each slave (i.e. to account for window position and send only tiles of the pixel data to target nodes, to reuce overhead).
Can we use Equalizer co::Object
functions?
- Create a C++11 branch in omegalib&omicron
- update Asio
- update Eigen
- add new '-std=c++11' flag to linux, OSX CMakelists NOTE it might be easier to disable c++11 on 3rd party libraries.. it can probably be done when adding external projects
ok, already static
-
porthole is designed for multi-user applications, not websites.
-
porthole supports either a small standalone server, or a 'rich' server driving a display, where the clients act as secondary interfaces to the server application