Menu

Trace trought aztec 1.1.3

Help
Gutmann
2003-09-29
2003-10-04
  • Gutmann

    Gutmann - 2003-09-29

    Hi Martin
    Me and DaProdigy are doing a new GUI for Aztec 1.1.3 as a part of our Final exams at the NTB university in switzerland.
    So our big problem is to find the way trought the methods in the source.
    Is there a way to trace the code from pressing a button to the finally output
    What we need:

    - open a scene
    - import a file
    - Handle the Open GL Window
    - handle the CSG objects
    - draw a tree for the objects in a scene

    is there any documentation or somethimg like that ?
    do you know any functions to trace the source ?

    Thanks
    Goody72 DaProdigy 

     
    • Phillip Martin

      Phillip Martin - 2003-09-29

      Bad news guys, there isn't any trace functionality in the code. Something I probably should have considered...

      And another down point, there is very little documentation. That is slowly changing, but for aztec 1.1.3, there is very little.

      However, on the up side, I'm here, and I know most of it back to front, so I'll be glad to help out.

      What are you guys trying to achieve? Would you like a quick run down of what happens when you click a menu item? And which classes handle the open gl rendering?

      I'm also interested, did you pick Aztec as your final piece of work, or did your lecturer?

       
    • Gutmann

      Gutmann - 2003-09-30

      Glad to hear that !
      So our primary goal is do create a GUI which should assist physicians to show deformations on Bones like fractures and things like that.
      Our lecturer doesn't know much about 3D but in our prearrangement to the final exams we discovered the Aztec 3D Modeller API and we like it :)
      A quick run down of what happens when we klick a menu item would be great.

      other things we would be happy to know:

      - How to load/Import a 3DS File and pass the Object to a OPEN GL Window
      - How we can build a tree with CSG Objects to combine the imported Objects
      - Show the tree of all Objects in a scene in a Window
      - A Summary of all the parameters which are necessary to set up a scene (Camera,X,Y,Z Coordinates etc.)

      So if you are interested in our work we could send you our progress report so far (email ?,Attachement)

      our E-Mail egutmann@ntb.ch
      Thanks
      from the Swiss guys :))

       
      • Phillip Martin

        Phillip Martin - 2003-10-01

        Based on the information you gave on what you want to do, I'd suggest not using Aztec.

        Taking Aztec, and stripping out the parts you don't want, and adding in the parts you did, I think would be much harder than putting your own application together.

        The two main and hardest parts that I see are loading 3ds files and doing the CSG operations. Aztec's CSG is okay, but its not perfect, so I'd suggest trying to find a more reobust solution for that.

        The GUI and tree view for your application sounds like it will need to be pretty specific to your needs, so changing aztec around would probably take longer than doing it from scratch.

        But to answer your questions anyway:
        "How to load/Import a 3DS File and pass the Object to a OPEN GL Window"

        Aztec doesn't really work this way. There are three parts involved here, AztecLib, Aztec2 and StdTranslators.

        The AztecLib project provides all basic 3D functionality to manipulate 3D data in the scene.

        The Aztec2 project provides the presentation, i.e. all the 3D windows, attributes, and everything you see on the screen.

        The StdTranslators project contains all the default translators with aztec (including the 3DS translator) that handles the reading and writing of the 3D data intot he internal storage for Aztec.

        So the way it works is that Aztec2 (the user interface) presents a menu, the user clicks on Import. Aztec2 then queries AztecLib for what plugins we have, and extracts a list of file filters. It takes these, passes them into the open file dialog and lets the user choose a file. Using this file, we try to load it using a translator (The translators are all loaded at run time, so Aztec2 doesn't know ahead of time which translators will be there. This means we examine the file's extenstion to figure out which translator to use)

        We then tell the translator to import the file, it then populates the global MScene (defined in the AztecLib project). After this the Aztec2 user interface displayes the 3d model in that storage.

        I know it sounds long and complicated. But I'll explain in more detail shortly if you want to look into it further.

        "How we can build a tree with CSG Objects to combine the imported Objects "

        Aztec2 doesn't really do this as yet. The code is there, but its not ready :(

        "Show the tree of all Objects in a scene in a Window"

        This is handled by the Aztec2 project, and it is in the OutlineView class (in source/Aztec2/include/views/OutlineView.h and source/Aztec/src/views/OutlineView.cpp)

        It basically walks the scene heirarchy and populates an abstract tree view class.

        "A Summary of all the parameters which are necessary to set up a scene (Camera,X,Y,Z Coordinates etc.)"

        Again this is not really possible yet with aztec2. Cameras are not used in Aztec2 at all, so this information isn't easily accessible.

         
    • Gutmann

      Gutmann - 2003-10-02

      Hi Martin
      We discussed the problems building/using the CSG objects and to generate the tree with our

      lecturer.
      His opinion is that the API we use has to be under a LGPL Licence.

      We checked:
      - Blender 2.2.6
      - IRIT 8.0
      - Canvas 3D
      - X-Frog 3.5
      - Genesis 3D
      - Aztec 1.1.3

      But Aztec fits best to our demands (LGPL,Boolean operations,OPEN GL, Tree-View).
      We tried to find a standalone API to do the Boolean operations after we dectected some

      problems using the aztec CSGs (strange deformations after substractions,etc) but we didn't

      found anything.

      After your declarations i tried to build the Aztec 2.0-g but there are some errors in the
      - MAppImpl.cpp
      - MAppImpl.h

      in the AztecGUICommon Project

      like:

      error C2653: 'stdext' : is not a class or namespace name
      error C2143: syntax error : missing ';' before '<'
      error C2238: unexpected token(s) preceding ';'
      error C2146: syntax error : missing ';' before identifier 'hWndMap'
      error C2501: 'Aztec::MApp::HWNDComponentMap' : missing storage-class or type specifiers
      error C2501: 'Aztec::MApp::hWndMap' : missing storage-class or type specifiers
      error C2065: 'hWndMap' : undeclared identifier
      error C2228: left of '.clear' must have class/struct/union type
      error C2653: 'HWNDComponentMap' : is not a class or namespace name
      error C2955: 'std::iterator' : use of class template requires template argument list

      any hints or tricks ??

      "Taking Aztec, and stripping out the parts you don't want, and adding in the parts you did, I

      think would be much harder than putting your own application together"
      Our lecturer thinks that it would be best to leave the whole solution together and just call

      the functions we need out of the whole project(Import Object,Draw the Window.....).

      In fact the result we want is just some kind of prototype to analyse the future of tools like

      that.

      So we would be very happy if you could explain the handling of CSG objects and a scene in

      general with its representation(OPEN GL) in more detail

      Thanks
      Goody72

       
      • Phillip Martin

        Phillip Martin - 2003-10-02

        See my other post about STL on the compiling issue. If it still doesn't work, we'll sort something out.

        Do you have to use the c++ side of things to do it all? You could easily use the javascript interpreter in Aztec to do most of the things you need. i.e. load a specific file, and set up the csg operations

        In fact I did it just then, loaded a file and set up some CSG operations, and bam, it worked very nicely. I was quite surprised and pleased.

        I'm doing up some doco now for you on the C++ side of things, so I'm not avoiding your questions, just buying time :)

        Phil

         
    • Gutmann

      Gutmann - 2003-10-02

      Forgot one question:
      Do we need the "STL Port" if we use Visual Studio ??

      Thx :)

       
      • Phillip Martin

        Phillip Martin - 2003-10-02

        If you use VC6, then yes, you need STLPort.  IF you use VC7, you shouldn't need it.

        Sicne it is looking in stdext, I am suspecting you are using VC7?

         
    • Gutmann

      Gutmann - 2003-10-03

      HI Martin
      So we are using Visual Studio .NET.
      Using the Javascript Interpreter would be the best because our industrial partner likes javascript!
      Thanks for your Time
      :)

       
      • Phillip Martin

        Phillip Martin - 2003-10-03

        Are you using VS.Net 2003 or the earlier one?

         
    • Nobody/Anonymous

      Still problems with the
      - MAppImpl.cpp
      - MAppImpl.h
      files :(

       
    • Gutmann

      Gutmann - 2003-10-03

      The earlier one
      details:
      Microsoft Development Environment 2002
      Version 7.0.9466
      Microsoft .NET 1.0 (Sp2)
      Version 1.0.3705
      ....

       
      • Phillip Martin

        Phillip Martin - 2003-10-03

        Excellent. I've only had 2003 to test against, so you are breaking new ground! :)

        Try tweaking the AztecGUICommon/include/gui/win32/MAppImpl.h file and using a combination of std::hash_map or stdext::hash_map to see what vs.net 2002 prefer's.

         
    • Gutmann

      Gutmann - 2003-10-03

      Cool :)
      added "using namespace std;" in the MAppImpl.h
      and " std::hash_map"
      so building worked fine...
      but stil problems opening/importing files in Aztec 2
      it stops with:
      Unhandled exception at 0x104872fa (msvcp70d.dll) in Aztec2.exe: 0xC0000005: Access violation reading location 0x00000014.
      ps
      is it necessary to rename the Freetype lib from
      freetype214_D.lib
      to
      freetype214MTDLL_D.lib ???
      or is there any modification i forgot ?

      peace

       
      • Phillip Martin

        Phillip Martin - 2003-10-03

        See if you can get it it to work without the 'using namespace std' in there. I've been trying hard to keep that out of header files, and they may even break some things, you never know :)

        But the freetype library will need to be compiled into a multithreaded dll library. Renaming it will just cause memory problems.

        I apologise for the lack of doco regarding hte build porcess for aztec2, there hasn't been much activity outside of a couple of people.

         
        • Phillip Martin

          Phillip Martin - 2003-10-04

          I've started a new thread for when yo can get aztec compiling, which talks about doing some scripting in aztec.

           
          • Phillip Martin

            Phillip Martin - 2003-10-04

            Okay, I've updated the web page to have a bit of scripting info, and it actually works. I've got a nicely csg'd sphere and cube on the screen.

            http://aztec.sourceforge.net/scripting_crash_course.html

            Hope it helps a bit!

            Phil

             

Log in to post a comment.

MongoDB Logo MongoDB