Mussi

GDNet+ Pro
  • Content count

    839
  • Joined

  • Last visited

Community Reputation

4420 Excellent

About Mussi

  • Rank
    GDNet+

Personal Information

  • Interests
    Art
    Programming

Social

  • Twitter
    MussiKara

Recent Profile Visitors

15153 profile views
  1. Yes that is correct. Don't know about the numbers, but yes, you are supposed to get a new up vector. If your view direction is 0 in the z-component, the result of the cross product for your up vector should be (0, 0, 1). You can visualize the matrix by taking your left hand and forming a pistol with it, your thumb should point upwards and your index finger points away from you, now if you slightly open your middle finger it'll point to your right (example). This is basically your matrix, your thumb is the up vector, you index finger is your view vector and your middle finger is your right vector. Rotate your wrist and see what happens as your view vector changes. Note that all directions are orthogonal with each other, i.e. the angle between them is 90 degrees.
  2. No, the z-component should be 0, you have the order reversed. Also, your view direction is not of unit length. The columns of your matrix must all be of unit length so you must either normalize the result of the cross product, or normalize the view direction before you do the cross product. The cross product of two unit length vectors results in a unit length vector. Don't use the cross product on your point. Use the cross product to build your matrix, then multiply that matrix with your point to get the transformed point. The matrix is (right, up, view), the view is what you have and the right and up are what you can calculate as show in my previous post.
  3. A single view vector is not enough to describe the orientation of the camera, the camera can roll around the view direction. But as haegarr points out, you generally don't want your camera to be tilted, so you can probably get away with using (0, 0, 1) as your up direction. In order to build your camera matrix you simply need 3 orthogonal vectors: right, up, view. These vectors are the columns of your matrix, in that order. To get your vectors you can use the cross product: right = Cross(view, (0, 0, 1)); up = Cross(right, view); The reason we recalculate the up vector is because (0, 0, 1) is only orthogonal if view.z == 0. Now if your camera looks in the same direction or in the exact opposite of (0, 0, 1) the cross product becomes 0, which means this will not work, so keep that in mind.
  4. Free art assets

    Mixamo is also great for free 3D characters and loads of animations.
  5. 3D Criticize my 3D game models

    The left. For low poly models that's good, for higher poly models it's better to let edges flow with muscles. I feel like your model is sort of on the edge of low/high, so in your case it's easier to fix it that way. Faces usually take up more polys than other parts, that's true. In your case though, there are too many that don't add much value and it's a bit out of proportion with the rest of the body. Good mesh topology is basically getting the most out of as little as possible. Hmm there's something off about it. Like the cords around his neck seem totally flat, what do they look like in the high poly version? Sometimes yes, though In this case I think you can do better packing of the UVs, to get the most value out of a texture you'll want to minimize the empty space. Sometimes it helps to have an additional smaller texture map, but you can't always rely on that due to e.g. engine support/performance/resource limitations. JoeJ makes a good point as well. If you're not a member there already, sign up at polycount, there are a ton of great artists in that community who help out with awesome feedback. Don't get me wrong, we love to have you here and there are professional artists on these forums as well, but polycount is dedicated to art and therefor has a lot more professional artists in the community. Also, study the work of professionals, enter into challenges even if you feel you are not good enough and you'll get there.
  6. Wouldn't it be better if you could be more specific about downvotes instead of upvotes?
  7. C++ Enum Trick Answer, Please.

    Yes. It's like when you write the following programming: int main() { printf("%d\n", 1 + 2); } It'll print out 3, but it will not calculate the result of 1 + 2 every time you run the program. Instead your compiler sees that these are constant values and can be optimized away, so it simply replaces the 1 + 2 with 3. Your program behaves like you would expect it to, but it's doing less work to get there. The same thing happens with IsPtr, since the compiler knows what the types are, it can deduce during compile time what the result is and just bake it into your program.
  8. 3D Criticize my 3D game models

    Welcome to the forums! The models look fairly good, but have room for improvement. I'll focus on the goblin mostly. There are some texture seam issues on the back of his head, his shoulders(where the arm meets the body) and on the top of his spine. The edge loops on his joints look fairly good, the shoulders could probably use another edge loop inwards. Edges should flow more with his anatomy, here's a good reference. It feels like the face has an unnecessary amount of subdivisions, focus on the silhouette and add smoothness through your normal map. Don't be afraid to use separate meshes for his hair, beard and clothing. The way you have it now results in unclean mesh topology and weird transitions from body to hair/clothing. The normal map seems like it's not really doing what it's supposed to, how did you generate it? It looks like it was generated from the diffuse map, unfortunately that almost never works out well. Generally the normal map is generated from a high detailed version of the model. The uv area should roughly be proportional to the surface area covered (e.g. in your Cute Fish the eye takes up a large part of the UV and therefor it looks way sharper than the rest, falling out of tone). A good way to spot this is to use a checker box texture during unwrapping, all the boxes should be roughly the same size and squarish. I hope this was helpful. Was that the type of feedback you were looking for?
  9. C++ Enum Trick Answer, Please.

    The code is not run at run-time, it's result is determined at compile time and therefor constant.
  10. I believe it's basically the same as an upvote, but allows you to be more specific as to why you upvoted the post. Other people can see this as well, not sure if the distinction really matters or how often people even bother to click anything other than the upvote.
  11. Not at all. A good GUI library doesn't actually do the drawing for you, it basically builds a command list for you, which you can use to draw the UI with whatever means you see fit. Just to illustrate how crazy that can get, here's someone rendering the popular Dear ImGui library in a console: Dear ImGui and Nuklear also have a large set of examples to render them with varying OpenGL/DirectX/SDL/Vulkan/Allegro versions. These are both immediate mode libraries, but I'm sure there are also retain mode libraries out there that offer something similar if that's more your thing.
  12. Goodbye!

    Would love for you to still hang around, mod or not, your input is always valuable! Wish you the best of luck in all your endeavours.
  13. Can we get signatures?

    Isn't this already available under account settings? It seems like showing signatures is defaulted to off.
  14. Come to think of it, does this compile without any errors? struct Rect { union { struct { int x, y; }; Point2 pos; }; union { struct { int w, h; }; Point2 size; }; }; No aggregates of anonymous structs, so might work?
  15. Getting no warnings in VS2017, even with /Wall :-o. I do remember seeing warnings about anonymous structs in the past though, not sure what changed.