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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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 :))
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
:)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
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?
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 :))
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.
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
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
Forgot one question:
Do we need the "STL Port" if we use Visual Studio ??
Thx :)
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?
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
:)
Are you using VS.Net 2003 or the earlier one?
Still problems with the
- MAppImpl.cpp
- MAppImpl.h
files :(
The earlier one
details:
Microsoft Development Environment 2002
Version 7.0.9466
Microsoft .NET 1.0 (Sp2)
Version 1.0.3705
....
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.
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
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.
I've started a new thread for when yo can get aztec compiling, which talks about doing some scripting in aztec.
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