SlideShare une entreprise Scribd logo
1  sur  7
 
	
  
	
  
	
  
	
  
       Structural	
  organization	
  and	
  architecture	
  of	
  a	
  
                     Virtual	
  Reality	
  Explorer	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
                                                                                                Prachi	
  Gupta,	
  Vinayak	
  Suley	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Note:	
  This	
  is	
  a	
  technical	
  paper	
  I	
  wrote	
  with	
  a	
  friend	
  of	
  mine	
  during	
  our	
  second	
  year	
  of	
  
Bachelor's	
  degree.	
  Authoring	
  this	
  paper	
  was	
  probably	
  the	
  most	
  fun	
  and	
  rewarding	
  
learning	
  experience	
  of	
  my	
  life	
  and	
  hence	
  I	
  thought	
  it	
  deserves	
  a	
  place	
  in	
  my	
  published	
  
content.	
  At	
  the	
  time	
  we	
  wrote	
  this,	
  all	
  this	
  was	
  original	
  work	
  and	
  all	
  the	
  ideas	
  
mentioned	
  here	
  are	
  what	
  we	
  came	
  up	
  with	
  on	
  our	
  own	
  over	
  countless	
  discussions,	
  most	
  
of	
  which	
  ended	
  up	
  in	
  our	
  discussing	
  or	
  dreaming	
  about	
  stuff	
  completely	
  irrelevant	
  to	
  the	
  
project	
  at	
  hand.	
  	
                                                  	
  
Abstract:	
  
	
  
This	
   paper	
   talks	
   about	
   the	
   structural	
   organization	
   and	
   architecture	
   of	
   a	
   Virtual	
   Reality	
  
Explorer.	
  It	
  attempts	
  to	
  throw	
  some	
  light	
  on	
  the	
  components	
  and	
  their	
  functions	
  of	
  a	
  VR	
  
Explorer	
  and	
  what	
  issues	
  should	
  be	
  kept	
  in	
  mind	
  while	
  making	
  such	
  an	
  application.	
  
	
  
Virtual	
  Reality:	
  
	
  




                                                                                                      	
  
	
  
The	
   word	
   virtual	
   means,	
   being	
   in	
   effect	
   but	
   not	
   in	
   actual	
   fact.	
   Reality	
   is	
   something	
   of	
   or	
  
relating	
   to	
   practical	
   or	
   everyday	
   concerns	
   or	
   activities.	
   Combining	
   these	
   two,	
   we	
   get	
  
Virtual	
  Reality,	
  i.e.	
  something	
  of	
  practical	
  or	
  everyday	
  use	
  in	
  effect	
  but	
  not	
  in	
  actual	
  fact.	
  
	
  
Virtual	
  Reality	
  Explorer:	
  
The	
  Virtual	
  Reality	
  Explorer	
  is	
  a	
  visual	
  aid	
  for	
  exploring	
  a	
  possibly	
  remote	
  premise	
  using	
  
a	
  computer	
  through	
  standard	
  input	
  devices	
  like	
  keyboard	
  and	
  mouse.	
  It	
  will	
  simulate	
  the	
  
view	
  as	
  seen	
  by	
  a	
  person	
  actually	
  walking	
  through	
  the	
  premises.	
  
The	
  application	
  will	
  have	
  the	
  capability	
  to	
  work	
  under	
  two	
  modes	
  -­‐	
  
	
  1.	
  The	
  tour	
  mode	
  
The	
  Tour	
  mode	
  will	
  follow	
  a	
  predefined	
  route	
  through	
  the	
  entire	
  premises	
  giving	
  the	
  
user	
  a	
  guided	
  tour	
  with	
  no	
  input	
  required	
  from	
  the	
  user's	
  side.	
  
	
  2.	
  The	
  search	
  mode	
  
The	
   Search	
   mode	
   will	
   enable	
   a	
   user	
   to	
   search	
   the	
   best	
   possible	
   path	
   and/or	
   all	
   the	
  
routes	
  to	
  a	
  place	
  on	
  the	
  premises	
  from	
  another	
  place	
  in	
  the	
  premises.	
  
	
  
Building	
  the	
  Virtual	
  World:	
  
	
  
In	
   order	
   to	
   view	
   any	
   building	
   in	
   3	
   dimensions	
   it	
   first	
   has	
   to	
   be	
   modeled	
   in	
   some	
   way.	
  
This	
  can	
  be	
  done	
  in	
  various	
  ways.	
  
All	
   the	
   vertex	
   locations	
   can	
   be	
   coded	
   into	
   the	
   program,	
   however	
   this	
   is	
   an	
   extremely	
  
inefficient	
   way	
   of	
   making	
   a	
   virtual	
   world	
   and	
   the	
   idea	
   does	
   not	
   deserve	
   a	
   further	
  
discussion.	
  
One	
  of	
  the	
  other	
  approaches	
  is	
  to	
  dynamically	
  create	
  portions	
  of	
  the	
  virtual	
  world	
  in	
  a	
  
sort	
  of	
  ‘World	
  Creator	
  Tool	
  Kit’.	
  For	
  this	
  purpose	
  the	
  application	
  will	
  consist	
  of	
  an	
  easy	
  
to	
  use	
  and	
  understand	
  interface	
  that	
  will	
  enable	
  a	
  user	
  to	
  create	
  her/his	
  own	
  worlds.	
  
Once	
   the	
   modeling	
   of	
   the	
   world	
   has	
   been	
   done,	
   the	
   data	
   generated	
   by	
   the	
   ‘World	
  
Editor’	
   can	
   then	
   be	
   stored	
   in	
   a	
   file.	
   These	
   worlds	
   can	
   then	
   be	
   explored	
   in	
   any	
   of	
   the	
  
previously	
  mentioned	
  ways	
  by	
  making	
  loading	
  these	
  files	
  into	
  the	
  viewing	
  application.	
  
	
  
Files:	
  
The	
  files	
  that	
  will	
  be	
  needed	
  to	
  store	
  all	
  the	
  data	
  needed	
  to	
  describe	
  a	
  world	
  are:	
  

       1. Mesh	
  Files:	
  

Mesh	
  files	
  store	
  the	
  architectural	
  structures	
  like	
  pillars,	
  walls,	
  staircases,	
  etc	
  along	
  with	
  
their	
  material	
  properties.	
  

       2. Texture	
  Files:	
  

Image	
  files	
  needed	
  to	
  give	
  a	
  realistic	
  texture	
  to	
  the	
  objects	
  inside	
  the	
  virtual	
  world.	
  

       3. Furniture	
  Files:	
  

Files	
  to	
  store	
  the	
  data	
  for	
  modeling	
  and	
  drawing	
  the	
  furniture	
  inside	
  the	
  rooms.	
  

       4. Lighting	
  Files:	
  

File	
  containing	
  information	
  about	
  the	
  lighting	
  for	
  the	
  premises.	
  

       5. Node	
  File:	
  

File	
  containing	
  details	
  of	
  the	
  strategic	
  locations,	
  turns	
  and	
  junctions	
  in	
  the	
  premises.	
  
	
  
Portal	
  Rendering	
  and	
  Sectors:	
  
	
  
To	
   view	
   the	
   world,	
   the	
   world	
   will	
   first	
   have	
   to	
   be	
   loaded	
   into	
   the	
   application	
   by	
   reading	
  
from	
   the	
   data	
   files	
   and	
   then	
   generating	
   their	
   respective	
   data	
   structures.	
   At	
   this	
   point	
   of	
  
time,	
  all	
  the	
  data	
  that	
  is	
  currently	
  loaded	
  will	
  reside	
  in	
  the	
  main	
  memory,	
  it	
  will	
  also	
  be	
  
present	
  in	
  the	
  Rendering	
  list.	
  Thus,	
  with	
  the	
  increase	
  in	
  the	
  size	
  of	
  the	
  world,	
  there	
  will	
  
be	
   a	
   significant	
   increase	
   in	
   the	
   required	
   memory	
   and	
   processing	
   power.	
   Only	
   a	
   small	
  
part	
  of	
  the	
  world	
  will	
  be	
  visible	
  at	
  any	
  time,	
  but	
  a	
  lot	
  of	
  hidden	
  geometry	
  will	
  have	
  to	
  be	
  
processed.	
  
To	
  reduce	
  these	
  overheads,	
  we	
  divide	
  larger	
  worlds	
  into	
  smaller	
  regions	
  called	
  ‘Sectors’.	
  
Thus	
  the	
  geometry	
  for	
  the	
  entire	
  world	
  is	
  distributed	
  into	
  these	
  sectors.	
  Each	
  sector	
  has	
  
its	
  own	
  mesh	
  file,	
  furniture,	
  lighting	
  file	
  and	
  textures.	
  However,	
  only	
  a	
  single	
  node	
  file	
  is	
  
maintained	
   for	
   the	
   entire	
   world.	
   This	
   is	
   to	
   help	
   in	
   searching	
   locations	
   that	
   may	
   be	
  
scattered	
  across	
  different	
  sectors.	
  
	
  
Components	
  of	
  the	
  Virtual	
  Reality	
  Explorer	
  
	
  




                                                                                                             	
  
The	
  routine	
  repository:	
  
This	
   is	
   a	
   collection	
   of	
   different	
   multipurpose	
   routines	
   which	
   can	
   be	
   used	
   for	
   input,	
  
window	
   handling,	
   GUI	
   building	
   and	
   some	
   other	
   frequently	
   used	
   functions	
   for	
  
mathematics	
  calculations	
  etc.	
  

      1. Input	
  Repository:	
  
Input	
  routines	
  have	
  been	
  given	
  a	
  separate	
  paradigm	
  because	
  of	
  the	
  possibility	
  of	
  various	
  
input	
  events	
  like	
  hovering,	
  dragging,	
  discrete	
  clicks,	
  key	
  press,	
  key	
  release,	
  
differentiating	
  between	
  ASCII	
  keys	
  and	
  special	
  keys.	
  It	
  also	
  provides	
  flexibility	
  to	
  port	
  the	
  
system	
  to	
  new	
  hardware	
  like	
  touch	
  screens	
  etc.	
  

       2. Window	
  Handling:	
  

The	
  window	
  handling	
  routines	
  will	
  help	
  in	
  doing	
  important	
  tasks	
  like	
  window	
  creation	
  
registration	
  of	
  the	
  window	
  handler,	
  obtaining	
  a	
  device	
  context,	
  establishing	
  a	
  rendering	
  
context,	
  validating	
  the	
  pixel	
  format	
  etc.	
  Keeping	
  this	
  section	
  independent	
  helps	
  in	
  
making	
  the	
  application	
  easily	
  portable	
  to	
  other	
  platforms.	
  

       3. GUI:	
  

This	
  routine	
  repository	
  will	
  provide	
  classes	
  to	
  create	
  elementary	
  user	
  interface	
  elements	
  
like	
  buttons,	
  radio	
  buttons,	
  check	
  boxes,	
  text	
  boxes,	
  combo-­‐boxes,	
  scroll	
  bars,	
  sliders,	
  
selectors,	
  dialog	
  boxes	
  etc.	
  Keeping	
  this	
  section	
  independent	
  makes	
  it	
  easy	
  to	
  give	
  the	
  
entire	
  interface	
  a	
  whole	
  new	
  look	
  with	
  the	
  minimum	
  necessary	
  modifications	
  as	
  well	
  as	
  
implementing	
  further	
  optimizations.	
  

       4. Mathematics	
  and	
  other	
  elementary	
  routines	
  :	
  

These	
  routines	
  will	
  do	
  tasks	
  like	
  calculating	
  normals,	
  dot	
  products,	
  cross	
  products,	
  
angles	
  between	
  vectors,	
  distances,	
  lengths	
  etc.	
  

       5. Graphics	
  API	
  conversion	
  routines:	
  

This	
  set	
  of	
  routines	
  is	
  needed	
  to	
  provide	
  ease	
  in	
  case	
  of	
  changing	
  the	
  low	
  level	
  graphics	
  
API.	
  For	
  example,	
  we	
  could	
  use	
  OpenGL	
  or	
  Direct	
  3D	
  or	
  3DFX	
  etc.	
  This	
  module	
  will	
  
provide	
  one	
  set	
  of	
  functions	
  for	
  use	
  within	
  the	
  application	
  and	
  will	
  interface	
  these	
  with	
  
the	
  other	
  implementation’s	
  functions.	
  
	
  
Editor	
  Interface:	
  
This	
  provides	
  an	
  interface	
  using	
  the	
  routine	
  repositories,	
  to	
  help	
  in	
  the	
  creation	
  of	
  
worlds.	
  It	
  assembles	
  the	
  primitives	
  available	
  for	
  use	
  in	
  its	
  toolkit	
  to	
  make	
  a	
  world	
  and	
  
passes	
  on	
  the	
  map	
  to	
  the	
  “Input	
  Logic	
  Validator”.	
  
	
  
Input	
  Logic	
  Validator:	
  
This	
  component	
  validates	
  the	
  world	
  being	
  developed	
  by	
  the	
  world	
  editor.	
  It	
  prompts	
  the	
  
user	
  in	
  cases	
  of	
  invalid	
  input	
  and	
  illogical	
  constructions.	
  It	
  finally	
  writes	
  all	
  the	
  data	
  to	
  
mesh,	
  nodes,	
  furniture	
  and	
  lighting	
  files.	
  It	
  also	
  helps	
  in	
  associating	
  material	
  properties	
  
and	
  textures	
  with	
  the	
  objects	
  of	
  the	
  world.	
  
	
  
Files:	
  
The	
  various	
  kinds	
  of	
  files	
  used	
  to	
  maintain	
  the	
  data.	
  This	
  area	
  is	
  accessed	
  by	
  the	
  loader	
  
to	
  prepare	
  the	
  trees,	
  linked	
  lists	
  and	
  graphs	
  for	
  the	
  Render	
  list	
  and	
  the	
  Timing	
  and	
  
Control	
  module.	
  
	
  
	
  
Viewer	
  Interface:	
  
	
  
The	
  interface	
  that	
  helps	
  the	
  user	
  to	
  choose	
  the	
  viewing	
  mode	
  and	
  take	
  in	
  other	
  details	
  
like	
  source	
  and	
  destination	
  (if	
  required).	
  This	
  interface	
  passes	
  on	
  the	
  details	
  to	
  the	
  
timing	
  and	
  logic	
  control	
  unit.	
  
	
  
Timing	
  and	
  Logic:	
  
This	
  module	
  is	
  the	
  brain	
  of	
  the	
  entire	
  system.	
  It	
  takes	
  variables	
  as	
  inputs	
  from	
  the	
  
viewer	
  interface	
  and	
  based	
  upon	
  these	
  inputs	
  it	
  takes	
  decisions	
  such	
  as	
  which	
  world’s	
  
node	
  file	
  to	
  load,	
  which	
  current	
  sector	
  in	
  to	
  be	
  rendered,	
  where	
  the	
  camera	
  has	
  to	
  be	
  
placed,	
  how	
  fast	
  it	
  has	
  to	
  be	
  moved.	
  It	
  creates	
  a	
  graph	
  from	
  the	
  node	
  list	
  and	
  using	
  
shortest	
  path	
  algorithms,	
  figures	
  out	
  what	
  is	
  the	
  best	
  way	
  to	
  reach	
  from	
  one	
  strategic	
  
location	
  to	
  the	
  other.	
  It	
  can	
  also	
  be	
  used	
  to	
  control	
  rendering	
  options,	
  for	
  example,	
  we	
  
may	
  not	
  want	
  the	
  furniture	
  to	
  be	
  displayed	
  or	
  we	
  might	
  want	
  to	
  disable	
  lighting	
  or	
  
attenuation	
  etc.	
  
	
  
Loader:	
  
This	
  module	
  loads	
  the	
  appropriate	
  files	
  as	
  defined	
  by	
  the	
  timing	
  and	
  Logic	
  control.	
  It	
  
opens	
  the	
  node	
  file,	
  makes	
  it	
  into	
  a	
  graph	
  and	
  passes	
  the	
  pointer	
  to	
  timing	
  and	
  control,	
  
opens	
  the	
  mesh	
  file,	
  forms	
  an	
  appropriate	
  tree	
  and	
  passes	
  the	
  root	
  pointer	
  to	
  render	
  
list,	
  opens	
  the	
  lighting	
  and	
  furniture	
  files	
  and	
  forms	
  the	
  appropriate	
  linked	
  list	
  and	
  
passes	
  them	
  to	
  render	
  list.	
  
	
  
Render	
  List:	
  
It	
  is	
  the	
  collection	
  of	
  all	
  objects	
  to	
  be	
  rendered	
  which	
  may	
  be	
  architectural	
  structures,	
  
lights,	
  furniture	
  and	
  textures.	
  It	
  receives	
  these	
  lists	
  from	
  the	
  loader.	
  
	
  
Camera:	
  
It	
  is	
  essentially	
  the	
  function	
  that	
  handles	
  the	
  viewing	
  transformations.	
  It	
  is	
  governed	
  by	
  
the	
  timing	
  and	
  control	
  module.	
  
	
  
Rendering:	
  
The	
  rendering	
  core,	
  mostly	
  it	
  will	
  be	
  the	
  standard	
  rendering	
  done	
  by	
  OpenGL	
  but	
  it	
  can	
  
be	
  custom	
  made	
  too.	
  
	
  
Final	
  View:	
  
The	
  simulation	
  as	
  seen	
  by	
  the	
  viewer.	
  
 
Viewer:	
  
The	
  person	
  who	
  uses	
  the	
  virtual	
  reality	
  explorer	
  through	
  the	
  viewer	
  interface.	
  
	
  

Contenu connexe

Similaire à Structural organization and architecture of a virtual reality explorer

Towards the Design of Intelligible Object-based Applications for the Web of T...
Towards the Design of Intelligible Object-based Applications for the Web of T...Towards the Design of Intelligible Object-based Applications for the Web of T...
Towards the Design of Intelligible Object-based Applications for the Web of T...Pierrick Thébault
 
Domain Driven Design in the Browser - Cameron Edwards
Domain Driven Design in the Browser - Cameron EdwardsDomain Driven Design in the Browser - Cameron Edwards
Domain Driven Design in the Browser - Cameron EdwardsHakka Labs
 
426 lecture 7: Designing AR Interfaces
426 lecture 7: Designing AR Interfaces426 lecture 7: Designing AR Interfaces
426 lecture 7: Designing AR InterfacesMark Billinghurst
 
A Hand Book of Visual Basic 6.0.pdf.pdf
A Hand Book of Visual Basic 6.0.pdf.pdfA Hand Book of Visual Basic 6.0.pdf.pdf
A Hand Book of Visual Basic 6.0.pdf.pdfAnn Wera
 
Agile webinar 2012
Agile webinar 2012Agile webinar 2012
Agile webinar 2012Hugh Beyer
 
Software Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic ArchitecturesSoftware Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic ArchitecturesAngelos Kapsimanis
 
Image transformation using grid(synopsis)
Image transformation using grid(synopsis)Image transformation using grid(synopsis)
Image transformation using grid(synopsis)Mumbai Academisc
 
2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR Prototyping2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR PrototypingMark Billinghurst
 
A Framework To Generate 3D Learning Experience
A Framework To Generate 3D Learning ExperienceA Framework To Generate 3D Learning Experience
A Framework To Generate 3D Learning ExperienceNathan Mathis
 
Design systems - Razvan Rosu
Design systems - Razvan RosuDesign systems - Razvan Rosu
Design systems - Razvan RosuRazvan Rosu
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Androidrizki adam kurniawan
 

Similaire à Structural organization and architecture of a virtual reality explorer (20)

Towards the Design of Intelligible Object-based Applications for the Web of T...
Towards the Design of Intelligible Object-based Applications for the Web of T...Towards the Design of Intelligible Object-based Applications for the Web of T...
Towards the Design of Intelligible Object-based Applications for the Web of T...
 
Chapter 1-Note.docx
Chapter 1-Note.docxChapter 1-Note.docx
Chapter 1-Note.docx
 
Domain Driven Design in the Browser - Cameron Edwards
Domain Driven Design in the Browser - Cameron EdwardsDomain Driven Design in the Browser - Cameron Edwards
Domain Driven Design in the Browser - Cameron Edwards
 
speach
speachspeach
speach
 
Srs
SrsSrs
Srs
 
426 lecture 7: Designing AR Interfaces
426 lecture 7: Designing AR Interfaces426 lecture 7: Designing AR Interfaces
426 lecture 7: Designing AR Interfaces
 
A Hand Book of Visual Basic 6.0.pdf.pdf
A Hand Book of Visual Basic 6.0.pdf.pdfA Hand Book of Visual Basic 6.0.pdf.pdf
A Hand Book of Visual Basic 6.0.pdf.pdf
 
Papers_usenix98
Papers_usenix98Papers_usenix98
Papers_usenix98
 
Agile webinar 2012
Agile webinar 2012Agile webinar 2012
Agile webinar 2012
 
43940.pdf
43940.pdf43940.pdf
43940.pdf
 
Software Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic ArchitecturesSoftware Architectures, Week 1 - Monolithic Architectures
Software Architectures, Week 1 - Monolithic Architectures
 
Creation engine
Creation engineCreation engine
Creation engine
 
Image transformation using grid(synopsis)
Image transformation using grid(synopsis)Image transformation using grid(synopsis)
Image transformation using grid(synopsis)
 
2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR Prototyping2022 COMP4010 Lecture5: AR Prototyping
2022 COMP4010 Lecture5: AR Prototyping
 
A Framework To Generate 3D Learning Experience
A Framework To Generate 3D Learning ExperienceA Framework To Generate 3D Learning Experience
A Framework To Generate 3D Learning Experience
 
C++ & VISUAL C++
C++ & VISUAL C++ C++ & VISUAL C++
C++ & VISUAL C++
 
Design systems - Razvan Rosu
Design systems - Razvan RosuDesign systems - Razvan Rosu
Design systems - Razvan Rosu
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android
 
Gaurav agarwal
Gaurav agarwalGaurav agarwal
Gaurav agarwal
 

Dernier

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Dernier (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Structural organization and architecture of a virtual reality explorer

  • 1.           Structural  organization  and  architecture  of  a   Virtual  Reality  Explorer                                 Prachi  Gupta,  Vinayak  Suley                 Note:  This  is  a  technical  paper  I  wrote  with  a  friend  of  mine  during  our  second  year  of   Bachelor's  degree.  Authoring  this  paper  was  probably  the  most  fun  and  rewarding   learning  experience  of  my  life  and  hence  I  thought  it  deserves  a  place  in  my  published   content.  At  the  time  we  wrote  this,  all  this  was  original  work  and  all  the  ideas   mentioned  here  are  what  we  came  up  with  on  our  own  over  countless  discussions,  most   of  which  ended  up  in  our  discussing  or  dreaming  about  stuff  completely  irrelevant  to  the   project  at  hand.      
  • 2. Abstract:     This   paper   talks   about   the   structural   organization   and   architecture   of   a   Virtual   Reality   Explorer.  It  attempts  to  throw  some  light  on  the  components  and  their  functions  of  a  VR   Explorer  and  what  issues  should  be  kept  in  mind  while  making  such  an  application.     Virtual  Reality:         The   word   virtual   means,   being   in   effect   but   not   in   actual   fact.   Reality   is   something   of   or   relating   to   practical   or   everyday   concerns   or   activities.   Combining   these   two,   we   get   Virtual  Reality,  i.e.  something  of  practical  or  everyday  use  in  effect  but  not  in  actual  fact.     Virtual  Reality  Explorer:   The  Virtual  Reality  Explorer  is  a  visual  aid  for  exploring  a  possibly  remote  premise  using   a  computer  through  standard  input  devices  like  keyboard  and  mouse.  It  will  simulate  the   view  as  seen  by  a  person  actually  walking  through  the  premises.   The  application  will  have  the  capability  to  work  under  two  modes  -­‐    1.  The  tour  mode   The  Tour  mode  will  follow  a  predefined  route  through  the  entire  premises  giving  the   user  a  guided  tour  with  no  input  required  from  the  user's  side.    2.  The  search  mode  
  • 3. The   Search   mode   will   enable   a   user   to   search   the   best   possible   path   and/or   all   the   routes  to  a  place  on  the  premises  from  another  place  in  the  premises.     Building  the  Virtual  World:     In   order   to   view   any   building   in   3   dimensions   it   first   has   to   be   modeled   in   some   way.   This  can  be  done  in  various  ways.   All   the   vertex   locations   can   be   coded   into   the   program,   however   this   is   an   extremely   inefficient   way   of   making   a   virtual   world   and   the   idea   does   not   deserve   a   further   discussion.   One  of  the  other  approaches  is  to  dynamically  create  portions  of  the  virtual  world  in  a   sort  of  ‘World  Creator  Tool  Kit’.  For  this  purpose  the  application  will  consist  of  an  easy   to  use  and  understand  interface  that  will  enable  a  user  to  create  her/his  own  worlds.   Once   the   modeling   of   the   world   has   been   done,   the   data   generated   by   the   ‘World   Editor’   can   then   be   stored   in   a   file.   These   worlds   can   then   be   explored   in   any   of   the   previously  mentioned  ways  by  making  loading  these  files  into  the  viewing  application.     Files:   The  files  that  will  be  needed  to  store  all  the  data  needed  to  describe  a  world  are:   1. Mesh  Files:   Mesh  files  store  the  architectural  structures  like  pillars,  walls,  staircases,  etc  along  with   their  material  properties.   2. Texture  Files:   Image  files  needed  to  give  a  realistic  texture  to  the  objects  inside  the  virtual  world.   3. Furniture  Files:   Files  to  store  the  data  for  modeling  and  drawing  the  furniture  inside  the  rooms.   4. Lighting  Files:   File  containing  information  about  the  lighting  for  the  premises.   5. Node  File:   File  containing  details  of  the  strategic  locations,  turns  and  junctions  in  the  premises.     Portal  Rendering  and  Sectors:    
  • 4. To   view   the   world,   the   world   will   first   have   to   be   loaded   into   the   application   by   reading   from   the   data   files   and   then   generating   their   respective   data   structures.   At   this   point   of   time,  all  the  data  that  is  currently  loaded  will  reside  in  the  main  memory,  it  will  also  be   present  in  the  Rendering  list.  Thus,  with  the  increase  in  the  size  of  the  world,  there  will   be   a   significant   increase   in   the   required   memory   and   processing   power.   Only   a   small   part  of  the  world  will  be  visible  at  any  time,  but  a  lot  of  hidden  geometry  will  have  to  be   processed.   To  reduce  these  overheads,  we  divide  larger  worlds  into  smaller  regions  called  ‘Sectors’.   Thus  the  geometry  for  the  entire  world  is  distributed  into  these  sectors.  Each  sector  has   its  own  mesh  file,  furniture,  lighting  file  and  textures.  However,  only  a  single  node  file  is   maintained   for   the   entire   world.   This   is   to   help   in   searching   locations   that   may   be   scattered  across  different  sectors.     Components  of  the  Virtual  Reality  Explorer       The  routine  repository:   This   is   a   collection   of   different   multipurpose   routines   which   can   be   used   for   input,   window   handling,   GUI   building   and   some   other   frequently   used   functions   for   mathematics  calculations  etc.   1. Input  Repository:  
  • 5. Input  routines  have  been  given  a  separate  paradigm  because  of  the  possibility  of  various   input  events  like  hovering,  dragging,  discrete  clicks,  key  press,  key  release,   differentiating  between  ASCII  keys  and  special  keys.  It  also  provides  flexibility  to  port  the   system  to  new  hardware  like  touch  screens  etc.   2. Window  Handling:   The  window  handling  routines  will  help  in  doing  important  tasks  like  window  creation   registration  of  the  window  handler,  obtaining  a  device  context,  establishing  a  rendering   context,  validating  the  pixel  format  etc.  Keeping  this  section  independent  helps  in   making  the  application  easily  portable  to  other  platforms.   3. GUI:   This  routine  repository  will  provide  classes  to  create  elementary  user  interface  elements   like  buttons,  radio  buttons,  check  boxes,  text  boxes,  combo-­‐boxes,  scroll  bars,  sliders,   selectors,  dialog  boxes  etc.  Keeping  this  section  independent  makes  it  easy  to  give  the   entire  interface  a  whole  new  look  with  the  minimum  necessary  modifications  as  well  as   implementing  further  optimizations.   4. Mathematics  and  other  elementary  routines  :   These  routines  will  do  tasks  like  calculating  normals,  dot  products,  cross  products,   angles  between  vectors,  distances,  lengths  etc.   5. Graphics  API  conversion  routines:   This  set  of  routines  is  needed  to  provide  ease  in  case  of  changing  the  low  level  graphics   API.  For  example,  we  could  use  OpenGL  or  Direct  3D  or  3DFX  etc.  This  module  will   provide  one  set  of  functions  for  use  within  the  application  and  will  interface  these  with   the  other  implementation’s  functions.     Editor  Interface:   This  provides  an  interface  using  the  routine  repositories,  to  help  in  the  creation  of   worlds.  It  assembles  the  primitives  available  for  use  in  its  toolkit  to  make  a  world  and   passes  on  the  map  to  the  “Input  Logic  Validator”.     Input  Logic  Validator:   This  component  validates  the  world  being  developed  by  the  world  editor.  It  prompts  the   user  in  cases  of  invalid  input  and  illogical  constructions.  It  finally  writes  all  the  data  to   mesh,  nodes,  furniture  and  lighting  files.  It  also  helps  in  associating  material  properties   and  textures  with  the  objects  of  the  world.    
  • 6. Files:   The  various  kinds  of  files  used  to  maintain  the  data.  This  area  is  accessed  by  the  loader   to  prepare  the  trees,  linked  lists  and  graphs  for  the  Render  list  and  the  Timing  and   Control  module.       Viewer  Interface:     The  interface  that  helps  the  user  to  choose  the  viewing  mode  and  take  in  other  details   like  source  and  destination  (if  required).  This  interface  passes  on  the  details  to  the   timing  and  logic  control  unit.     Timing  and  Logic:   This  module  is  the  brain  of  the  entire  system.  It  takes  variables  as  inputs  from  the   viewer  interface  and  based  upon  these  inputs  it  takes  decisions  such  as  which  world’s   node  file  to  load,  which  current  sector  in  to  be  rendered,  where  the  camera  has  to  be   placed,  how  fast  it  has  to  be  moved.  It  creates  a  graph  from  the  node  list  and  using   shortest  path  algorithms,  figures  out  what  is  the  best  way  to  reach  from  one  strategic   location  to  the  other.  It  can  also  be  used  to  control  rendering  options,  for  example,  we   may  not  want  the  furniture  to  be  displayed  or  we  might  want  to  disable  lighting  or   attenuation  etc.     Loader:   This  module  loads  the  appropriate  files  as  defined  by  the  timing  and  Logic  control.  It   opens  the  node  file,  makes  it  into  a  graph  and  passes  the  pointer  to  timing  and  control,   opens  the  mesh  file,  forms  an  appropriate  tree  and  passes  the  root  pointer  to  render   list,  opens  the  lighting  and  furniture  files  and  forms  the  appropriate  linked  list  and   passes  them  to  render  list.     Render  List:   It  is  the  collection  of  all  objects  to  be  rendered  which  may  be  architectural  structures,   lights,  furniture  and  textures.  It  receives  these  lists  from  the  loader.     Camera:   It  is  essentially  the  function  that  handles  the  viewing  transformations.  It  is  governed  by   the  timing  and  control  module.     Rendering:   The  rendering  core,  mostly  it  will  be  the  standard  rendering  done  by  OpenGL  but  it  can   be  custom  made  too.     Final  View:   The  simulation  as  seen  by  the  viewer.  
  • 7.   Viewer:   The  person  who  uses  the  virtual  reality  explorer  through  the  viewer  interface.