Advertisement

Nedd help with some guidness, 3d, animating, and rendering

Started by August 23, 2016 10:24 AM
3 comments, last by Hanan416 8 years, 3 months ago

Hey GDnet
posting my first post here gotta make it count :)

so i'm a computer science student (starting my second year now) and to be honest my goal is to be a video game designer
so I came across with this forum, read all the thread and FAQ and I need some advice from you
I've tried Unity although I felt like it's a bit weird and moved to Maya
I managed to model some nice things although I feel like something is always missing,

I set a goal for myself for the next year to learn animation basics and advance with it together with rendering so I can look at my products as something I can be proud of

I'm pretty good with Java, started to learn some c++ and c#, to be honest I havn't seen so far how it comes together with the modeling with Maya

so my question to you is, what articles should I read to help with the process? (free, or not doesn't matter)
I feel like I should know more about geometry of animations and how to devide the models to the correct grids because sometimes when I put the texture some parts are messy

also I used to play and sketch alot with photoshop as a kid but totally forgot about it, plus the new versions are so different from what I used so it's like learning it all over again

I heard Zbrush is good for texturing, any thoughts about it?


thanks guys,
P.S english is not my first language, so do consider :)

h

I'm pretty good with Java, started to learn some c++ and c#, to be honest I havn't seen so far how it comes together with the modeling with Maya

maya (or some other modeling tools) would be used to create models, texture them, rig them, and make animations. these would then be imported into a game, where code (c++ etc) would draw the models and play back the animations.

what articles should I read to help with the process?

info about modeling in maya is the first step. but one of the big challenges is getting the maya data into the game. its depends on what data formats the game supports.

so tools like maya are used to create animated models. these are imported into the game. then the game code uses them to draw stuff.

each of the three topics is at least somewhat involved:

1. 3d modeling and animation - IE how to use maya, 3dsmax, blender, zbrush etc.

2. the ins and outs of importing 3d models and animations into games.

3. writing games / using game engines (c++ etc).

I feel like I should know more about geometry of animations and how to devide the models to the correct grids because sometimes when I put the texture some parts are messy

read up on texturing.

I heard Zbrush is good for texturing, any thoughts about it?

seems to be a nice tool. never tried it. kinda pricey. US $424.95

http://www.studica.com/Pixologic/pixologic-zbrush-4.html?gclid=Cj0KEQjw6O-9BRDjhYXH2bOb8Z4BEiQAWRdukzRNyv8-VxvXuNEKKFwCzAByV26Xvr9GavYNqvGx_f4aAqOF8P8HAQ

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Advertisement

Yesterday, I was thinking about making a video explaining the 3D graphics process at a high level. One of these days maybe I'll make that video, if I can ever find the time.

I might start by pointing out that Unity and Maya are really two completely different things.

I spent years being in the confused state that you are describing, where I couldn't figure out how it is all put together. I tried 3D Studio Max. I tried DirectX. I tried just about everything and none of it seemed to work together even though I knew somehow it did fit together. I just couldn't figure out how it all comes together. After about a decade of this I finally figured it all out.

I'm debating on where to even start with this discussion. As I thought about that video and what I needed to talk about, that "high level overview" is probably about 4 hours of lecture. It's probably a video series instead of a single video. Even at a high level, there's so much to cover. So let me see if I can describe it at an even higher level than that.

Basically, you have DirectX or OpenGL (or the new and more complicated Vulkan). That's what allows you to put the graphics on the screen. How they work is to send a vertex buffer and an optional index buffer to the graphics card to draw a frame. Maybe forget about the indices for now. With the vertices, you are defining triangles. Everything in the 3D graphics world is pretty much all composed of triangles. Really, that's all the graphics card knows how to draw is pretty much triangles.

You would typically use C++ for DX or OGL programming. They are libraries that are most naturally called using C++ or C. To one extent or another you can use other languages to call them such as C#. There's MonoGame (formerly known as XNA) which is .Net that uses DX on the back end. It takes a lot of the complexity of DX11 and obfuscates it making it quite a bit easier. It's a good place to start if you eventually want to do DX with C++, although it's not half as good as back in the day when Microsoft supported it. I say that mostly because no one writes books on it anymore and the community around it has largely died off. There's probably a Java equivalent. With MonoGame, you're still basically submitting vertex buffers to the graphic card. With some other platforms, like Unity or SDL, you are working at a much higher level and things are far more obfuscated.

Back to the vertex buffer. Every 3 vertices you submit form a triangle. Originally, I was very confused as to why they had to call it a vertex instead of a "point in 3D space". A vertex always has a point, but it can have other data attached to it as well, and almost always does. Still, the point in the vertex is mandatory, and all the other pieces of data are optional. So, a vertex at least has a point in 3D space, and the graphics card turns every 3 vertices you submit into triangles. You can arrange these triangles into any shape imaginable as long as you get enough of them.

But very quickly, drawing using numbers, by manually feeding a vertex buffer becomes unmanagable. After you build a few objects by hand using a vertex buffer, you'll quickly realize why this isn't going to work. Even simple objects like a cube take a long time and a lot of effort to sculpt by feeding a vertex buffer. Now imagine modern game models with thousands and potentially millions of triangles in them.

The obvious answer is a modeling program like Maya, Blender, or 3D Studio Max. They allow you to sculpt your models and export them as a file to your game project. The file contains enough information to build a vertex buffer although it probably doesn't contain the vertex buffer info itself. Generally, you have to read the file, throw away all the junk in the file, and use the data to build a vertex buffer to feed to the graphics card. It's still all about the vertex buffer, you're just now using tools to feed the vertex buffer rather than doing it manually.

Keep in mind that these modeling programs are designed to do all kinds of stuff that has nothing to do with games, such as making animated movies for example. So, you may never use 80% of what's in the modeling program. And a lot of modeling tutorials that teach you how to use these programs may not be teaching you how to use them for games.

Basically, you sculpt your model trying to keep it under a few thousand triangles. Then you "UV un-wrap" it to produce a UV map. You export the UV Map as an image. You take the UV image and import it into Photoshop or whatever you want to use and you paint this UV color map (texture). Then you can bring it back into your modeling program and UV wrap it and it paints your model. That step takes you from "1980's" graphics to "1990's" graphics. The main thing you need to do to bring it closer to the modern era is to bake a normal map. Without going into the details of what a normal map is, the process is basically to take your low poly (low triangle count) model and the UV Map, and then create a very high poly model (with maybe a million triangles in it) and project that high poly surface onto the UV mapped low poly model and capture it into an image file by baking it. This produces an image file called a normal map. When you properly apply the normal map, you have a very low poly model that appears to have all the detail of a very high poly model. There are other maps you can apply, such as an ambient occlusion map and a specular map for example.

Anyway, you export the model to a file and then you have all the map files. You should be able to import all that into whatever you're using and then you have models to put into your game. (Or you can buy them from the Unity store. ;-))

Now animation is a bit tricky. It's at least an intermediate subject. Animation in Unity is pretty easy, relatively speaking.

You have two types of animation. You have rigid animation, which is often done in code rather than in your modeling program. But in the modeling program you probably still define parent child relationships that are necessary for rigid animation. This is typically used for machines such as cars where the program will likely animate the wheels. It's fairly easy to do in code.

Then you have skinned animation. Skinned animation is like an order of magnitude more complicated. It builds off the same principle of the parent child relationship in the armature. But there's a lot more to it. Basically, you have the armature, or skeleton, of bones. Then you have your model. You "skin and rig" the model which attaches the bones to the model. Each bone can be assigned a different group of vertices (triangles) to move. And if you are getting weird stretching problems in the animation, you may need to work on the weight painting where you assign a group of vertices to more than one bone but with weight painting you can give one bone more "weight" on controlling the vertices than the other bone.

Once the model is skinned and rigged you can animate it by moving the armature. You do this mostly by defining key frames.

There are several programs you can use to do the animation: Blender, Poser, and I'm sure there are several others.

If you have a standard armature that is basically shared between models, such as a humanoid armature, you can separate the animation from the model and reuse animations with different models.

Anyway, there's basically two different sides of this: there is the art side and the coding side. Obviously there is some overlap, but generally they are considered two different pursuits. So, you need to decide whether you want to pursue the art side, or the coding side, or the much more difficult path of both. I chose both. I've been doing the coding for years and am currently enrolled in an art program to learn the art side better. But most people choose one or the other because either one by itself is a whole lot to learn.

On the coding side, you have DX or OGL in C++, or you can use a library or framework that kind of obfuscates DX or OGL. Or you could go to an even higher level with a game engine like Unity or Unreal where things are scripted rather than coded. There are a lot of choices here.

On the art side, you need a 3D modeling program like Blender (free), Max, or Maya. And you at least need a painting program like Photoshop. Then there is some other optional software, like Poser for animations. (Blender does animations, but Poser might be a little easier to do the animations with. There's really not much that Blender doesn't do, especially if you combine it with Photoshop.)

I haven't gotten deep into the 3D sculpting. That's getting into the normal map stuff. You would probably want to take that low poly model and export it to ZBrush, then create a very high poly model by sculpting it. I assume ZBrush allows this although all the tutorials I've seen don't use it this way. It's the only way I can think of that it would work. But maybe that's just because I don't know how to use ZBrush. Blender allows you to sculpt like ZBrush without ever leaving Blender, although it probably has fewer tools than ZBrush for that.

so my question to you is, what articles should I read to help with the process? (free, or not doesn't matter)

To learn about animation read "Disney Animation The illusion of life".

To learn animation practice and get a copy of "Animator's survival kit" for reference.

Although 3D animation is considered to be like animating a wooden puppet, it's only true for IK rigs other rigs work on the same principals as normal animation. Even with IK rigs you will need to keep in mind the principals of animation.

For 3D modeling there is no book or any one source that you could read to get a better understanding. 3D modeling changes too much, a solid rule today could be completely wrong tomorrow and a week later the rule is back.

To learn 3D modeling you must do 3D modeling, there are online courses however they are expensive as they are intended for people who want to make a living as 3D artists.

Some of it is dated and some of the older ones can be considered wrong.

I set a goal for myself for the next year to learn animation basics and advance with it together with rendering so I can look at my products as something I can be proud of

For 3D modeling it takes 3-4 years before you reach the point where you can make any object you want, it takes years of experience after that before you can make models to be proud of.

I am learning animation myself at the moment and it's my 3rd and last year learning the basics.

What I am saying is that it's going do be a long time, even longer if you learn game development at the same time, before you can be proud of the work(Unless you have low standards).

I feel like I should know more about geometry of animations

Topology that is the word, search for "animation topology" It will be focused around characters, however it's used even in hard edge animations.

Topology decides the form of the mesh and how it will move.

Learning material on it is sparse, mostly because no one wants to say some thing that could be wrong on such a important subject, most of the seminars I have attended regurgitate the same basic knowledge to the point of nausea. The only thing people can really tell you about topology is that it's important.

how to devide the models to the correct grids because sometimes when I put the texture some parts are messy

Texel density and UV unwrapping.

Texel density is where you decide how many pixels will be in a unit, that way all the art is constant and looks professional.

UV unwrapping is 40% of 3D modeling and one of the largest time consumers, there is no in-depth explanation on it that I know of(If any one knows one, please link) even the courses I have bought only have the artist showing how they do it, as it is hard to explain topic.

Clothing design can teach you a lot about UV maps, as it almost is the same thing: making a 3D object from a 2D pattern, except UV is the reverse.

I heard Zbrush is good for texturing, any thoughts about it?

What?

Yea, it has tools for texturing, however Maya has the same ones and so does Max and Blender.

Buying Zbrush for texturing is like buying a car for it's wheels.

Zbrush is worth it's price if you plan on learning 3D sculpting, there are more affordable sculpting software if you can't buy Zbrush.

Most 3D modeling software has a basic form of sculpting tools built in.

seems to be a nice tool. never tried it. kinda pricey. US $424.95


seriously I wasn't aware of that.. pricey indeed



BBeck , seriously you're the MVP here
that is some great knowledge and you helped putting the pieces of the puzzle together
sure I'm going to have to try it all by myself
but you can say you put the perfect recipe of how to understand it all and make it work
so thank you for that

If you have a standard armature that is basically shared between models, such as a humanoid armature, you can separate the animation from the model and reuse animations with different models.



now that was something good to know, because I tried the baby stepd with the tutorials and ended up repeating everything twice and even more
I'll go throw that.. thanks for that tip

So, you need to decide whether you want to pursue the art side, or the coding side, or the much more difficult path of both. I chose both



well I can understand why, My goal is both as well. I'm pretty good with coding and problem solving, sure I can get more exp. over the years and find more shortcuts to make my algos even more elegant. But I always loved to draw and scatch ideas and I don't think I'll be able to live with the fact that my imagination tells me how something should be made and someone else doing it different from how I see it

To learn 3D modeling you must do 3D modeling


couldn't agree more, so far I tried and do as much different 3D modeling as I can, so far it got me for making a nice 'Game Of Thrones' throne that made me very happy with the result, I'm sure I can get better but so far i'm pleased
Thanks for the animations Books recommendation, i'll check them out




so here's the thing, I saw on another thread (http://www.gamedev.net/topic/681227-good-c-learning-materials-for-a-beginner/ ) that someone (Glass_Knife) posted a video of Casey Muratori explaining about c++, I ended up browsing his youTube channel and found the HandMade hero project he did there and so I found myself spending my day just reading and watching some of his stuff and he was talking about making everything from scratch to reduce the amount of bugs during the process of making a game and to understand why it all works like it does and getting rid from things that are usless for my program.
what do you guys think about it?
is it something I should put my effort at first or just keep on going with all the avilable data I can get during the process to minimize the time of understanding the "why" and focusing more on the "how"?

h

This topic is closed to new replies.

Advertisement