XVR: Primo Progetto Il wizard “Hello world” La camera La scena

Transcript

XVR: Primo Progetto Il wizard “Hello world” La camera La scena
XVR: Primo Progetto
Il
wizard
“Hello world”
– Console Text/2D drawings
– 3D text
La
camera
– Traslazioni
– Rotazioni
La
scena
– Scene multiple
– Open GL, disegnare un quad
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
XVR functions: Text
Gestione
e manipolazione delle stringhe
Console
Layer: 2D text overlay layer
Supporto a semplici funzionalità grafiche
2D
Uso di font di sistema
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Simple alert window
WARNING:
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
In order to let transparency work, it is needed to
{{
explicitly enable it inside OpenGL calling:
SceneBegin();
SceneBegin();
glEnable(GL_BLEND)
……
SceneEnd();
SceneEnd();
glEnable(GL_BLEND);
glEnable(GL_BLEND);
message
message == “Oh
“Oh no,
no, another
another Hello
Hello World…”;
World…”;
ConsoleWidth
(2);
ConsoleWidth (2);
ConsoleColor
//
ConsoleColor (1,
(1, 0,
0, 0,
0, 0.5);
0.5);
// r,
r, g,
g, b,
b, alpha
alpha
ConsoleFilledRect
ConsoleFilledRect (0.35,
(0.35, 0.6,
0.6, 0.3,
0.3, 0.1
0.1 );
); //
// x,
x, y,
y, dimX,
dimX, dimY
dimY
ConsoleColor
ConsoleColor (0,
(0, 0,
0, 0,
0, 1);
1);
ConsoleRect
ConsoleRect (0.35,
(0.35, 0.6,
0.6, 0.3,
0.3, 0.1
0.1 );
);
ConsoleFont
("Arial",
18);
//
ConsoleFont ("Arial", 18);
// name,
name, size
size
ConsoleText
(0.39,
0.54,
Message);
ConsoleText (0.39, 0.54, Message);
//
// x,
x, y,
y, message
message
ConsoleWidth
ConsoleWidth (1);
(1);
……
}}
NOTE:
Console commands may be called outside
a SceneBegin()… SceneEnd() block
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
XVR functions: Camera
Definisce
la posizione e il comportamento
del punto di vista (camera)
Disponibili
Camera
8 diverse camera
free o targeted
Supporto
ad animazioni contenute in file
esterni (AAM-CAM, IDASF)
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Target Camera
Free Camera
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
CameraSetPosition(cam_pos);
CameraSetPosition(cam_pos);
CameraSetDirection(cam_dir);
CameraSetDirection(cam_dir);
SceneBegin();
SceneBegin();
……
SceneEnd();
SceneEnd();
}}
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
CameraSetPosition(cam_pos);
CameraSetPosition(cam_pos);
CameraSetTarget(target_pos);
CameraSetTarget(target_pos);
SceneBegin();
SceneBegin();
……
SceneEnd();
SceneEnd();
}}
Animated Camera
function
OnInit
function OnInit()
OnInit()
OnInit
{{
……
ReadCameraAnimation(“animfile.CAM");
ReadCameraAnimation(“animfile.CAM");
……
}}
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
SetCameraAnimation(0,
SetCameraAnimation(0, n_animframe);
n_animframe);
SceneBegin();
SceneBegin();
……
SceneEnd();
SceneEnd();
}}
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
XVR functions: Scene
Definisce la scena visuale e i
suoi parametri
SceneBegin() … SceneEnd()
La scena viene disegnata
sulla base dei parametri (di
scena e di camera) definiti
prima della chiamata a
SceneBegin()
Supporto alla stereoscopia e
a schermi multipli
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
SceneBegin();
SceneBegin();
<< DRAWING_CODE
DRAWING_CODE >>
SceneEnd();
SceneEnd();
}}
Standard
SceneBegin()..SceneEnd() block
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
SceneBegin();
SceneBegin();
<< MAIN_DRAWING_CODE
MAIN_DRAWING_CODE >>
SceneEnd();
SceneEnd();
Picture in picture
SceneBeginRel(0.8,
SceneBeginRel(0.8, 0.5,
0.5, 0.2,
0.2, 0.5);
0.5);
<< PIP_DRAWING_CODE
PIP_DRAWING_CODE >>
SceneEnd();
SceneEnd();
}}
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
SceneBeginRel(0.0,
SceneBeginRel(0.0, 0.0,
0.0, 0.5,
0.5, 1.0,
1.0,
VR_STEREO_LEFT
VR_STEREO_LEFT );
);
<< LEFT_EYE_DRAWING_CODE
LEFT_EYE_DRAWING_CODE >>
SceneEnd();
SceneEnd();
Stereo rendering (side-to-side)
SceneBeginRel(0.5,
SceneBeginRel(0.5, 0.0,
0.0, 0.5,
0.5, 1.0,
1.0,
VR_STEREO_RIGHT
VR_STEREO_RIGHT );
);
<< RIGHT_EYE_DRAWING_CODE
RIGHT_EYE_DRAWING_CODE >>
SceneEnd();
SceneEnd();
}}
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
SceneBegin();
SceneBegin();
<< MAIN_DRAWING_CODE
MAIN_DRAWING_CODE >>
SceneEnd();
SceneEnd();
Multipass
rendering
SceneBegin(VR_LEAVE_COLOR
SceneBegin(VR_LEAVE_COLOR );
);
<< SEC_DRAWING_CODE
SEC_DRAWING_CODE >>
SceneEnd();
SceneEnd();
}}
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
XVR functions: OpenGL
Fornisce un wrapper XVR delle
funzioni OpenGL
Possibile mixare API hi-level
(XVR) con API lo-level (OpenGL)
Overloading
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Drawing an OpenGL quad
function
OnInit
function OnInit()
OnInit()
OnInit
{{
my_texture
my_texture == CVmTexture("simpson.jpg");
CVmTexture("simpson.jpg");
SetActiveTexture(my_texture);
SetActiveTexture(my_texture);
}}
function
OnFrame
function OnFrame()
OnFrame()
OnFrame
{{
SceneBegin();
SceneBegin();
glEnable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glBegin(GL_QUADS);
glNormal(0,0,1);
glNormal(0,0,1);
glTexCoord(0,1);
glTexCoord(0,1);
glVertex(-5,0,0);
glVertex(-5,0,0);
glTexCoord(1,1);
glTexCoord(1,1);
glVertex(5,0,0);
glVertex(5,0,0);
glTexCoord(1,0);
glTexCoord(1,0);
glVertex(5,5,0);
glVertex(5,5,0);
glTexCoord(0,0);
glTexCoord(0,0);
glVertex(-5,5,0);
glVertex(-5,5,0);
glEnd();
glEnd();
SceneEnd();
SceneEnd();
}}
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
3ds Max
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
3ds Max
L’interfaccia
Finestre di viewport
– Proiezioni ortogonali
– Proiezioni prospettiche
Trasformazioni geometriche:
– Move
– Rotate
– Scale (uniforme/non uniforme)
Utility
– Lo snap
– Visualizzazioni nel viewport (wireframe, solid etc.)
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
3ds Max
Primitive geometriche (mesh)
– Standard
– Extended
– Compound
Modifica dei parametri
– Modify window
– Modifier stack
Edit Mesh
Normals
Utility (2)
– Select (mouse, lista, etc.)
– Hide/unHide
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
3ds Max / XVR
Esportazione
(MAX)
– Parametri di base
– Il file AAM
Importazione
(XVR)
– Classe CVmNewMesh
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Esportatore AAM per 3dsMax
Menu: File → Export e scegliere “AAM” file format
(se l’estensione AAM non appare, è probabile che il plugine di esportazione “aamout.dle”, distribuito con
XVR, non sia stato copiato nella cartella “Plugin” di 3DSMax)
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
AAM file format
Formato nativo XVR per la descrizione di mesh triangolari:
Sintassi semplice, parsing facile
Possibilità di incorporare vertex e pixel shaders
Supporto a:
- Multitexturing
- Animations
- Smoothing Groups
- Skinning
Esportatori:
Max, GMax, Maya and Blender
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Importazione di modelli 3D
3D Modeling Tools
Exporters
VRML data
IDASF data
AAM data
Procedural data
Mesh
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Classe CVmMesh/CVmNewMesh
Mesh
Mesh
Subset
Subset
Material
Material
Subset
Subset
Material
Material
Subset
Subset
Mesh poligonali caricate
da file AAM, VRML, IDASF
o generate a run-time
Bounding box
Material list
Subset list
Vertex animation
Material
Material
Shader
Shader
Texture
Texture
Texture
Texture
NOTA:
E’ possibile alterare la visibilità dei subset di una
mesh ma non manipolarne il contenuto
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione
Mesh methods
Transformation (DISTRUTTIVI !)
Translate()
Scale()
Normalize()
CenterBoundingBox()
Mirror()
Subsets
Hide() / HideAll()
UnHide() / UnHideAll()
GetSubsetIndex()
GetSubsetDescription()
Get__()
Material
ForceMaterial()
ModulateMaterials()
ModulateSubsetMaterial()
ChangeTextureParams()
CheckTransparency()
Add/RemoveShader() …
Drawing
Draw
(
int flags,
int x, int y );
VR_FRAMENUMBER per vertex animation
Realtà
il futuro1
Realtà Virtuale: il presente, il passato,
Esercitazione