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
Documenti analoghi
Complessità di un sistema VR
specificato tramite un linguaggio di scripting (S3D)
Lo script S3D viene compilato in un bytecode che
viene processato ed eseguito dalla XVR-VM