FAQ

[<<Accueil]

Comment conduire un écran 3D Philips WOWvx en utilisant Direct3D ?

J'ai mis en ligne quelques fichiers qui pourraient vous aider :
http://programmerart.org/code/wowvx

reference/Philips-3D-Interface-White-Paper-13725.pdf
Ce document explique ce qu'il faut mettre dans le signal vidéo pour que l'écran se mise en mode 3D, et comment faire pour que les images apparaissent avec profondeur.
Bref :
- l'image que vous voulez afficher se position au côté gauche de l'écran;
- l'image de 'disparité' (pronfondeur) se position au côté droit de l'écran;
- un code de contrôle composé de 10 octets (dit le « header ») est encodé dans le canal bleu des pixels [0], [2], [4], etc en haut à gauche de l'écran.  Chacun de ces pixels contient un seul bit du code.
- chaque deuxieme rang de pixels est caché par l'écran lorsqu'il est en mode 3D.

reference/europa.png
reference/3dsolutions.png
reference/hakim.png
Ce sont des copies d'écran pleine résolution de vidéos WOWvx.
Elles montrent le format que décrit l'article au-dessus.

WOWvx.fx
h_WOWvx.fx
Voici l'effet de shader que j'utilise pour afficher mon jeu en format WOWvx.  Ça fait un rectangle contenant l'image de profondeur au côté droit de l'écran.  Il ajout ensuite un plus petit rectangle en haut à gauche qui contient seulement les pixels du code pour contrôler les paramètres de l'affichage 3D.

Pour créer la map de disparité, je me suis servi de mon image pleine-écran des positions des pixels, ce qui fait parti de l'éclairage différé dans le jeu.
Dans la fonction PixelShader_Disparity, vous verez que premièrement je convertis ces positions en valuers de profondeur identiques à celles dans une matrice Z. On pourrait bien prélever des échantillons de la matrice Z elle-même, mais il faut savoir que certaines cartes graphiques ne permettent pas cela.

Il y a une formule, dans l'article technique sur WOWvx, qui décrit comment convertir les profondeurs de la matrice Z en valeurs de disparité pour le côté droit du signal vidéo. J'ai suivi à la lettre cette formule, dans la fonction DepthToDisparity, et ça a marché comme sur des roulettes. Il y a deux ensembles de valuers pour cette formule selon la taille de l'écran (42" / 21"). Pour le moment, mon shader n'est reglé que pour le 42", mais c'est facile à changer dans le code.

WOWvx.cpp
WOWvx.h
Voici la classe qui encode les paramètres WOWvx dans les pixels du « header » qui seront affichés en haut à gauche.

Un raccourci important pour se démarrer avec l'écran WOWvx, c'est que l'on peut emprunter des pixels d'header depuis n'importe quel exemple de contenu WOWvx, en coupant tout simplement ces pixels depuis une copie d'écran et les affichant en haut à gauche.  Vous pourriez donc vous servir de mon jeu pour produire des pixels d'header à partir de n'importe quel ensemble de paramètres que vous le précisez.  Le jeu vous offre le choix de précisez ces parametres soit dans le section 'WOWvx' des profiles d'options (fichiers .txt), soit en utilisant les menus dans les versions du jeu à partir de la 15 (même si ces derniers ne sont pas encôre très convivials).

How do you control a Philips WOWvx 3D display using Direct3D?

I've put some files online that should help:
http://programmerart.org/code/wowvx

reference/Philips-3D-Interface-White-Paper-13725.pdf
This explains what needs to be included in the video signal in order to switch the display into 3D mode and to show images with depth.
Basically:
- the image you want to display goes on the left half of the screen;
- the 'disparity' (depth) image goes on the right half of the screen;
- a 10-byte control code (called the 'header') goes into the blue channel of the pixels [0], [2], [4], etc at the top-left of the screen.  Each of these pixels holds one bit of the code.
- every second row of pixels is hidden by the screen when it's in 3D mode.

reference/europa.png
reference/3dsolutions.png
reference/hakim.png

These are full-size screenshots of some WOWvx example videos.
They show the format described in the white paper.

WOWvx.fx
h_WOWvx.fx
This is the shader effect that I use to display my game in WOWvx format. It draws a rectangle containing the depth image onto the right-hand side of the screen.  It then draws a smaller rectangle at the top left containing just the header pixels that control the parameters of the 3D display.

To create the disparity map, I made use of the full-screen position buffer that forms part of the game's deferred lighting.
In the function PixelShader_Disparity, you'll see that I firstly convert those positions into depth values exactly like the ones used in a Z buffer.  We could alternatively take samples from the Z buffer itself, but we'd need to bear in mind that not all graphics cards would make that possible.

The WOWvx white paper provides a formula for converting Z buffer depth values into 'disparity' values for the right-hand side of the video signal.  I followed this formula exactly, in the function DepthToDIsparity, and it worked a treat.  There are two sets of values for this formula, depending on the size of the screen (42" / 21").  At the moment, my shader is only configured for the 42" one, but it's easy to change this in the code.

WOWvx.cpp
WOWvx.h
This is the class that encodes all the WOWvx parameter values into the header pixels to be displayed at the top-left of the screen.

An important shortcut when getting started with the WOWvx display is that you can borrow header pixels from any existing WOWvx content, by simply cutting those pixels out of a screen grab and displaying them at the top-left of the screen. You could therefore use my game to generate header pixels for you based on any set of display parameters you specify. The game allows parameters to be specified either in the 'WOWvx' section of the options profiles (text files), or from the in-game menus in version 15 onwards (although the menus aren't very user-friendly yet).

Est-ce que le mode WOWvx nécessite une carte graphique en particulière ?

Non, ça marche avec n'importe quelle carte qui est compatible avec le jeu.

Cette compatibilité est possible grâce au fait que le jeu exécute son propre mode WOWvx, plutôt que compter sur une pilote de graphisme spécialisée qui convertirait en format WOWvx les informations normales du scène.  Une pilote OpenGL qui effectue une telle conversion est disponible de la part de Philips.

Does the WOWvx mode require a particular type of graphics card?

No, it works with any graphics card that is compatible with the game itself.

This compatibility is made possible by the fact that the game supports WOWvx natively, rather than relying on a special graphics driver to convert standard scene information into WOWvx format.  An OpenGL driver that performs such a conversion is available from Philips.

Comment suivre le TrackClip PRO (6 DOF) en utilisant l'SDK OptiTrack ?

Veuillez voir le code source C++ inclus dans le téléchargement du jeu : http://download.programmerart.org

COptiTrack::InterpretObjects est la fonction qui fait l'affaire.
Cela calcule 'camSpaceClipTransform' (le transformation du TrackClip PRO dans l'espace du caméra).

Ensuite, CHeadTracker::Update calcule 'vsHeadTransform' (le transformation de la tête du joueur dans l'espace de vue).

Finalement, CViewInfo::ApplyCamera calcule 'finalWorldToView' (la matrice de vue pour D3D).

How do you track the TrackClip PRO (6 DOF) using the OptiTrack SDK?

Please see the C++ source code included in the game install: http://download.programmerart.org

COptiTrack::InterpretObjects is the function that does the business.
It calculates 'camSpaceClipTransform' (the transform matrix of the TrackClip PRO in camera space).

CHeadTracker::Update then calculates 'vsHeadTransform' (the transform matrix of the player's head in view space).

CViewInfo::ApplyCamera then calculates 'finalWorldToView' (the D3D view matrix).

Comment communiquer directement avec le capteur de mouvement du Z800 3DVisor (3 DOF) ?

Téléchargez l'SDK eMagin.  Ça contient de la documentation et des exemples qui fait en sorte qu'il est facile de se connecter au 3DVisor et de recevoir ses données de mouvement.
Il etait une fois que l'SDK était difficile à obtenir; je suis ravi qu'il est maintenant un téléchargement librement disponible.

Il y a quand même une légère complication.  Lorsque vous essayez de faire fonctionner les programmes d'exemplaire, vous trouverez probablement que le code de l'SDK échoue à compiler.
C'est parce que vous devez installer le Windows XP DDK (driver development kit), autrement connu sous le nom du WDK.

Si vous pouvez trouver le WDK sur une disque, génial  - c'est ce que j'ai fait.
Il est également disponible comme téléchargement de 2,4 Go ici :
https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&DownloadID=4606
Il faut s'inscrire au programme 'Connect' de Microsoft afin d'accèder au téléchargement (c'est très facile).
On peut aussi commander à Microsoft le WDK sur une disque.

How do you implement native head-tracking (3 DOF) for the Z800 3DVisor?

Download the eMagin SDK.  It contains documentation and examples that make it easy to connect with the 3DVisor and to read its headtracking data.
The SDK used to be tricky to get hold of; I'm delighted to see that it's now a freely-available download.

There is however a slight complication.  When you try to run the example programs, you'll probably find that the SDK code doesn't compile.
This is because you need to install the Windows XP DDK (driver development kit), otherwise known as the WDK.

If you can find the WDK on a disc, that's great (that's what I did).
It's also available as a 2.4 GB download here: https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=148&DownloadID=4606
You must join the Microsoft 'Connect' programme in order to access the download (this is a simple process).
You can also order the WDK on a disc from Microsoft.

Je cherche d3dx9_34.dll / d3dx9d_34.dll

Télécharger la version release d3dx9_34.dll (3,4 Mo)

Télécharger d3dx9d_34.dll (3,7 Mo)

I'm looking for d3dx9_34.dll / d3dx9d_34.dll

Download d3dx9_34.dll (3.4 MB) 

Download d3dx9d_34.dll (3.7 MB) 

Je cherche EMADevice_DLL.dll

Télécharger EMADevice_DLL.dll (60 Ko)

I'm looking for EMADevice_DLL.dll

Download EMADevice_DLL.dll (60 KB)

Je cherche cmbtex.dlt

Télécharger cmbtex.dlt (78 Ko)

I'm looking for cmbtex.dlt

Download cmbtex.dlt (78 KB)

Je vous prie de corriger mon français.