PythonOCC project status and plans Thomas Paviot (pythonOCC/LCPI)*, Jelle Feringa (pythonOCC/TU Delft)**, Stephen Waterbur...
Agenda <ul><li>PythonOCC: project background and brief history of the project </li></ul><ul><li>Project issues </li></ul><...
The primary purpose: bring an engineer oriented layer between end-user CAD software layer and a software developer oriente...
First implemented features Developer level pythonOCC A python library for CAD/CAE <ul><li>Features: </li></ul><ul><li>2D/3...
Then implemented addons related to Mesh and Parametric modeling features Meshing features (Quad, triangles, 2D and 3D) Par...
Rigid body simulation <ul><li>Physics + « RealTime » collision detection </li></ul>13th NASA/ESA Workshop PDE 2011 - pytho...
Experimenting distributed CAD/Mesh/FEM architecture (2/2): Service Oriented Architecutre 13th NASA/ESA Workshop PDE 2011 -...
Experimenting distributed CAD/Mesh/FEM architecture (2/2): implementation  13th NASA/ESA Workshop PDE 2011 - pythonOCC May...
Long term objective:  creating and distributing 3D engineering objects over wide scale networks using open standards and F...
COLLADA  / WebGL  standards for a consistent 3d visualization supply chain <ul><li>COLLADA : «  a royalty-free XML schema ...
Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 1: The ...
Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 2 (opti...
Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 3 : the...
Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 4: incl...
Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 5: serv...
Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 6: rend...
Plugin free geometry visualization of a standard file: Demo 2 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <...
Plugin free geometry visualization for a standard file: Demo 2 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th ...
Plugin free geometry visualization for a standard file: Demo 2 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th ...
Plugin free geometry visualization – experimenting shaders : Demo 3 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, ...
Plugin free geometry visualization – experimenting shaders : Demo 4 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, ...
Conclusions regarding the WebGL experiments (1/2) <ul><li>WebGL implementation is incredibly fast and stable in all tested...
Conclusions regarding the WebGL experiments (2/2) <ul><li>WebGL success is certain (in our opinion!). </li></ul><ul><li>CO...
Need for a High Level API (HLA) <ul><li>The OpenCascade data model has a very small granularity. Thousands of classes/meth...
Local and online CAD services <ul><li>HLA on one machine: ‘local’ CAD services </li></ul><ul><li>Make this services public...
HLA: top/down approach <ul><li>Based upon the analysis of OMG CAD Services 1.2 and  needs  of users wishing to model 3D sh...
HLA: the ontological level 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
HLA: bottom/up approach <ul><li>Trying to answer the question: how could we abstract the current low level data model acco...
HLA: from local to distant services <ul><li>No WSDL/SOAP based webservices.  </li></ul><ul><li>Need for a lighter protocol...
A blog: http://www.pythonocc.org 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Further information
A google code project page (svn repository, issue tracker, wiki etc.): http://code.google.com/p/pythonocc 13th NASA/ESA Wo...
13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Further information Contacts Dr. Thomas Paviot pythonOCC projec...
Thank you ! Any questions ? 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th
Upcoming SlideShare
Loading in …5
×

PDE2011 pythonOCC project status and plans

2,826 views

Published on

Sldeshow presented at the latest NASA/ESA Product Data Exchange conference. Deals with pythonocc project status and midterm plans: WebGl renderer, high level API over the low level builtin data model.

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,826
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Screencast: torus_torus_collision.mov and trmiesh_collision_demo.mov
  • Screencast: demo1_qt_rendering.mov
  • Screencast: demo1_ff4_rendering.mov
  • Screencast: demo2_ff4.mov
  • Screencast: demo3_cylinder_head_ff4.mov
  • PDE2011 pythonOCC project status and plans

    1. 1. PythonOCC project status and plans Thomas Paviot (pythonOCC/LCPI)*, Jelle Feringa (pythonOCC/TU Delft)**, Stephen Waterbury (NASA/Goddard Space Flight Center)*** * [email_address] ; *jelleferinga@ gmail.com , ** [email_address] 13th NASA-ESA Workshop on Product Data Exchange 11-12 may 2011 Siemens Innovation Center, Cypress, California Creating and distributing 3D engineering objects through wide scale networks
    2. 2. Agenda <ul><li>PythonOCC: project background and brief history of the project </li></ul><ul><li>Project issues </li></ul><ul><li>WebGL backend – COLLADA mapper </li></ul><ul><li>High Level standard based API </li></ul><ul><li>Questions </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th
    3. 3. The primary purpose: bring an engineer oriented layer between end-user CAD software layer and a software developer oriented CAD kernel. CAD software End-user level (VB scripting, VB automation) Modeling kernel Developer Level (C++) Missing intermediate level 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Project status
    4. 4. First implemented features Developer level pythonOCC A python library for CAD/CAE <ul><li>Features: </li></ul><ul><li>2D/3D modeling </li></ul><ul><li>Data Exchange (STEP/IGES/STL) </li></ul><ul><li>Basic GUI features </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Project status
    5. 5. Then implemented addons related to Mesh and Parametric modeling features Meshing features (Quad, triangles, 2D and 3D) Parametric modeling features 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Project status
    6. 6. Rigid body simulation <ul><li>Physics + « RealTime » collision detection </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Project status
    7. 7. Experimenting distributed CAD/Mesh/FEM architecture (2/2): Service Oriented Architecutre 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Project status
    8. 8. Experimenting distributed CAD/Mesh/FEM architecture (2/2): implementation 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Pythonocc geometry Salomé mesh CodeAster FEM computation Workflow sync Project status
    9. 9. Long term objective: creating and distributing 3D engineering objects over wide scale networks using open standards and Free/Open Source software (FOS). <ul><li>Subproject 1: experimenting latest 3D visualisation technologies (WebGL/COLLADA) in order to enable sharing/exchanging 3D visualization </li></ul><ul><li>Subproject 2: develop a high level API on top of OpenCascade data model in order to enable sharing/exchanging 3D procedural models as well as concurrent 3D modeling. </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Long term strategy
    10. 10. COLLADA / WebGL standards for a consistent 3d visualization supply chain <ul><li>COLLADA : «  a royalty-free XML schema that enables digital asset exchange within the interactive 3D industry.  » Dedicated to 3D information exchange . </li></ul><ul><ul><li>Exchange of BRep geometry, tesselated geometry, annotation, textures, shaders, kinematics etc. </li></ul></ul><ul><ul><li>Partially implemented so far by vendors </li></ul></ul><ul><li>WebGL ( http://www.khronos.org/webgl/ ): «  WebGL is a cross-platform, royalty-free web standard for a low-level 3D graphics API based on OpenGL ES 2.0, exposed through the HTML5 Canvas element as DOM interfaces. […] WebGL brings plugin-free 3D to the web  ». Dedicated to 3D information rendering . </li></ul><ul><ul><li>Supported by latest browsers generation (Google Chrome 10+, Mozilla Firefox 4.0, Opera 11) but MSExplorer. </li></ul></ul><ul><ul><li>Many javascript libraries available (O3D, three.js, GLGE, spidergl etc.) enabling easy deployment of WebGl. </li></ul></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th SP1: WebGL support for visualization
    11. 11. Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 1: The geometry/topology is generated from a pythonocc script. </li></ul>SP1: WebGL support for visualization
    12. 12. Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 2 (optional): The shape is rendered through the local builtin OpenGL driver and a Qt window. </li></ul>SP1: WebGL support for visualization
    13. 13. Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 3 : the shape is tessalated and exported to a javascript file named ‘shape.js’ </li></ul>SP1: WebGL support for visualization
    14. 14. Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 4: include the shape.js file into a html file through the HTML5 canvas feature </li></ul>SP1: WebGL support for visualization
    15. 15. Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 5: serve this html file with any http server/web framework (python based or not). </li></ul>SP1: WebGL support for visualization
    16. 16. Plugin free geometry visualization: Demo 1 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>Step 6: render the html file with a WebGL compliant browser (example FF4, Chr10+). </li></ul>SP1: WebGL support for visualization
    17. 17. Plugin free geometry visualization of a standard file: Demo 2 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>ABB robot IRB6400R – STEP file obtained from the ABB online catalog. </li></ul>SP1: WebGL support for visualization
    18. 18. Plugin free geometry visualization for a standard file: Demo 2 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>STEP File: 6Mb size, 75895 entities </li></ul><ul><li>STEP file processed by step_to_webgl.py, a 80 lines python script that does: </li></ul><ul><ul><li>STEP file parsing </li></ul></ul><ul><ul><li>Mapping to OCC topology/geometry data model </li></ul></ul><ul><ul><li>Meshing </li></ul></ul><ul><ul><li>Javascript file generation </li></ul></ul><ul><li>Running step_to_webgl.py over this 6Mb STEP file takes about 140s and consumes up to 400Mb of memory. Can’t be used for realtime interaction with the shape yet, but the script is not optimized at all. </li></ul><ul><li>The js file is rendered the same way (FF4/Chr10+) </li></ul>SP1: WebGL support for visualization
    19. 19. Plugin free geometry visualization for a standard file: Demo 2 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th SP1: WebGL support for visualization
    20. 20. Plugin free geometry visualization – experimenting shaders : Demo 3 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th <ul><li>3d file « cyinder_head.brep » downloaded from the OpenCascade website. </li></ul><ul><li>File processed by the python script to be exported as a javascript file. </li></ul>SP1: WebGL support for visualization
    21. 21. Plugin free geometry visualization – experimenting shaders : Demo 4 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Chrome 11 Firefox 4 SP1: WebGL support for visualization
    22. 22. Conclusions regarding the WebGL experiments (1/2) <ul><li>WebGL implementation is incredibly fast and stable in all tested modern browsers (FF,Chr,WebKit) </li></ul><ul><li>Many WebGL/js libraries are available. Difficult to choose one </li></ul><ul><li>The WebGL technology is ready to get deployed everywhere *now* </li></ul><ul><li>Game technologies dealing with huge scene rendering (LOD) should meet 3D engineering needs for big model visualization </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th SP1: WebGL support for visualization
    23. 23. Conclusions regarding the WebGL experiments (2/2) <ul><li>WebGL success is certain (in our opinion!). </li></ul><ul><li>COLLADA seems to be perfectly suitable for 3D visualization archive/exchange. </li></ul><ul><li>However, COLLADA Brep implementation by vendors is less sure. </li></ul><ul><li>Our choice: untill all major CAD vendors implement COLLADA Brep importers/exporters or some STEP/COLLADA mappings have proven to be lossless model transformation, the concurrent use of STEP/COLLADA seems to be necessary: </li></ul><ul><ul><li>STEP files for the model definition </li></ul></ul><ul><ul><li>COLLADA files to store model outputs: tesselation, annotation rendering, kinematics animation </li></ul></ul><ul><ul><li>A robust workflow to ensure STEP/COLLADA files consitency </li></ul></ul><ul><ul><li>A step2collada.py script is currently being developed. Too early to have something to show, more to come in a few weeks. </li></ul></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th SP1: WebGL support for visualization
    24. 24. Need for a High Level API (HLA) <ul><li>The OpenCascade data model has a very small granularity. Thousands of classes/methods available. </li></ul><ul><li>Is it possible to build an intermediate layer on top of this API? </li></ul><ul><ul><li>That is less granular than the 3D kernel level datamodel, but a bit more granular than the ‘cad user’ feature tree level </li></ul></ul><ul><ul><li>That does not acts as a ‘filter’ over the kernel data model: we look for a « lossless semantics compression » of the underlying data model that would bring CAD modeling with pythonocc at the « engineering level » (see sl.2) </li></ul></ul><ul><li>This HLA would be used to: </li></ul><ul><ul><li>Quickly and efficiently create complex shapes based upon the smallest possible set of objects/methods/functions. Similar to the ‘MacroParametric approach’, but without developing a new scriping engine (we’re running python). </li></ul></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
    25. 25. Local and online CAD services <ul><li>HLA on one machine: ‘local’ CAD services </li></ul><ul><li>Make this services publicly avaiable for other machines over a network: ‘distant’ CAD services </li></ul><ul><li>OMG already released a set of CAD services (r1.2, january 2005) : « The intent is to establish a series of high-level engineering interfaces that do not require low-level data structures to answer mechanical engineering queries » Good! But: </li></ul><ul><ul><li>CORBA based (outdated technology) </li></ul></ul><ul><ul><li>Misses a lot of functions to enable ‘modeling’ </li></ul></ul><ul><li>So, what we’re currently working on: </li></ul><ul><ul><li>A top/down approach from user needs </li></ul></ul><ul><ul><li>A bottom/up approach from CAD kernel developer needs (hope they’ll match one day!) </li></ul></ul><ul><ul><li>Distributing services over a network </li></ul></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
    26. 26. HLA: top/down approach <ul><li>Based upon the analysis of OMG CAD Services 1.2 and needs of users wishing to model 3D shapes. </li></ul><ul><li>Rewriting a new CAD services API from scratch. Objects/Services classification are currently being described as an ontology with the help of Protégé. Trying to answer the question: what a CAD service should be? What do we need? </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
    27. 27. HLA: the ontological level 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
    28. 28. HLA: bottom/up approach <ul><li>Trying to answer the question: how could we abstract the current low level data model according to the way we use to develop with pythonocc? </li></ul><ul><li>A pragmatic approach aiming at answering the question: what we can actually do in a short term? An « experimental programming » approach that is absolutely necessary for an incremental progress leading to « final » API. </li></ul><ul><li>Classes Vertex,Edge,Part,Solide,Curve,DiffGeomCurve etc. already implemented </li></ul><ul><li>Bottom/Up and Top/Down must converge to an acceptable compromise so that we’re able to quickly provide a working / unittested API. </li></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
    29. 29. HLA: from local to distant services <ul><li>No WSDL/SOAP based webservices. </li></ul><ul><li>Need for a lighter protocol/architecture. 2 architectures experimented : </li></ul><ul><ul><li>Message oriented architecture: experimenting Twisted AMP or Perspective Broker protocols, AMPQ </li></ul></ul><ul><ul><li>REST web services </li></ul></ul>13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Sp2 : High Level API
    30. 30. A blog: http://www.pythonocc.org 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Further information
    31. 31. A google code project page (svn repository, issue tracker, wiki etc.): http://code.google.com/p/pythonocc 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Further information
    32. 32. 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th Further information Contacts Dr. Thomas Paviot pythonOCC project founder/co-manager Arts & Metiers ParisTech – Researcher at Product Design and Innovation Laboratory - Paris, France [email_address] Jelle Feringa pythonOCC project co-manager TU Delft – PhD candidate at Hyperbody research group -Delft, The Netherlands [email_address] http://twitter.com/pythonocc Twitter account
    33. 33. Thank you ! Any questions ? 13th NASA/ESA Workshop PDE 2011 - pythonOCC May 2011, 12th

    ×