SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
Martin  Christen
FHNW
Hochschule   für  Architektur,  Bau  und  Geomatik
Institut  Vermessung   und  Geoinformation
martin.christen@fhnw.ch
@MartinChristen
3D  Computer  Graphics  with Python
„3D  Graphics  the Pythonic Way“
Swiss  Python  Summit
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 2
About this talk
In  this  talk  several  technologies  around  3D  graphics  for  Python  are  presented.  
• A  brief  introduction  to  scripting  Blender shows  the  possibilities  of  creating  
complex  3D  Worlds  and  games.  
• The  second  part  shows  how  to  create  low  level  3D  applications  and  how  
Python  is  used  to  create  preprocessed  3D  worlds  for  the  webbrowser.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 3
PART  I:  Python  and  Blender
What  is  Blender  ?
• Blender  is  a  free  and  open  source  3D  creation  suite  for:
• Modelling
• Animation
• Simulation
• Rendering
• Video  Editing
• Motion  Tracking
• Game  Creation
• …and  more..  
• Runs  on  Linux,  MacOS and  Windows
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 4
Cycles  Demo  Reel  (2015)  – All  made  with  Blender
https://www.youtube.com/watch?v=wDRTjzLNK0g
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 5
Blender  Motion  Tracking
https://www.youtube.com/watch?v=2AvQiOf2IGA
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 6
Python  Scripting  in  Blender
Choose  the  Scripting  View:
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 7
Python  Scripting  in  Blender
Now  you  see  the  Python  3.x  console:
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 8
The  first  program:
Accessing  Data  is  quite  simple,  use  the  module  bpy.data:
list(bpy.data.objects)
list(bpy.data.scenes)
list(bpy.data.materials)
So  let’s  enter  the  following  in  the  Python  console:
>>> list(bpy.data.objects)
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 9
List  of  all  objects  in  the  scene:
And  that  is  pretty  much  what  you  see
in  the  scene  graph:
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 10
Python  Scripting  in  Blender
Open  the  Tab  in  the  3d  View  and  select  “Create”:
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 11
Python  Scripting  in  Blender
When  you  hold  mouse  over  “Cube”  you  will  see  the  Python  Command  how  to  
create  a  cube!  Just  note  it  and  click  on  cube.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 12
Python  Scripting  in  Blender
When  you  create  the  cube  you  will  see  the  exact  command  that  was  called  to  
create  it.  You  see  most  actions  as  Python code  there.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 13
Python  Scripting  in  Blender:  Adding  (predefined)  Objects
Right  click  on  the  text  (highligh)  and  copy  the  text  (ctrl-­c)
bpy.ops.mesh.primitive_cube_add(radius=1, view_align=False,
enter_editmode=False, location=(0, 0, 0), layers=(True, False, False,
False, False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False))
Hit  undo  (ctrl-­z)
And  now  we  modity the  command  using  location=(0,3,0)  and  radius=2:
bpy.ops.mesh.primitve_cube_add(radius=2, location=(0,3,0))
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 14
Python  Scripting  in  Blender:  Transform  objects
If  we  move  the  new  cube  by  pressing  and  holding  the  blue  z-­Axis  we  can  see  the  
following  command:
bpy.ops.transform.translate(value=(0, 0, 3.10625), constraint_axis=(False,
False, True), constraint_orientation='GLOBAL', mirror=False,
proportional='DISABLED', proportional_edit_falloff='SMOOTH',
proportional_size=1, release_confirm=True)
That  is  how  an  object  is  translated
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 15
Python  Scripting  in  Blender:  Operations
Apply  Operations  like  Subdivision:
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.subdivide()
bpy.ops.mesh.subdivide()
bpy.ops.mesh.subdivide()
bpy.ops.object.mode_set(mode=OBJECT')
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 16
Creating  Meshes  for  example:  Tetrahedron
import bpy
s = 0.5**0.5 # 0.5*sqrt(2)
verts = ((s,s,-1), (s,-s,-1), (-s,-s,-1), (-s,s,-1), (0,0,1))
faces = ((1,0,4), (4,2,1), (4,3,2), (4,0,3), (0,1,2,3))
mesh = bpy.data.meshes.new("TetrahedronMesh")
object = bpy.data.objects.new("TetrahedronObject", mesh)
object.location = (0,0,0) # origin
scene = bpy.context.scene
scene.objects.link(object)
scene.objects.active = object
object.select = True
mesh.from_pydata(verts, [], faces) # vertices, edges, faces
mesh.update()
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 17
Real  Life  Example
Using  Python  to  optimize  3D  objects:
bpy.ops.object.select_all(action='DESELECT')
bpy.context.scene.objects.active = bpy.data.objects[1]
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.join()
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.dissolve_limited()
bpy.ops.mesh.remove_doubles(threshold=0.01)
bpy.ops.mesh.select_all(action='DESELECT')
bpy.ops.mesh.select_interior_faces()
bpy.ops.mesh.delete(type='FACE')
bpy.ops.object.mode_set(mode='OBJECT')
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 18
Historic  Roman  City  “Augusta  Raurica”  – Generated  with  ESRI  City  Engine
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 19
Cleaned  up:  Jour,  Remove  Double  Vertices/Faces,  Interior  Faces
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 20
Final  Result  (125’929  triangles  optimized  to  56’216  triangles)
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 21
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 22
PART  II:  Low  Level  APIs
• OpenGL API  bindings
• Open  Graphics  Library -­ based on  C
• http://pyopengl.sourceforge.net/
• DirectPython 11:  Direct3D  11  (Windows  only)
• http://directpython11.sourceforge.net/
• Not  Cross  Platform
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 23
PyOpenGL
Supports  OpenGL  1.1  to 4.4
Works  with popular GUI  libraries,  for example:
• wxPython
• PyQT /  PySide
• PyGTK
• PyGame
• Tkinter (+  Togl widget)
I‘m not  going to make an  OpenGL  introduction here...
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 24
How  OpenGL  Works
Primitives   (=Points,  Linies,  Triangles)  are converted to Fragments  (Pixels).
Program Vertex-­Operations (e.g.  projection,  transformation).
Program Fragment-­Operations for shading/lighting/texturing.
Vertex/Fragment  Shaders [run on  the GPU  and]  are written in  GLSL.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 25
Vispy:  
http://vispy.org/ (  https://github.com/vispy/vispy )
VisPy is  a  young  library  under  heavy  development  at  this  time.  It  targets  two  
categories  of  users:
• Users  knowing  OpenGL,  or  willing  to  learn  OpenGL,  who  want  to  create  
beautiful  and  fast  interactive  2D/3D  visualizations  in  Python  as  easily  as  
possible.
• Scientists  without  any  knowledge  of  OpenGL,  who  are  seeking  a  high-­level,  
high-­performance  plotting  toolkit.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 26
Install  vispy
1) Numpy is  required
2) OpenGL  is  required
3) A  compatible  GUI  Toolkit  is  required
Then:
pip install vispy
More  info:  http://vispy.org/installation.html
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 27
Example,  lets  create  a  virtual  environment  named  “gl”
python3.5 -m venv gl
source gl/bin/activate
pip install vispy # also installs numpy
pip install pyglet
…  do  your  stuff  …
Deactivate
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 28
Development  Version  (currently  0.5.0.dev0)
git clone git://github.com/vispy/vispy.git
cd vispy
python3.5 setup.py develop
(Only  this  version  support  Jupyter Notebook!)
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 29
Windows
on  Windows,  download  modules*  from:
http://www.lfd.uci.edu/~gohlke/pythonlibs
*)  vispy,  numpy &  pyglet
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 30
Our  first  App
import sys
from vispy import app, gloo
canvas = app.Canvas(app='pyglet', keys='interactive', size=(800, 600))
@canvas.connect
def on_draw(event):
gloo.set_clear_color((1.0, 0.0, 0.0, 1.0))
gloo.clear()
canvas.show()
if __name__ == '__main__':
app.run()
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 31
Use  Shaders,  Geometry
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 32
Jupyter Notebook  (WebGL Output)
• Virtual  Globe using WebGL
• Open  Source  Project  started in  
April  2011
• JavaScript  Library  for rapid  
developmentof web-­based
geospatial 3D  applications
• Data  Processing  in  Python
332.5.2016 33
Python  for Data  Processing
Institute  of  Geomatics  Engineering
2.5.2016Institute  of  Geomatics  Engineering 34
Demo
2.5.2016Institute  of  Geomatics  Engineering
Streaming  3D-­Geometry  Tiles
MapData  ©  OpenStreetMap  contributors
35
BTh Hürbi/Daetwyler,  MTh Lucas  Oertli,  2013
2.5.2016Institute  of  Geomatics  Engineering 36
Streaming  Example:  3D  Geometry  using  OSM  and  “BOI”  (worldwide   streaming)
MTh Lucas  Oertli,  2013
2.5.2016Institute  of  Geomatics  Engineering 37
Streaming  Example:  Osnabrück (local  streaming)
Created  by  Geoplex with  Plexmap,  based  on  OpenWebGlobe
2.5.2016Institute  of  Geomatics  Engineering 38
Some  Problems  I  have  with  (Web-­Based)  Virtual  Globes
• Unfortunately,   WebGL compatibility  is  still  an  issue…  a  “fallback”  is  required
• Most  people   still  prefer  2D  Maps
• Navigation   in  3D  is  too  complicated  for  many  users…
• In  the  “Geo-­World”,   3D  Models  are  usually  not  built  by  3D  game   designers:
• Often  there   are  “too  many”  &  “too  big”  textures  per  object
• Different  details  per  3D-­object
• Remember   “Google   3D  Warehouse”
• Level  of  Detail:  Generalization   in  2D  is  accepted,    but  not  in  3D!
• Limited  number   of  people   actually  do  have  data  of  the  whole  world…
• Most  virtual  globe   based  applications  I  know  are  limited  to  a  certain  region/country/…
• Too  slow  (bandwidth/3D   rendering)   on  mobile  devices
• Too  power   consuming  on  mobile  devices
2.5.2016Institute  of  Geomatics  Engineering 39
Bringing  together  2D  Maps  and  3D  Globes
Concept:  Prerender a  3D  Scene  using  a  high  quality  offline  3D  renderer  using  an  
orthographic   projection  and  create  “2D”  image  tiles.  
Constant,  minimal  bandwidth  
regardless   of  the  complexity   of  the  
3D  city  model
MTh Markus  Jung,  2014
(Similar  approaches  were  already  done  by  Döllner et  al.  and  also  go  back  to  some  concepts  by  Sutherland)
2.5.2016Institute  of  Geomatics  Engineering 40
Display  in  the  Webbrowser as  “2D  Map”
MTh Markus  Jung,  2014
2.5.2016Institute  of  Geomatics  Engineering 41
Display  in  the  Webbrowser as  Panorama
MTh Markus  Jung,  2014
2.5.2016Institute  of  Geomatics  Engineering 42
High  Resolution  Geometry  doesn’t  matter:  Same  download/render  speed
MTh Markus  Jung,  2014
2.5.2016Institute  of  Geomatics  Engineering 43
The  3dmaps.ch  Project:  Bringing  it  all  together!
3DPS  (3D  Portrayal  Service)
2.5.2016Institute  of  Geomatics  Engineering 44
Viewer  API
map3d.js   Library
var map = new map3d.map("mapcanvas");
var layer = new map3d.imageLayer([
"http://t1.3dmaps.ch/tiles/teatime",
"http://t2.3dmaps.ch/tiles/teatime",
"http://t3.3dmaps.ch/tiles/teatime",
"http://t4.3dmaps.ch/tiles/teatime"]) });
layer.addTo(map);
var teapot_marker = new map3d.marker("Green Teapot", [0,0,0]);
teapot_marker.addTo(map);
var cube_maker = new map3d.marker("Green Cube", [80.5, 11.5, 10.5]);
cube_maker.addTo(map);
2.5.2016Institute  of  Geomatics  Engineering 45
Different  prerenderings for  different  pitch/view  direction
Every  Prerendering needs  storage,  but  with  todays  cloud  storage  pricing  this  is  not  really  an  issue  anymore!  
2.5.2016Institute  of  Geomatics  Engineering 46
Why  a  teapot  if  we  have  (open)  Geo  Data  ?!!
Use  case  1:  Rotterdam  Dataset
90  CityGML files  with  a  total  size  of  2.72  GB
26'474   textures  with  a  size  of  1024x1024,   an  uncompressed   total  data   volume  of  around   77  GB
Orthophoto uncompressed   430  GB
2.5.2016Institute  of  Geomatics  Engineering 47
Use  case  2:  The  Roman  city  of  Augusta  Raurica
A  digital  reconstruction  of  the  historical  Roman  City  of  Augusta  Raurica,  created  at  
the  institute  of  Geomatics Engineering at  the  FHNW.  3D-­Printed  to  create  a  bronze  
model.  
2.5.2016Institute  of  Geomatics  Engineering 48
The  3D  Model
About  4000  geospatial  objects  (buildings,  roads,  vegetation  features,  terrain,  …)  
at  three  levels  of  detail.  
3D  Geometry &  Textures  around  1  GB
2.5.2016Institute  of  Geomatics  Engineering 49
Prerendering the  Model:  Color  Map,  Normal  Map,  Id-­Map,  Depth  Map
Dynamic  Lighting
Normal   Map:  for  Object  Identification:  
Highlighting,   special  effects,  …
Depth  Map:   for  3D  Position,   special  effects,  …  
2.5.2016Institute  of  Geomatics  Engineering 50
3D  View  in  the  (mobile)  webbrowser with  dynamic  Lighting
2.5.2016Institute  of  Geomatics  Engineering 51
The  Viewer
• The  viewer  basically  uses  the  same  concepts  as  a  “2D  Map  Viewer”
• map3d.js  supports  WebGL
There  is  also  a  pure  canvas  version  available  as  fallback
• Operations  like  “highlighting”  are  highly  customizable.  Basically  it  is  an  image  
processing  operation  which  runs  on  the  GPU  (WebGL Version).  If  there  is  no  
WebGL available,  the  operation  is  done  using  JavaScript.
2.5.2016Institute  of  Geomatics  Engineering 52
Outlook  (1)
• Implement  more  effects  and  lighting  models,  
dynamic  snow/water/etc.  using  depth  map  &  normal  map
• Layer  management  (include  point  clouds,  mix  different  layers  using  depth  
map
• Add  realtime content  (“mix  real  3D  Object”)  using  depth-­map
• Release  map3d.js  as  Open  Source  (around  Q2/2016)
2.5.2016Institute  of  Geomatics  Engineering 53
Outlook  (2)
More  Rendering  Effects,  for  example  Screen  Space  Ambient  Occlusion  (SSAO)
BTh,  Daniel  Rettenmund 2015
2.5.2016Institute  of  Geomatics  Engineering 54
Outlook  (3)
• “isometric  maps”  will  be  one  of  many  features  of  OpenWebGlobe 2
• “isometric  maps”  will  be  the  default  3D  Viewer  in  OpenWebGlobe 2
• Switch  to  “real  3D”  anytime
• State  is  saved:  
• The  best  matching  viewpoint  is  selected  when  switching
• If  you  highlight  an  object  in  “isometric  mode”,  it  will  be  highlighted  in  
“Real  3D”  mode  too.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 55
Conclusion
3  ways  to  use  3D  Graphics  in  Python  were  presented:
1. Using  Python  &  Blender  (including  Blender  Game  Engine)
2. Using  Low  a  Level  API  (OpenGL/WebGL)
3. Using  Python  to  process  3D  Views
Which  approach  is  the  best  for  Python  ?  This  really    depends  the  application  
domain.  
I  am  quite  sceptic  with  2.  -­ If  you  want  to  create  a  complex  3D  game,  I  don’t  
recommend  using  Python  at  this  time.
I  believe  Python  is  great  for  1.  and  3.
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 56
Next  Meetup:  February  9th,  2016  in  Muttenz (near  Basel)  18:00  to  21:00
http://www.pybasel.ch
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 57
1st GeoPython Conference
http://www.geopython.net
Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 58
Q&A

Contenu connexe

Tendances

IRJET- Detection and Classification of Skin Diseases using Different Colo...
IRJET-  	  Detection and Classification of Skin Diseases using Different Colo...IRJET-  	  Detection and Classification of Skin Diseases using Different Colo...
IRJET- Detection and Classification of Skin Diseases using Different Colo...IRJET Journal
 
Artificial Intelligence for Visual Arts
Artificial Intelligence for Visual ArtsArtificial Intelligence for Visual Arts
Artificial Intelligence for Visual ArtsPetteriTeikariPhD
 
Git Aliases of the Gods!
Git Aliases of the Gods!Git Aliases of the Gods!
Git Aliases of the Gods!Atlassian
 
Comparison of SVN and Git
Comparison of SVN and GitComparison of SVN and Git
Comparison of SVN and GitDaniel Wieth
 
Minecraft in 500 lines of Python with Pyglet
Minecraft in 500 lines of Python with PygletMinecraft in 500 lines of Python with Pyglet
Minecraft in 500 lines of Python with PygletRichard Donkin
 
第15回 配信講義 計算科学技術特論A(2021)
第15回 配信講義 計算科学技術特論A(2021)第15回 配信講義 計算科学技術特論A(2021)
第15回 配信講義 計算科学技術特論A(2021)RCCSRENKEI
 
Advanced Web Programming (November – 2018) [Choice Based | Question Paper]
Advanced Web Programming (November – 2018) [Choice Based | Question Paper]Advanced Web Programming (November – 2018) [Choice Based | Question Paper]
Advanced Web Programming (November – 2018) [Choice Based | Question Paper]Mumbai B.Sc.IT Study
 
Generative Adversarial Networks and Their Applications in Medical Imaging
Generative Adversarial Networks  and Their Applications in Medical ImagingGenerative Adversarial Networks  and Their Applications in Medical Imaging
Generative Adversarial Networks and Their Applications in Medical ImagingSanghoon Hong
 
State of mago3D, An Open Source Based Digital Twin Platform
State of mago3D, An Open Source Based Digital Twin PlatformState of mago3D, An Open Source Based Digital Twin Platform
State of mago3D, An Open Source Based Digital Twin PlatformSANGHEE SHIN
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Omar Fathy
 
Generative Adversarial Networks
Generative Adversarial NetworksGenerative Adversarial Networks
Generative Adversarial NetworksMark Chang
 
Getting Started with SDR in Python
Getting Started with SDR in PythonGetting Started with SDR in Python
Getting Started with SDR in PythonTaisuke Yamada
 
Next higher number with same number of binary bits set
Next higher number with same number of binary bits setNext higher number with same number of binary bits set
Next higher number with same number of binary bits setGowriKumar Chandramouli
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networksDing Li
 
Anomaly Detection Using Generative Adversarial Network(GAN)
Anomaly Detection Using Generative Adversarial Network(GAN)Anomaly Detection Using Generative Adversarial Network(GAN)
Anomaly Detection Using Generative Adversarial Network(GAN)Asha Aher
 
Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...
Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...
Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...Universitat Politècnica de Catalunya
 
Optimization in Deep Learning
Optimization in Deep LearningOptimization in Deep Learning
Optimization in Deep LearningYan Xu
 

Tendances (20)

IRJET- Detection and Classification of Skin Diseases using Different Colo...
IRJET-  	  Detection and Classification of Skin Diseases using Different Colo...IRJET-  	  Detection and Classification of Skin Diseases using Different Colo...
IRJET- Detection and Classification of Skin Diseases using Different Colo...
 
Git basic
Git basicGit basic
Git basic
 
Artificial Intelligence for Visual Arts
Artificial Intelligence for Visual ArtsArtificial Intelligence for Visual Arts
Artificial Intelligence for Visual Arts
 
Git Aliases of the Gods!
Git Aliases of the Gods!Git Aliases of the Gods!
Git Aliases of the Gods!
 
Comparison of SVN and Git
Comparison of SVN and GitComparison of SVN and Git
Comparison of SVN and Git
 
Minecraft in 500 lines of Python with Pyglet
Minecraft in 500 lines of Python with PygletMinecraft in 500 lines of Python with Pyglet
Minecraft in 500 lines of Python with Pyglet
 
第15回 配信講義 計算科学技術特論A(2021)
第15回 配信講義 計算科学技術特論A(2021)第15回 配信講義 計算科学技術特論A(2021)
第15回 配信講義 計算科学技術特論A(2021)
 
Advanced Web Programming (November – 2018) [Choice Based | Question Paper]
Advanced Web Programming (November – 2018) [Choice Based | Question Paper]Advanced Web Programming (November – 2018) [Choice Based | Question Paper]
Advanced Web Programming (November – 2018) [Choice Based | Question Paper]
 
Generative Adversarial Networks and Their Applications in Medical Imaging
Generative Adversarial Networks  and Their Applications in Medical ImagingGenerative Adversarial Networks  and Their Applications in Medical Imaging
Generative Adversarial Networks and Their Applications in Medical Imaging
 
State of mago3D, An Open Source Based Digital Twin Platform
State of mago3D, An Open Source Based Digital Twin PlatformState of mago3D, An Open Source Based Digital Twin Platform
State of mago3D, An Open Source Based Digital Twin Platform
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1
 
Generative Adversarial Networks
Generative Adversarial NetworksGenerative Adversarial Networks
Generative Adversarial Networks
 
Getting Started with SDR in Python
Getting Started with SDR in PythonGetting Started with SDR in Python
Getting Started with SDR in Python
 
Next higher number with same number of binary bits set
Next higher number with same number of binary bits setNext higher number with same number of binary bits set
Next higher number with same number of binary bits set
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
Anomaly Detection Using Generative Adversarial Network(GAN)
Anomaly Detection Using Generative Adversarial Network(GAN)Anomaly Detection Using Generative Adversarial Network(GAN)
Anomaly Detection Using Generative Adversarial Network(GAN)
 
Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...
Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...
Transfer Learning and Domain Adaptation (D2L3 2017 UPC Deep Learning for Comp...
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git basics
Git basicsGit basics
Git basics
 
Optimization in Deep Learning
Optimization in Deep LearningOptimization in Deep Learning
Optimization in Deep Learning
 

En vedette

Minecraft in 500 lines with Pyglet - PyCon UK
Minecraft in 500 lines with Pyglet - PyCon UKMinecraft in 500 lines with Pyglet - PyCon UK
Minecraft in 500 lines with Pyglet - PyCon UKRichard Donkin
 
Computação Gráfica em Python
Computação Gráfica em PythonComputação Gráfica em Python
Computação Gráfica em Pythongsroma
 
Introduction to Game programming with PyGame Part 1
Introduction to Game programming with PyGame Part 1Introduction to Game programming with PyGame Part 1
Introduction to Game programming with PyGame Part 1Abhishek Mishra
 
A Simple 3D Graphics Engine Written in Python and Allegro
A Simple 3D Graphics Engine Written in Python and AllegroA Simple 3D Graphics Engine Written in Python and Allegro
A Simple 3D Graphics Engine Written in Python and Allegrosnowfarthing
 
Introduction to Game Programming Tutorial
Introduction to Game Programming TutorialIntroduction to Game Programming Tutorial
Introduction to Game Programming TutorialRichard Jones
 
Programming physics games with Python and OpenGL
Programming physics games with Python and OpenGLProgramming physics games with Python and OpenGL
Programming physics games with Python and OpenGLDaniel Pope
 
Programando em python interfaces graficas com tk
Programando em python   interfaces graficas com tkProgramando em python   interfaces graficas com tk
Programando em python interfaces graficas com tksamuelthiago
 
Using SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonUsing SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonDavid Beazley (Dabeaz LLC)
 
Processamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesProcessamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesAldisio Medeiros
 
PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...
PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...
PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...Plotly
 
Microprocesadorrrrrrrr
MicroprocesadorrrrrrrrMicroprocesadorrrrrrrr
MicroprocesadorrrrrrrrTeresaBosca
 
B&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade constructionB&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade constructionBouwmaterialen_Innovatie
 
Is Heart Disease Contagious? Issues in Communicability and Chronic Disease
Is Heart Disease Contagious? Issues in Communicability and Chronic DiseaseIs Heart Disease Contagious? Issues in Communicability and Chronic Disease
Is Heart Disease Contagious? Issues in Communicability and Chronic DiseaseColumbiaPublicHealth
 
My Visual Artworks from High School
My Visual Artworks from High SchoolMy Visual Artworks from High School
My Visual Artworks from High SchoolSarah Liddemore
 
B&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade constructionB&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade constructionBouwmaterialen_Innovatie
 

En vedette (20)

Minecraft in 500 lines with Pyglet - PyCon UK
Minecraft in 500 lines with Pyglet - PyCon UKMinecraft in 500 lines with Pyglet - PyCon UK
Minecraft in 500 lines with Pyglet - PyCon UK
 
Computação Gráfica em Python
Computação Gráfica em PythonComputação Gráfica em Python
Computação Gráfica em Python
 
Introduction to Game programming with PyGame Part 1
Introduction to Game programming with PyGame Part 1Introduction to Game programming with PyGame Part 1
Introduction to Game programming with PyGame Part 1
 
A Simple 3D Graphics Engine Written in Python and Allegro
A Simple 3D Graphics Engine Written in Python and AllegroA Simple 3D Graphics Engine Written in Python and Allegro
A Simple 3D Graphics Engine Written in Python and Allegro
 
Introduction to Game Programming Tutorial
Introduction to Game Programming TutorialIntroduction to Game Programming Tutorial
Introduction to Game Programming Tutorial
 
Programming physics games with Python and OpenGL
Programming physics games with Python and OpenGLProgramming physics games with Python and OpenGL
Programming physics games with Python and OpenGL
 
Programando em python interfaces graficas com tk
Programando em python   interfaces graficas com tkProgramando em python   interfaces graficas com tk
Programando em python interfaces graficas com tk
 
Using SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonUsing SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with Python
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
 
Processamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesProcessamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e Aplicações
 
Interfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIGInterfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIG
 
PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...
PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...
PLOTCON NYC: The Architecture of Jupyter: Protocols for Interactive Data Expl...
 
Complex Intervention to Promote Uptake of School-based HPV Vaccination. Cris...
	Complex Intervention to Promote Uptake of School-based HPV Vaccination. Cris...	Complex Intervention to Promote Uptake of School-based HPV Vaccination. Cris...
Complex Intervention to Promote Uptake of School-based HPV Vaccination. Cris...
 
Shauna downs human_health_and_nutrition_security_in_australia
Shauna downs human_health_and_nutrition_security_in_australiaShauna downs human_health_and_nutrition_security_in_australia
Shauna downs human_health_and_nutrition_security_in_australia
 
Microprocesadorrrrrrrr
MicroprocesadorrrrrrrrMicroprocesadorrrrrrrr
Microprocesadorrrrrrrr
 
1.3 food systems innovation presentation v2
1.3 food systems innovation presentation v21.3 food systems innovation presentation v2
1.3 food systems innovation presentation v2
 
B&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade constructionB&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade construction
 
Is Heart Disease Contagious? Issues in Communicability and Chronic Disease
Is Heart Disease Contagious? Issues in Communicability and Chronic DiseaseIs Heart Disease Contagious? Issues in Communicability and Chronic Disease
Is Heart Disease Contagious? Issues in Communicability and Chronic Disease
 
My Visual Artworks from High School
My Visual Artworks from High SchoolMy Visual Artworks from High School
My Visual Artworks from High School
 
B&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade constructionB&i2013 donderdag 15.15_zaal_d_integral facade construction
B&i2013 donderdag 15.15_zaal_d_integral facade construction
 

Similaire à 3D Computer Graphics with Python

Jeff Fischer - Python and IoT: From Chips and Bits to Data Science
Jeff Fischer - Python and IoT: From Chips and Bits to Data ScienceJeff Fischer - Python and IoT: From Chips and Bits to Data Science
Jeff Fischer - Python and IoT: From Chips and Bits to Data SciencePyData
 
Unleashing the Power of Python Using the New Minitab/Python Integration Modul...
Unleashing the Power of Python Using the New Minitab/Python Integration Modul...Unleashing the Power of Python Using the New Minitab/Python Integration Modul...
Unleashing the Power of Python Using the New Minitab/Python Integration Modul...Minitab, LLC
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitcbenDesigning
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1benDesigning
 
Samsung SDS OpeniT - The possibility of Python
Samsung SDS OpeniT - The possibility of PythonSamsung SDS OpeniT - The possibility of Python
Samsung SDS OpeniT - The possibility of PythonInsuk (Chris) Cho
 
Introduction to Machine Learning by MARK
Introduction to Machine Learning by MARKIntroduction to Machine Learning by MARK
Introduction to Machine Learning by MARKMRKUsafzai0607
 
第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」
第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」
第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」Tsukasa Sugiura
 
6 surprising ways_to_use_jupyter_0
6 surprising ways_to_use_jupyter_06 surprising ways_to_use_jupyter_0
6 surprising ways_to_use_jupyter_0Weghlis Azzariou
 
Using Data Science & Serverless Python to find apartment in Toronto
Using Data Science & Serverless Python to find apartment in TorontoUsing Data Science & Serverless Python to find apartment in Toronto
Using Data Science & Serverless Python to find apartment in TorontoDaniel Zivkovic
 
Scientific Visualization
Scientific VisualizationScientific Visualization
Scientific VisualizationJosef Heinen
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopJachym Cepicky
 
iPhone/iPad Development with Titanium
iPhone/iPad Development with TitaniumiPhone/iPad Development with Titanium
iPhone/iPad Development with TitaniumAxway Appcelerator
 
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CAAppcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CAJeff Haynie
 
Vipul divyanshu documentation on Kinect and Motion Tracking
Vipul divyanshu documentation  on Kinect and Motion TrackingVipul divyanshu documentation  on Kinect and Motion Tracking
Vipul divyanshu documentation on Kinect and Motion TrackingVipul Divyanshu
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teamsJamie Thomas
 
2020-06-25 Valofest - Introduction to SharePoint Spaces
2020-06-25 Valofest - Introduction to SharePoint Spaces2020-06-25 Valofest - Introduction to SharePoint Spaces
2020-06-25 Valofest - Introduction to SharePoint SpacesPatrick Guimonet
 
Computer vision and Open CV
Computer vision and Open CVComputer vision and Open CV
Computer vision and Open CVChariza Pladin
 
Kinect kunkuk final_
Kinect kunkuk final_Kinect kunkuk final_
Kinect kunkuk final_Yunkyu Choi
 
The mag pi-issue-28-en
The mag pi-issue-28-enThe mag pi-issue-28-en
The mag pi-issue-28-enNguyen Nam
 
Webinar - Analyzing Video
Webinar - Analyzing VideoWebinar - Analyzing Video
Webinar - Analyzing VideoTuri, Inc.
 

Similaire à 3D Computer Graphics with Python (20)

Jeff Fischer - Python and IoT: From Chips and Bits to Data Science
Jeff Fischer - Python and IoT: From Chips and Bits to Data ScienceJeff Fischer - Python and IoT: From Chips and Bits to Data Science
Jeff Fischer - Python and IoT: From Chips and Bits to Data Science
 
Unleashing the Power of Python Using the New Minitab/Python Integration Modul...
Unleashing the Power of Python Using the New Minitab/Python Integration Modul...Unleashing the Power of Python Using the New Minitab/Python Integration Modul...
Unleashing the Power of Python Using the New Minitab/Python Integration Modul...
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
 
Samsung SDS OpeniT - The possibility of Python
Samsung SDS OpeniT - The possibility of PythonSamsung SDS OpeniT - The possibility of Python
Samsung SDS OpeniT - The possibility of Python
 
Introduction to Machine Learning by MARK
Introduction to Machine Learning by MARKIntroduction to Machine Learning by MARK
Introduction to Machine Learning by MARK
 
第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」
第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」
第38回 名古屋CV・PRML勉強会 「Kinect v2本の紹介とPCLの概要」
 
6 surprising ways_to_use_jupyter_0
6 surprising ways_to_use_jupyter_06 surprising ways_to_use_jupyter_0
6 surprising ways_to_use_jupyter_0
 
Using Data Science & Serverless Python to find apartment in Toronto
Using Data Science & Serverless Python to find apartment in TorontoUsing Data Science & Serverless Python to find apartment in Toronto
Using Data Science & Serverless Python to find apartment in Toronto
 
Scientific Visualization
Scientific VisualizationScientific Visualization
Scientific Visualization
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS Workshop
 
iPhone/iPad Development with Titanium
iPhone/iPad Development with TitaniumiPhone/iPad Development with Titanium
iPhone/iPad Development with Titanium
 
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CAAppcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
 
Vipul divyanshu documentation on Kinect and Motion Tracking
Vipul divyanshu documentation  on Kinect and Motion TrackingVipul divyanshu documentation  on Kinect and Motion Tracking
Vipul divyanshu documentation on Kinect and Motion Tracking
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
 
2020-06-25 Valofest - Introduction to SharePoint Spaces
2020-06-25 Valofest - Introduction to SharePoint Spaces2020-06-25 Valofest - Introduction to SharePoint Spaces
2020-06-25 Valofest - Introduction to SharePoint Spaces
 
Computer vision and Open CV
Computer vision and Open CVComputer vision and Open CV
Computer vision and Open CV
 
Kinect kunkuk final_
Kinect kunkuk final_Kinect kunkuk final_
Kinect kunkuk final_
 
The mag pi-issue-28-en
The mag pi-issue-28-enThe mag pi-issue-28-en
The mag pi-issue-28-en
 
Webinar - Analyzing Video
Webinar - Analyzing VideoWebinar - Analyzing Video
Webinar - Analyzing Video
 

Plus de Martin Christen

Opening Session GeoPython & Python Machine Learning Conference
Opening Session GeoPython & Python Machine Learning Conference Opening Session GeoPython & Python Machine Learning Conference
Opening Session GeoPython & Python Machine Learning Conference Martin Christen
 
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHubEuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHubMartin Christen
 
Lightning Talk GeoBeer #25
Lightning Talk GeoBeer #25Lightning Talk GeoBeer #25
Lightning Talk GeoBeer #25Martin Christen
 
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...Martin Christen
 
Teaching with JupyterHub - lessons learned
Teaching with JupyterHub - lessons learnedTeaching with JupyterHub - lessons learned
Teaching with JupyterHub - lessons learnedMartin Christen
 
Mixed Reality Anwendungen mit 3D-Stadtmodellen
Mixed Reality Anwendungen mit 3D-StadtmodellenMixed Reality Anwendungen mit 3D-Stadtmodellen
Mixed Reality Anwendungen mit 3D-StadtmodellenMartin Christen
 
Gettiing Started with IoT using Raspberry Pi and Python
Gettiing Started with IoT using Raspberry Pi and PythonGettiing Started with IoT using Raspberry Pi and Python
Gettiing Started with IoT using Raspberry Pi and PythonMartin Christen
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python DevelopmentMartin Christen
 
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...Martin Christen
 
OpenStreetMap in 3D using Python
OpenStreetMap in 3D using PythonOpenStreetMap in 3D using Python
OpenStreetMap in 3D using PythonMartin Christen
 
3d mit Python (PythonCamp)
3d mit Python (PythonCamp)3d mit Python (PythonCamp)
3d mit Python (PythonCamp)Martin Christen
 
Webilea: The OpenWebGlobe Project
Webilea: The OpenWebGlobe ProjectWebilea: The OpenWebGlobe Project
Webilea: The OpenWebGlobe ProjectMartin Christen
 
OpenWebGlobe - GeoSharing Bern
OpenWebGlobe - GeoSharing BernOpenWebGlobe - GeoSharing Bern
OpenWebGlobe - GeoSharing BernMartin Christen
 

Plus de Martin Christen (15)

Opening Session GeoPython & Python Machine Learning Conference
Opening Session GeoPython & Python Machine Learning Conference Opening Session GeoPython & Python Machine Learning Conference
Opening Session GeoPython & Python Machine Learning Conference
 
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHubEuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
EuroPython 2019: GeoSpatial Analysis using Python and JupyterHub
 
Lightning Talk GeoBeer #25
Lightning Talk GeoBeer #25Lightning Talk GeoBeer #25
Lightning Talk GeoBeer #25
 
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
High-Quality Server Side Rendering using the OGC’s 3D Portrayal Service – App...
 
Teaching with JupyterHub - lessons learned
Teaching with JupyterHub - lessons learnedTeaching with JupyterHub - lessons learned
Teaching with JupyterHub - lessons learned
 
Mixed Reality Anwendungen mit 3D-Stadtmodellen
Mixed Reality Anwendungen mit 3D-StadtmodellenMixed Reality Anwendungen mit 3D-Stadtmodellen
Mixed Reality Anwendungen mit 3D-Stadtmodellen
 
Presentation final 72
Presentation final 72Presentation final 72
Presentation final 72
 
Gettiing Started with IoT using Raspberry Pi and Python
Gettiing Started with IoT using Raspberry Pi and PythonGettiing Started with IoT using Raspberry Pi and Python
Gettiing Started with IoT using Raspberry Pi and Python
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
Visualisation of Complex 3D City Models on Mobile Webbrowsers Using Cloud-bas...
 
OpenStreetMap in 3D using Python
OpenStreetMap in 3D using PythonOpenStreetMap in 3D using Python
OpenStreetMap in 3D using Python
 
3d mit Python (PythonCamp)
3d mit Python (PythonCamp)3d mit Python (PythonCamp)
3d mit Python (PythonCamp)
 
Webilea: The OpenWebGlobe Project
Webilea: The OpenWebGlobe ProjectWebilea: The OpenWebGlobe Project
Webilea: The OpenWebGlobe Project
 
OpenWebGlobe - GeoSharing Bern
OpenWebGlobe - GeoSharing BernOpenWebGlobe - GeoSharing Bern
OpenWebGlobe - GeoSharing Bern
 
GeoBeer July 3rd, 2013
GeoBeer July 3rd, 2013GeoBeer July 3rd, 2013
GeoBeer July 3rd, 2013
 

Dernier

Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 

Dernier (20)

Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

3D Computer Graphics with Python

  • 1. Martin  Christen FHNW Hochschule   für  Architektur,  Bau  und  Geomatik Institut  Vermessung   und  Geoinformation martin.christen@fhnw.ch @MartinChristen 3D  Computer  Graphics  with Python „3D  Graphics  the Pythonic Way“ Swiss  Python  Summit
  • 2. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 2 About this talk In  this  talk  several  technologies  around  3D  graphics  for  Python  are  presented.   • A  brief  introduction  to  scripting  Blender shows  the  possibilities  of  creating   complex  3D  Worlds  and  games.   • The  second  part  shows  how  to  create  low  level  3D  applications  and  how   Python  is  used  to  create  preprocessed  3D  worlds  for  the  webbrowser.
  • 3. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 3 PART  I:  Python  and  Blender What  is  Blender  ? • Blender  is  a  free  and  open  source  3D  creation  suite  for: • Modelling • Animation • Simulation • Rendering • Video  Editing • Motion  Tracking • Game  Creation • …and  more..   • Runs  on  Linux,  MacOS and  Windows
  • 4. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 4 Cycles  Demo  Reel  (2015)  – All  made  with  Blender https://www.youtube.com/watch?v=wDRTjzLNK0g
  • 5. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 5 Blender  Motion  Tracking https://www.youtube.com/watch?v=2AvQiOf2IGA
  • 6. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 6 Python  Scripting  in  Blender Choose  the  Scripting  View:
  • 7. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 7 Python  Scripting  in  Blender Now  you  see  the  Python  3.x  console:
  • 8. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 8 The  first  program: Accessing  Data  is  quite  simple,  use  the  module  bpy.data: list(bpy.data.objects) list(bpy.data.scenes) list(bpy.data.materials) So  let’s  enter  the  following  in  the  Python  console: >>> list(bpy.data.objects)
  • 9. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 9 List  of  all  objects  in  the  scene: And  that  is  pretty  much  what  you  see in  the  scene  graph:
  • 10. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 10 Python  Scripting  in  Blender Open  the  Tab  in  the  3d  View  and  select  “Create”:
  • 11. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 11 Python  Scripting  in  Blender When  you  hold  mouse  over  “Cube”  you  will  see  the  Python  Command  how  to   create  a  cube!  Just  note  it  and  click  on  cube.
  • 12. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 12 Python  Scripting  in  Blender When  you  create  the  cube  you  will  see  the  exact  command  that  was  called  to   create  it.  You  see  most  actions  as  Python code  there.
  • 13. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 13 Python  Scripting  in  Blender:  Adding  (predefined)  Objects Right  click  on  the  text  (highligh)  and  copy  the  text  (ctrl-­c) bpy.ops.mesh.primitive_cube_add(radius=1, view_align=False, enter_editmode=False, location=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)) Hit  undo  (ctrl-­z) And  now  we  modity the  command  using  location=(0,3,0)  and  radius=2: bpy.ops.mesh.primitve_cube_add(radius=2, location=(0,3,0))
  • 14. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 14 Python  Scripting  in  Blender:  Transform  objects If  we  move  the  new  cube  by  pressing  and  holding  the  blue  z-­Axis  we  can  see  the   following  command: bpy.ops.transform.translate(value=(0, 0, 3.10625), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, release_confirm=True) That  is  how  an  object  is  translated
  • 15. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 15 Python  Scripting  in  Blender:  Operations Apply  Operations  like  Subdivision: bpy.ops.object.mode_set(mode='EDIT') bpy.ops.mesh.subdivide() bpy.ops.mesh.subdivide() bpy.ops.mesh.subdivide() bpy.ops.object.mode_set(mode=OBJECT')
  • 16. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 16 Creating  Meshes  for  example:  Tetrahedron import bpy s = 0.5**0.5 # 0.5*sqrt(2) verts = ((s,s,-1), (s,-s,-1), (-s,-s,-1), (-s,s,-1), (0,0,1)) faces = ((1,0,4), (4,2,1), (4,3,2), (4,0,3), (0,1,2,3)) mesh = bpy.data.meshes.new("TetrahedronMesh") object = bpy.data.objects.new("TetrahedronObject", mesh) object.location = (0,0,0) # origin scene = bpy.context.scene scene.objects.link(object) scene.objects.active = object object.select = True mesh.from_pydata(verts, [], faces) # vertices, edges, faces mesh.update()
  • 17. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 17 Real  Life  Example Using  Python  to  optimize  3D  objects: bpy.ops.object.select_all(action='DESELECT') bpy.context.scene.objects.active = bpy.data.objects[1] bpy.ops.object.select_all(action='SELECT') bpy.ops.object.join() bpy.ops.object.mode_set(mode='EDIT') bpy.ops.mesh.dissolve_limited() bpy.ops.mesh.remove_doubles(threshold=0.01) bpy.ops.mesh.select_all(action='DESELECT') bpy.ops.mesh.select_interior_faces() bpy.ops.mesh.delete(type='FACE') bpy.ops.object.mode_set(mode='OBJECT')
  • 18. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 18 Historic  Roman  City  “Augusta  Raurica”  – Generated  with  ESRI  City  Engine
  • 19. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 19 Cleaned  up:  Jour,  Remove  Double  Vertices/Faces,  Interior  Faces
  • 20. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 20 Final  Result  (125’929  triangles  optimized  to  56’216  triangles)
  • 21. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 21
  • 22. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 22 PART  II:  Low  Level  APIs • OpenGL API  bindings • Open  Graphics  Library -­ based on  C • http://pyopengl.sourceforge.net/ • DirectPython 11:  Direct3D  11  (Windows  only) • http://directpython11.sourceforge.net/ • Not  Cross  Platform
  • 23. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 23 PyOpenGL Supports  OpenGL  1.1  to 4.4 Works  with popular GUI  libraries,  for example: • wxPython • PyQT /  PySide • PyGTK • PyGame • Tkinter (+  Togl widget) I‘m not  going to make an  OpenGL  introduction here...
  • 24. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 24 How  OpenGL  Works Primitives   (=Points,  Linies,  Triangles)  are converted to Fragments  (Pixels). Program Vertex-­Operations (e.g.  projection,  transformation). Program Fragment-­Operations for shading/lighting/texturing. Vertex/Fragment  Shaders [run on  the GPU  and]  are written in  GLSL.
  • 25. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 25 Vispy:   http://vispy.org/ (  https://github.com/vispy/vispy ) VisPy is  a  young  library  under  heavy  development  at  this  time.  It  targets  two   categories  of  users: • Users  knowing  OpenGL,  or  willing  to  learn  OpenGL,  who  want  to  create   beautiful  and  fast  interactive  2D/3D  visualizations  in  Python  as  easily  as   possible. • Scientists  without  any  knowledge  of  OpenGL,  who  are  seeking  a  high-­level,   high-­performance  plotting  toolkit.
  • 26. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 26 Install  vispy 1) Numpy is  required 2) OpenGL  is  required 3) A  compatible  GUI  Toolkit  is  required Then: pip install vispy More  info:  http://vispy.org/installation.html
  • 27. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 27 Example,  lets  create  a  virtual  environment  named  “gl” python3.5 -m venv gl source gl/bin/activate pip install vispy # also installs numpy pip install pyglet …  do  your  stuff  … Deactivate
  • 28. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 28 Development  Version  (currently  0.5.0.dev0) git clone git://github.com/vispy/vispy.git cd vispy python3.5 setup.py develop (Only  this  version  support  Jupyter Notebook!)
  • 29. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 29 Windows on  Windows,  download  modules*  from: http://www.lfd.uci.edu/~gohlke/pythonlibs *)  vispy,  numpy &  pyglet
  • 30. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 30 Our  first  App import sys from vispy import app, gloo canvas = app.Canvas(app='pyglet', keys='interactive', size=(800, 600)) @canvas.connect def on_draw(event): gloo.set_clear_color((1.0, 0.0, 0.0, 1.0)) gloo.clear() canvas.show() if __name__ == '__main__': app.run()
  • 31. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 31 Use  Shaders,  Geometry
  • 32. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 32 Jupyter Notebook  (WebGL Output)
  • 33. • Virtual  Globe using WebGL • Open  Source  Project  started in   April  2011 • JavaScript  Library  for rapid   developmentof web-­based geospatial 3D  applications • Data  Processing  in  Python 332.5.2016 33 Python  for Data  Processing Institute  of  Geomatics  Engineering
  • 34. 2.5.2016Institute  of  Geomatics  Engineering 34 Demo
  • 35. 2.5.2016Institute  of  Geomatics  Engineering Streaming  3D-­Geometry  Tiles MapData  ©  OpenStreetMap  contributors 35 BTh Hürbi/Daetwyler,  MTh Lucas  Oertli,  2013
  • 36. 2.5.2016Institute  of  Geomatics  Engineering 36 Streaming  Example:  3D  Geometry  using  OSM  and  “BOI”  (worldwide   streaming) MTh Lucas  Oertli,  2013
  • 37. 2.5.2016Institute  of  Geomatics  Engineering 37 Streaming  Example:  Osnabrück (local  streaming) Created  by  Geoplex with  Plexmap,  based  on  OpenWebGlobe
  • 38. 2.5.2016Institute  of  Geomatics  Engineering 38 Some  Problems  I  have  with  (Web-­Based)  Virtual  Globes • Unfortunately,   WebGL compatibility  is  still  an  issue…  a  “fallback”  is  required • Most  people   still  prefer  2D  Maps • Navigation   in  3D  is  too  complicated  for  many  users… • In  the  “Geo-­World”,   3D  Models  are  usually  not  built  by  3D  game   designers: • Often  there   are  “too  many”  &  “too  big”  textures  per  object • Different  details  per  3D-­object • Remember   “Google   3D  Warehouse” • Level  of  Detail:  Generalization   in  2D  is  accepted,    but  not  in  3D! • Limited  number   of  people   actually  do  have  data  of  the  whole  world… • Most  virtual  globe   based  applications  I  know  are  limited  to  a  certain  region/country/… • Too  slow  (bandwidth/3D   rendering)   on  mobile  devices • Too  power   consuming  on  mobile  devices
  • 39. 2.5.2016Institute  of  Geomatics  Engineering 39 Bringing  together  2D  Maps  and  3D  Globes Concept:  Prerender a  3D  Scene  using  a  high  quality  offline  3D  renderer  using  an   orthographic   projection  and  create  “2D”  image  tiles.   Constant,  minimal  bandwidth   regardless   of  the  complexity   of  the   3D  city  model MTh Markus  Jung,  2014 (Similar  approaches  were  already  done  by  Döllner et  al.  and  also  go  back  to  some  concepts  by  Sutherland)
  • 40. 2.5.2016Institute  of  Geomatics  Engineering 40 Display  in  the  Webbrowser as  “2D  Map” MTh Markus  Jung,  2014
  • 41. 2.5.2016Institute  of  Geomatics  Engineering 41 Display  in  the  Webbrowser as  Panorama MTh Markus  Jung,  2014
  • 42. 2.5.2016Institute  of  Geomatics  Engineering 42 High  Resolution  Geometry  doesn’t  matter:  Same  download/render  speed MTh Markus  Jung,  2014
  • 43. 2.5.2016Institute  of  Geomatics  Engineering 43 The  3dmaps.ch  Project:  Bringing  it  all  together! 3DPS  (3D  Portrayal  Service)
  • 44. 2.5.2016Institute  of  Geomatics  Engineering 44 Viewer  API map3d.js   Library var map = new map3d.map("mapcanvas"); var layer = new map3d.imageLayer([ "http://t1.3dmaps.ch/tiles/teatime", "http://t2.3dmaps.ch/tiles/teatime", "http://t3.3dmaps.ch/tiles/teatime", "http://t4.3dmaps.ch/tiles/teatime"]) }); layer.addTo(map); var teapot_marker = new map3d.marker("Green Teapot", [0,0,0]); teapot_marker.addTo(map); var cube_maker = new map3d.marker("Green Cube", [80.5, 11.5, 10.5]); cube_maker.addTo(map);
  • 45. 2.5.2016Institute  of  Geomatics  Engineering 45 Different  prerenderings for  different  pitch/view  direction Every  Prerendering needs  storage,  but  with  todays  cloud  storage  pricing  this  is  not  really  an  issue  anymore!  
  • 46. 2.5.2016Institute  of  Geomatics  Engineering 46 Why  a  teapot  if  we  have  (open)  Geo  Data  ?!! Use  case  1:  Rotterdam  Dataset 90  CityGML files  with  a  total  size  of  2.72  GB 26'474   textures  with  a  size  of  1024x1024,   an  uncompressed   total  data   volume  of  around   77  GB Orthophoto uncompressed   430  GB
  • 47. 2.5.2016Institute  of  Geomatics  Engineering 47 Use  case  2:  The  Roman  city  of  Augusta  Raurica A  digital  reconstruction  of  the  historical  Roman  City  of  Augusta  Raurica,  created  at   the  institute  of  Geomatics Engineering at  the  FHNW.  3D-­Printed  to  create  a  bronze   model.  
  • 48. 2.5.2016Institute  of  Geomatics  Engineering 48 The  3D  Model About  4000  geospatial  objects  (buildings,  roads,  vegetation  features,  terrain,  …)   at  three  levels  of  detail.   3D  Geometry &  Textures  around  1  GB
  • 49. 2.5.2016Institute  of  Geomatics  Engineering 49 Prerendering the  Model:  Color  Map,  Normal  Map,  Id-­Map,  Depth  Map Dynamic  Lighting Normal   Map:  for  Object  Identification:   Highlighting,   special  effects,  … Depth  Map:   for  3D  Position,   special  effects,  …  
  • 50. 2.5.2016Institute  of  Geomatics  Engineering 50 3D  View  in  the  (mobile)  webbrowser with  dynamic  Lighting
  • 51. 2.5.2016Institute  of  Geomatics  Engineering 51 The  Viewer • The  viewer  basically  uses  the  same  concepts  as  a  “2D  Map  Viewer” • map3d.js  supports  WebGL There  is  also  a  pure  canvas  version  available  as  fallback • Operations  like  “highlighting”  are  highly  customizable.  Basically  it  is  an  image   processing  operation  which  runs  on  the  GPU  (WebGL Version).  If  there  is  no   WebGL available,  the  operation  is  done  using  JavaScript.
  • 52. 2.5.2016Institute  of  Geomatics  Engineering 52 Outlook  (1) • Implement  more  effects  and  lighting  models,   dynamic  snow/water/etc.  using  depth  map  &  normal  map • Layer  management  (include  point  clouds,  mix  different  layers  using  depth   map • Add  realtime content  (“mix  real  3D  Object”)  using  depth-­map • Release  map3d.js  as  Open  Source  (around  Q2/2016)
  • 53. 2.5.2016Institute  of  Geomatics  Engineering 53 Outlook  (2) More  Rendering  Effects,  for  example  Screen  Space  Ambient  Occlusion  (SSAO) BTh,  Daniel  Rettenmund 2015
  • 54. 2.5.2016Institute  of  Geomatics  Engineering 54 Outlook  (3) • “isometric  maps”  will  be  one  of  many  features  of  OpenWebGlobe 2 • “isometric  maps”  will  be  the  default  3D  Viewer  in  OpenWebGlobe 2 • Switch  to  “real  3D”  anytime • State  is  saved:   • The  best  matching  viewpoint  is  selected  when  switching • If  you  highlight  an  object  in  “isometric  mode”,  it  will  be  highlighted  in   “Real  3D”  mode  too.
  • 55. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 55 Conclusion 3  ways  to  use  3D  Graphics  in  Python  were  presented: 1. Using  Python  &  Blender  (including  Blender  Game  Engine) 2. Using  Low  a  Level  API  (OpenGL/WebGL) 3. Using  Python  to  process  3D  Views Which  approach  is  the  best  for  Python  ?  This  really    depends  the  application   domain.   I  am  quite  sceptic  with  2.  -­ If  you  want  to  create  a  complex  3D  game,  I  don’t   recommend  using  Python  at  this  time. I  believe  Python  is  great  for  1.  and  3.
  • 56. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 56 Next  Meetup:  February  9th,  2016  in  Muttenz (near  Basel)  18:00  to  21:00 http://www.pybasel.ch
  • 57. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 57 1st GeoPython Conference http://www.geopython.net
  • 58. Swiss  Python  Summit,  February  5,  2016Institut  Vermessung  und  Geoinformation 58 Q&A