Best Place to learn 3D Computer Graphics?

Started by
22 comments, last by DragonBooster 10 years, 3 months ago

Hi,

Keep the clutter to a minimum! You need to really streamline your learning to target the fundamentals, so I recommend a book on OpenGL or Direct3D rendering of 3D objects. I have almost 4 years experience overall directly in the industry and several years before that as a modder of games and simulations. I have used 3DS Max, Blender, Deep Explorer, Poser, and Wings 3D with numerous software and applications in various workflow pipelines in addition. You need a learning system that includes a recommended workflow pipeline included in the study course.

Establish Early:

1) Study course that includes a workflow pipeline

2) Chose only one graphics API: Graphics Engine such as SharpDX, SDL, or work even lower level but chose only one between OpenGL or Direct3D. Do not spread yourself too thin! Take one area of focus and excel in it! All the major ones are great, so don't worry about which one too much.

3) If you like the style, there is nothing better than a good, thick printed book on a specific API or graphics rendering engine. Remember that the better ones include suggestions,examples, and assignments in using object file formats with graphics software of a workflow pipeline.

4) Settle on a common object file format. If you want animations, then you need to do a little research into the file formats that work best with the software in your workflow pipeline. Any good course material will make recommendations. Collada is worth examining. You don't need to animate anything for quite a while but you do need to begin working with model file formats early and plan for the future expansion into animations, various mappings of the surfaces, and so forth.

5) Bullet Physics - a great way to start is to use libraries that have this incorporated, used by hobbyists and professional alike. Get into physics early or you will have to abandon significant amounts of coding to refactor or rebuild. It also makes your models come to life, which is an important reward of satisfaction for your hard work and much needed.

6) Camera aspects are important to establish early!

7) Light

Clip-hint

Shaders

Real time shadows ( Don't waste any time with incomplete shadowing except in early learning)

Procedural theory

Ambient Lighting/ Indirect lighting

Ambient Occlusion

Diffuse Lighting

Transparency/ opacity

Shining/ Reflection/Refraction/ Refactoring (All at least remotely related)

Ray Tracing (Use sparingly because of rendering time and performance demand)

Advanced Mapping

Smoothing

Vector shading

Vector graphics

Vector mapping

Vector colors

Normal Mapping, especially how to use them with UV mapping.

Bump Mapping

Shader Mapping

Texture Baking

The further down the list then the more advanced you will be getting.

Do not try to reinvent the wheel! Find ways of making your own unique implementations of already existing methods, but use as much work such as libraries that have already been created. Doing most of the 3D coding yourself to make a comprehensive graphics rendering engine will take you decades - no exaggeration. All successful and prosperous developers use extensive libraries much of the time. You might learn at an accelerated pace by finding an open source graphics program with excellent documentation and active forum online community with helpful developers for support. You may get more co-operation by offering some or all of your coding to the development in exchange for their help in your learning or joining their team. These people will certainly have good recommendations for learning resources.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

Advertisement

It's a bit less 3d theory and a bit more practical application, but you might also enjoy "learning modern 3d graphics programming".

Yes i am currently reading that book it is amazing but i want to be able go beyond what that book teaches since the author himself said that what he is teaching is mostly basic/fundamental. I am looking for additional resource's so that i can l learn an advanced level of 3D Graphics programming after i finish reading that book.

Hi,

Keep the clutter to a minimum! You need to really streamline your learning to target the fundamentals, so I recommend a book on OpenGL or Direct3D rendering of 3D objects. I have almost 4 years experience overall directly in the industry and several years before that as a modder of games and simulations. I have used 3DS Max, Blender, Deep Explorer, Poser, and Wings 3D with numerous software and applications in various workflow pipelines in addition. You need a learning system that includes a recommended workflow pipeline included in the study course.

Establish Early:

1) Study course that includes a workflow pipeline

2) Chose only one graphics API: Graphics Engine such as SharpDX, SDL, or work even lower level but chose only one between OpenGL or Direct3D. Do not spread yourself too thin! Take one area of focus and excel in it! All the major ones are great, so don't worry about which one too much.

3) If you like the style, there is nothing better than a good, thick printed book on a specific API or graphics rendering engine. Remember that the better ones include suggestions,examples, and assignments in using object file formats with graphics software of a workflow pipeline.

4) Settle on a common object file format. If you want animations, then you need to do a little research into the file formats that work best with the software in your workflow pipeline. Any good course material will make recommendations. Collada is worth examining. You don't need to animate anything for quite a while but you do need to begin working with model file formats early and plan for the future expansion into animations, various mappings of the surfaces, and so forth.

5) Bullet Physics - a great way to start is to use libraries that have this incorporated, used by hobbyists and professional alike. Get into physics early or you will have to abandon significant amounts of coding to refactor or rebuild. It also makes your models come to life, which is an important reward of satisfaction for your hard work and much needed.

6) Camera aspects are important to establish early!

7) Light

Clip-hint

Shaders

Real time shadows ( Don't waste any time with incomplete shadowing except in early learning)

Procedural theory

Ambient Lighting/ Indirect lighting

Ambient Occlusion

Diffuse Lighting

Transparency/ opacity

Shining/ Reflection/Refraction/ Refactoring (All at least remotely related)

Ray Tracing (Use sparingly because of rendering time and performance demand)

Advanced Mapping

Smoothing

Vector shading

Vector graphics

Vector mapping

Vector colors

Normal Mapping, especially how to use them with UV mapping.

Bump Mapping

Shader Mapping

Texture Baking

The further down the list then the more advanced you will be getting.

Do not try to reinvent the wheel! Find ways of making your own unique implementations of already existing methods, but use as much work such as libraries that have already been created. Doing most of the 3D coding yourself to make a comprehensive graphics rendering engine will take you decades - no exaggeration. All successful and prosperous developers use extensive libraries much of the time. You might learn at an accelerated pace by finding an open source graphics program with excellent documentation and active forum online community with helpful developers for support. You may get more co-operation by offering some or all of your coding to the development in exchange for their help in your learning or joining their team. These people will certainly have good recommendations for learning resources.

1) Thanks that was what i was mostly going for.

2) I am a person who likes to explore different things and try new things, for Low-Level API's I tried DirectX/3D first and hated because of its disgusting and bloated code, i also tried Open GL and preferred it over DirectX/3D. I am also considering using Horde 3D, it looks powerful, efficent and simple to implement in my game and it has a fantastic documentation.

4) Which Model format would you recommend for models and animations?

5) I have Bullet Physics linked and ready for my compiler but do i have to have scientfic knowledge of physics to use Bullet Phyiscs?

I see Thank you for your info you sound like a veteran who knows what He/She is doing due to your expierence.

I am currently quite fresh in the 3D realm of Game Development , which resources would recommend that give someone a solid head start in 3D Graphics/Game programming?

I would like also to get resources for writing software rasterizer, except chris hacker pdf.

https://www.udacity.com/course/cs291

One of the guys from the Real Time Rendering book did these videos, just exactly what you need to understand all the theory while programming, and FREE.

https://www.udacity.com/course/cs291

One of the guys from the Real Time Rendering book did these videos, just exactly what you need to understand all the theory while programming, and FREE.

Thanks it looks great but i cannot learn from videos , i prefer text.

Good day,

2) I am a person who likes to explore different things and try new things, for Low-Level API's I tried DirectX/3D first and hated because of its disgusting and bloated code, i also tried Open GL and preferred it over DirectX/3D. I am also considering using Horde 3D, it looks powerful, efficent and simple to implement in my game and it has a fantastic documentation.

Horde 3D seems to be a perfect fit for your experience level and interests. The OpenGL 2.0 is more capable than some developers realize who might recommend 3.1 or later. in your case with OpenGL 2.0 you have a well documented and supported version of OpenGL which is actually much more extensive into later versions when needed than, again, some developers realize. If your end-user does not have at least 2.0, then it is very feasible to write a small application or use and existing one which detects this situation and notifies the end-user while giving them the link to the OpenGL 2.0 or possibly even package it (under compliance with license to do so, of course) with your game software and then have the update application ask for permission to install it into their machine. Probably you should use generic application to do this, some being purchased and a few are offered at no cost from the big names in software development such as Microsoft and Adobe. You should have this in place for your very first game, even if it is a no cost game. OpenGL 2.0 runs in practically all the graphics cards and integrated computer graphics motherboards, with the exception of some old dinosaur computer left in the attic for 20 years or something. OpenGL for these reasons has some advantages over the latest OpenGL version, so feel good about it. Mature code like that will run in computers for years to come.

Tip: With graphics renders such as Horde 3D, you are going to package only part of the software components with your game unless you want some people to have the tools and other things included to be able to mod the game. Building a wrapper around the executable of the game would allow you to better secure your game coding from pirates and yet leave some asset folders such as "skin", map, and sound folders exposed for end-users to mod.

With all these issues you may begin to see the extreme importance of modular coding so you can plug or remove sections of coding or enable or disable them by interfaces at will and easily. Class files are very important toward this and depending on your game complexity and concept also configuration files. Avoid spaghetti coding!


4) Which Model format would you recommend for models and animations?

Horde 3D:

"Custom optimized model and animation formats for maximum performance

  • Mixture of binary and XML formats for best tradeoff between performance and productivity
  • Support for DDS textures and other common image formats
  • Collada Converter for bringing assets from many common DCC tools to Horde3D
  • Collada Converter implemented as command line tool that can be integrated in automatic build process"

There you have it, there in the Horde 3D website. It totally depends on the workflow pipeline which you assemble to build game source code and eventually create end-user assets for your game like GUIs, sounds, textures, and 3D Models. There are Collada plug-ins for 3DS Max, Blender, and other popular 3D software. You need to research at the Horde 3D website which formats that they recommend most and why. The 2D file formats must be considered, too, but most are available in software such as Photoshop, GIMP, Inkscape, WordPress, and others.



5) I have Bullet Physics linked and ready for my compiler but do i have to have scientfic knowledge of physics to use Bullet Phyiscs? Yes, some for the coding but I have seen amazing results from people using existing libraries (under license to do so), tweaking, and customizing to their implementations.



I see Thank you for your info you sound like a veteran who knows what He/She is doing due to your expierence. You are welcome. smile.png



I am currently quite fresh in the 3D realm of Game Development , which resources would recommend that give someone a solid head start in 3D Graphics/Game programming?
Horde 3D developers, documention, tutorials, and community there will be most of your research time. Check here at game dev for the OpenGL learning resources and advice:

http://www.gamedev.net/forum/25-opengl/

If you work almost everyday at this, then you should have a simple single player game in a few months. Remember to broaden your areas of game development on the very first game and increase complexity in each area with following iterations which could be versions of the same game or new games. After a number or months or a year or two, then you will find that you need version control and repository software such as Git or other. If you decide to do this for a living income, then you likely will need a team eventually. Learn fairly early to develop by iterations, in any case!

Work hard at it and have fun!biggrin.png

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer


Thanks it looks great but i cannot learn from videos , i prefer text.

The high achievement developers often get the most from written text. The more sophisticated the development then the greater importance is generally needed for reading comprehension and retention. Much more information can be packed into a book than many videos and typically much more profound and flexible to handle, too.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

Good day,

2) I am a person who likes to explore different things and try new things, for Low-Level API's I tried DirectX/3D first and hated because of its disgusting and bloated code, i also tried Open GL and preferred it over DirectX/3D. I am also considering using Horde 3D, it looks powerful, efficent and simple to implement in my game and it has a fantastic documentation.

Horde 3D seems to be a perfect fit for your experience level and interests. The OpenGL 2.0 is more capable than some developers realize who might recommend 3.1 or later. in your case with OpenGL 2.0 you have a well documented and supported version of OpenGL which is actually much more extensive into later versions when needed than, again, some developers realize. If your end-user does not have at least 2.0, then it is very feasible to write a small application or use and existing one which detects this situation and notifies the end-user while giving them the link to the OpenGL 2.0 or possibly even package it (under compliance with license to do so, of course) with your game software and then have the update application ask for permission to install it into their machine. Probably you should use generic application to do this, some being purchased and a few are offered at no cost from the big names in software development such as Microsoft and Adobe. You should have this in place for your very first game, even if it is a no cost game. OpenGL 2.0 runs in practically all the graphics cards and integrated computer graphics motherboards, with the exception of some old dinosaur computer left in the attic for 20 years or something. OpenGL for these reasons has some advantages over the latest OpenGL version, so feel good about it. Mature code like that will run in computers for years to come.

Tip: With graphics renders such as Horde 3D, you are going to package only part of the software components with your game unless you want some people to have the tools and other things included to be able to mod the game. Building a wrapper around the executable of the game would allow you to better secure your game coding from pirates and yet leave some asset folders such as "skin", map, and sound folders exposed for end-users to mod.

With all these issues you may begin to see the extreme importance of modular coding so you can plug or remove sections of coding or enable or disable them by interfaces at will and easily. Class files are very important toward this and depending on your game complexity and concept also configuration files. Avoid spaghetti coding!


4) Which Model format would you recommend for models and animations?

Horde 3D:

"Custom optimized model and animation formats for maximum performance

  • Mixture of binary and XML formats for best tradeoff between performance and productivity
  • Support for DDS textures and other common image formats
  • Collada Converter for bringing assets from many common DCC tools to Horde3D
  • Collada Converter implemented as command line tool that can be integrated in automatic build process"

There you have it, there in the Horde 3D website. It totally depends on the workflow pipeline which you assemble to build game source code and eventually create end-user assets for your game like GUIs, sounds, textures, and 3D Models. There are Collada plug-ins for 3DS Max, Blender, and other popular 3D software. You need to research at the Horde 3D website which formats that they recommend most and why. The 2D file formats must be considered, too, but most are available in software such as Photoshop, GIMP, Inkscape, WordPress, and others.



5) I have Bullet Physics linked and ready for my compiler but do i have to have scientfic knowledge of physics to use Bullet Phyiscs? Yes, some for the coding but I have seen amazing results from people using existing libraries (under license to do so), tweaking, and customizing to their implementations.



I see Thank you for your info you sound like a veteran who knows what He/She is doing due to your expierence. You are welcome. smile.png



I am currently quite fresh in the 3D realm of Game Development , which resources would recommend that give someone a solid head start in 3D Graphics/Game programming?
Horde 3D developers, documention, tutorials, and community there will be most of your research time. Check here at game dev for the OpenGL learning resources and advice:

http://www.gamedev.net/forum/25-opengl/

If you work almost everyday at this, then you should have a simple single player game in a few months. Remember to broaden your areas of game development on the very first game and increase complexity in each area with following iterations which could be versions of the same game or new games. After a number or months or a year or two, then you will find that you need version control and repository software such as Git or other. If you decide to do this for a living income, then you likely will need a team eventually. Learn fairly early to develop by iterations, in any case!

Work hard at it and have fun!biggrin.png

1) I also noticed that Horde uses Open GL 2.0 which uses the fixed function pipeline. The problem is i would like to use some of the newer features that are present in Open GL 3/4 , the game i am making is a next gen game which will include high-level graphics. I also want to use this game as a portfolio for a career in the industry and i have 2-years left. This game is also going to be commercial.

I plan on spending one year solely on the programming of a 3D game so that i have sufficient enough knowledge to build a 3rd person camera game with one actor and an empty terrain as a base for more features to come. The other year i am going to spend in game design and add new features to the base that i created and focus on things like characters , story , art , music etc. I may create a rendering engine based of Open GL or look for other rendering engine options.

2) What do you think about Ogre3D?

Thank you for your answers they are turly helpful and help me understand game development more.

The more complex that you make things then the more demand there will be to have a team. Why get the latest and shiniest new ship if you will be forced to hire a crew? By getting the latest technology and increasing complexity then you will force yourself to get a team. Are you prepared for that? Horde 3D and similar development environments are designed to enable indy developers, especially solo ones, to have a good opportunity to actually complete some impressive projects. Did you notice that there are no game development environments which are no cost and have all the latest technology? That is because it will take a team several years to create an engine or other development framework that uses the latest versions of technology. Many a developer quit after a few years going solo with the latest technology in thinking that the tech was too hard but that was not the cause of their failure but that they needed a team to have a reasonable opportunity of success. Remember that I urged you to streamline your learning processes? You are not ready to plan a mission to Mars when you haven't even completed your very first rocket yet.

A moderate amount of post-processing code can extend the OpenGL 2.0 into a few areas covered by 3.0+++, which is what I was trying to highlight earlier. The 2.0 version will keep you learning for at least a couple years before you are ready for anything near 4.0, but by that time if you want to advance much further then you will need a team.

Ogre 3D is fine for hobbyists but not for professional long term career plans.

After a little more time, you should be done with preliminary research on a general plan and you should begin soon. Set a deadline for the end of the week to make a final decision on your development platform and stick with it for the next 1-2 years.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

The more complex that you make things then the more demand there will be to have a team. Why get the latest and shiniest new ship if you will be forced to hire a crew? By getting the latest technology and increasing complexity then you will force yourself to get a team. Are you prepared for that? Horde 3D and similar development environments are designed to enable indy developers, especially solo ones, to have a good opportunity to actually complete some impressive projects. Did you notice that there are no game development environments which are no cost and have all the latest technology? That is because it will take a team several years to create an engine or other development framework that uses the latest versions of technology. Many a developer quit after a few years going solo with the latest technology in thinking that the tech was too hard but that was not the cause of their failure but that they needed a team to have a reasonable opportunity of success. Remember that I urged you to streamline your learning processes? You are not ready to plan a mission to Mars when you haven't even completed your very first rocket yet.

To be honest after looking at some example code that was made with Open GL 3.3++ and comparing it Open GL 2.0/2.1. Open GL 3.3 looks much more cleaner and simpler with the improved shaders. I think that Open GL 3.3++ was made much more simpler and efficient rather than complex. Also Unless it is my career i will always work alone and i get more things done because i learn very fast and have a strong memory so i do not forget something easily if it is interesting or complex, because even the most complex things can be broken down to the simplest form. I only rely on myself if i am going to be programming a game. People kept telling me to start with Lua for when i was deciding on a programming language, but i hated Lua, In my honest opinion it is the worst language to learn. I started with C++ and loved it, it was much more straight forward and it looked very clean and i learned within 2 months to the highest level and know i can easily code in C++ as if i were breathing. It was perfect for me.

When i have my plan for Mars my Rocket is going to be a Rocket with Complex Circuitry and a Beatiful Design. I am prepared for the hard path since i hate doing easy things. It may take me longer but the result will be 50x better and the feel of being able to complete something so beatiful is so satisfying and ectastic which makes it worth it. I also understand that nothing comes at you with a silver platter. I have an Infinite Motivation and Give up basically does not exist to me. I am going to create a Open GL wrapper which will simplify things when i create a Graphics Engine.

Thank you for fantastic help, it gave me a clear understanding of where i should begin.

This topic is closed to new replies.

Advertisement