When using the VIOSOWarpBlend.dll, the behaviour of the calibration processing is configured by configuration file VIOSOWarpBlend.ini
. This file must be placed in the same folder as the DLL.
Every parameter is first read from the section with the channelname, provided at initialization, then if not found from default. A section is defined by putting a name into square brackets at the beginning of a line: [channel1]
The configuration parameters are outlined here with values for a typical off-the-shelf installation. Default values are used if the configuration parameter is missing or invalid.
configuration parameter | default value | comment |
---|---|---|
logLevel=1 |
0 | log level: 0 – only fatal errors, 1 – only errors and important info,# 2 – normal log, but guaranteed no info logging in render and frustum methods, 3 – verbose debug log, |
logFile=VIOSOWarpBlend.log |
VIOSOWarpBlend.log | some other log file;relative paths are relative to VIOSOWarpBlend.dll, not the main module! |
bLogClear=0 |
0 | if 1, clear the logfile on start |
near=1.0 |
the near plane | |
far=20000.0 |
the far plane | |
trans=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1] |
this is the transformation matrix transforming a vioso coordinate to an IG coordinate. Units should match the units of 3d modell. Last raw defines the pivot of a moving platform, column major format | |
base=[1,0,0,0;0,1,0,0;0,0,-1,0;0,0,0,1] |
same as above, row major format DirectX conform, as DX uses left-handed coordinate system, z has to be inverted! | |
bTurnWithView=1 |
0 | set to 1 if view turns and moves with eye, i.e view is obtained from a vehicle position on a moving platform |
bBicubic=0 |
set to 1 to enable bicubic content texture filter | |
bDoNotBlend=0 |
set to 1 to disable blending | |
bDoNoBlack=0 |
0 |
set to 1 to disable software black level correction |
splice=0 |
bitfield:
|
|
mode | 0 | DEPRECATED
mode=0: same as splice=0 |
bAutoView=0 |
0 | set to 1 to enable automatic view calculation
When enabled, it will override dir=[], fov=[] and screen to use calculated values |
autoViewC=1 |
1 | moving range coefficient. Set a range in x,y,z from platform origin to be mapped; x+- autoViewC * screen / 2 |
gamma=1.0 |
1 | set a gamma value. This is multiplied by the gamma already set while calibrating!, If calibrators blend looks different than in your application, adjust this value! |
port=942 |
0 | set to a TCP IPv4 port, use 0 to disable network. defaults to 0, standard port is 942
|
addr=0.0.0.0 |
0.0.0.0 | set to IPv4 address, to listen to specific adapter, set to 0.0.0.0 to listen on every adapter |
heartBeat=3 |
0 | set to a time interval in ms a UDP broadcast is sent to port , defaults to 0 , which means no heartbeat is sent; only avaliable if “port” is set to enable network functions |
bUseGL110=0 |
0 | set to 1, to use shader version 1.1 with fixed pipeline |
bPartialInput |
0 | set to 1, to input texture act as optimal rect part |
eye=[x,y, z] |
[0,0,0] | this is the eye position relative to pivot |
dir=[x,y, z] |
[0,0,0] | his is the view direction, rotation angles around axis’ [x,y,z]. The rotation order is yaw (y), pitch (x), roll (z); positive yaw turns right, positive pitch turns up and positive roll turns clockwise |
fov=[x,y,z,w] |
[30,20,30,20] | this is the fields of view, x – left, y – top, z – right, w – bottom |
screen=3.650000000 |
1 | the distance of the render plane from eye point. Watch the used units! |
calibFile=..\Res\Calib.vwf |
path to warp blend file(s), if relative, it is relative to the VIOSOWarpBlend.dll, not the main module! To load more than .vwf/.bmp, separate with comma. | |
calibIndex=0 |
index, in case there are more than one display calibrated; if index is omitted you can specify the display ordinal | |
calibAdapterOrdinal=1 |
0 | display ordinal the number in i.e. “D4 UHDPROJ (VVM 398)” matches 4. In case no index is found index is set to 0 |
calibSplit=[x,y,z,w] |
[0,0,0,0] |
x: number of columns, y: number of rows, z: column index, w: row index If you want to split a map into 2 side-by side parts set to [2,1,0,0] for the left side and [2,1,1,0] for the right part |
eyePointProvider=[EyePointProvider] |
eye point provider dll name; the name is passed to LoadLibrary, so a full qualified path is possible, use quotes if white spaces | |
eyePointProviderParam=[] |
string used to initialize provider, this depends on the implmementation | |
mouseMode=0 |
bitfield, set 1 to render current mouse cursor on top of warped buffer |
Example .ini file
Example .ini file
[default] logLevel=2 bLogClear=1 near=1.0 far=20000.0 base=[1,0,0,0;0,1,0,0;0,0,-1,0;0,0,0,1] ; row major format DirectX conform, as left-handed coordinate system, z has to be inverted, no scaling bTurnWithView=1 bAutoView=1 autoViewC=1 calibFile=Calib_150930.vwf [channel 1] ;here go special values for a warper called “channel 1” calibIndex=0 [channel 2] ;next channel, if you are using this .ini for more than one channel calibIndex=2
About the base-matrix and eye-vector
This matrix is needed, if you use 3D maps, suitable for variable eye point. It describes the transformation from your 3D world to the VIOSO 3D world. It needs to be THE SAME for ALL IG channels. So define this in [default]
section.
The VIOSO coordinate system is set by the model you use. In case you use a simple model generated by VIOSO Core or Integrate, the world is denoted like this:
- Flat Screen
- World origin is horizontally centered on lower edge
- Axes: +X right, +Y up, +Z back
- Unit: Millimeters
- Cylindric Screen
- World origin is mid-point of base (lower) circle
- Axes: +X right, +Y up, +Z back
- Unit: Millimeters
- Panadome
- World origin is mid-point of sphere
- Axes: +X right, +Y up, +Z back
- Unit: Millimeters
- Dome
- World origin is mid-point of sphere
- Axes: +X to -90°=270°=WEST, +Y to 0°=NORTH, -Z up to zenith
- Unit: Millimeters
The base matrix is a homogenous transformation shaped like this:
R | 0 | ||
0 | |||
0 | |||
tx | ty | tz | 1 |
R
is a 3×3 rotation/scaling matrix to convert axes directions and unit scale.
t
is a translation vector. It points from (VIOSO)model origin to IG origin in model coordinates. This vector is added to each IG coordinate.
The eye-vector is added after rotation around the pivot. This needs to be same on all IG channels, serving same eye. So define this in either [default] section for non-stereoscopic displays or put it to the [channel] making sure all right-eye channels are same respectively all left-eye channels. It is needed, if the rotation center is not the eye itself. I.e. a cockpit is mounted on top of a frame, and the center of the frame is rotated or IPD. So the actual eye must be rotated with the actions of the platform relative to the rotation center.