Click here to Skip to main content
15,881,715 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
We are in the realtime graphics business and have to develop a 3D toolchain application in the next year.
We are long time familiar with C++, WX Widgets, OpenGL and Vulkan and also wrote VR simulation and interactive realtime training systems. Nevertheless I would like to get a better insight in the software architecture of a CAD or 3D modeling software.
Working a very long time with Autodesk Maya 3D we very much appreciate the very clean API and code structure Maya is providing to developers.
Are there any recommendations regarding books, discussions or blogs about this topic ?
Our background is electrial engineering, games engineering, and media computer science.
There are open source programs available but I would prefer to read the very basics first.

Thanks for helping.

What I have tried:

We already programmed small tool based tests where we can interactively place objects or move them..
Still looking for the bigger picture..
Posted
Updated 10-Dec-19 6:19am
Comments
Richard MacCutchan 10-Dec-19 12:01pm    
Try Google, that is the best place to search for specifics on any subject.

Why develop a proprietary toolchain? That makes zero sense to me.

I think you would be better off adopting a set of standard products to start with. Something like Blender or 3Dstudio as a modeller and then work your way down the chain and pick products for each step. Then work on developing plug-ins and bridge tools to connect them and make the development process smooth. I can understand that you might have a proprietary way of doing some things but people have been doing this stuff for a long time and I think you should avoid reinventing wheels. Especially when there are already many, many options to choose from.

I am really into racing simulation games and nearly every game studio who makes them does their asset development the same way. They use 3Dstudio (or other) as their modeller and they develop a plug-in that exports the data in a proprietary format the game can load. I am familiar with several studios, having friends working there, and none of them use a proprietary modeller. I know one guy who works for an F1 racing team in their aerodynamics department and this is what they do too.
 
Share this answer
 
Comments
hansiMuc 10-Dec-19 12:34pm    
Hello Rick,

I'm completely with you regarding your argumentation. We were working in the animation business for a very long time now, having backgrounds as TDs there.
Our task now is to develop a proprietary toolchain which involves handling objects and structures in 3D but is not related to modeling or animation.
I'm more interested in the way to structure such a complex application in a way that is as convenient as Maya and also is written in C++.
Maya has for example a tool concept for handling the input, uses MFn Functions which are kind of visitors to the internal data structures and has in general a very clear API.
I'm just wondering if there are any lessons or books telling how the did that in such a clean way.

Thanks for your help
Rick York 10-Dec-19 16:06pm    
I recommend investigating plug-in architectures in general to start. The key will be to define a consistent interface to your plug-in objects. I think the best way is to define the app(s) architecture such that everything is a plug-in. I have done this in previous applications and it worked quite well.

There are a few articles here on this topic :

https://www.codeproject.com/articles/389667/simple-plug-in-architecture-in-plain-c
https://www.codeproject.com/Articles/6990/Multi-platform-plug-in-development-made-easy
https://www.codeproject.com/Articles/152178/Interface-based-Programming-Runtime-Class-Discover
https://www.codeproject.com/Articles/2489/Plug-In-framework-using-DLLs

Those will provide a good start. Best of luck.
Stefan_Lang 11-Dec-19 3:29am    
Hello

I was about to suggest working with OpenCascade (see https://www.opencascade.com/content/open-source-core-technology ), but after reading this solution and your answer I suspect that is not what you are looking for.

Anyway, since I am developing constructive algorithms using the OpenCascade CAD kernel, if you have specific questions, I can probably provide some insights. The only useful source of information on Opencascade I can recommend is the documentation on the site itself: https://dev.opencascade.org/doc/overview/html/index.html
Hello,

I do not think there is any book or documentation on such a specific subject. Too few people develop CAD or 3D modeling software.
In addition, setting up a good software architecture does not really depend on the type of software itself. The main difficulty here is to be able to think of a good plug-in / API system from the start of the project and then maintain a clean architecture even after adding a lot of new functionalities / features.

Sorry I can't help more.
We are in the process of open sourcing our multi purpose C++ framework ( GitHub - assoria/kigs: Kigs framework is a C++ modular multipurpose cross platform framework.[^] ) so I would have proposed to use it as a basis for your developments, but the Wiki is still being written.

Good luck for the future.
 
Share this answer
 
Comments
hansiMuc 10-Dec-19 12:42pm    
Hello Stephane,

thanks for your help and comment.
I just wrote an answer to Rick telling that it is more the specifics of the software layout.
I quite like the very clean concepts of Maya.
Thanks for your link to Kigs, which is a really nice framework.
We actually do have a running VR simulation environment simulating complex environments.
The 3D application software architecture ( it's not a modeler ) to supply the data is what I'm curious about.

Thanks for pointing out your framework

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900