Home Technical Talk

Tech art blog, aimed at simplifying the tech for artists...

ngon master
Offline / Send Message
almighty_gir ngon master
http://crazyferretstudios.com/ArtTech/

Hey guys. I've just started up a blog with the aim to simplify some technical concepts for artists. This will hopefully give people the ability to get more consistent results in art through understanding the underlying tech.

I'd love to get some feedback from you all, things like:
  • Is the first post too long?
  • Is the first post helpful, or not?
  • Is the first post confusing? Do i need to simplify it further?
  • What kind of things would you like explained in future posts?

I'm hoping to update this bi-weekly but at the very least, weekly.

Replies

  • Clark Coots
    Options
    Offline / Send Message
    Clark Coots polycounter lvl 12
    Thanks for sharing this Lee. First post is solid. Not sure how you'll organize this but maybe and easy table of contents to look up things like "Vectors" "Dot Product" and in each post links to recommended/related things to read.

    As an artist looking to get more techy I'm looking forward to more!
  • kodde
    Options
    Offline / Send Message
    kodde polycounter lvl 18
    I suppose it depends on what environment and software you're coming from. But for me when generally speaking I use the term "vectors" mainly when referring to data that implies a direction in a 2D or 3D-space. When referring to color, position data, rotation data, etc. i generally use the term float2/float3/float4 instead.

    I know that a float2/3/4 and vector2/3/4 is the same thing and the different terms are used by different software, but at least for me it simplifies to use the term "vector" mainly for speaking about directions. Such as normals or lights.

    So when reading your text I was thinking "When is he going to mention that a vector is used to define a direction... That's the first thing I would have said.". :)
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    Thanks Kodde!

    That was going to be part of the next article. however i'll edit the first post to mention that those are the same things.

    sidenote: I wonder if they're called "vectors" because in c/c++ a vector is a collection of data, and so a vec3 would be a vector with 3 pieces of data...
  • kodde
    Options
    Offline / Send Message
    kodde polycounter lvl 18
    No problem.

    I'd love a good article about tangets and bi-normals. What they are, how they are calculated, why tangent basis calculations differs between different engines, how they relate to UV-coordinates, etc.

    I kind of get it, but I wouldn't mind getting it completely clear and right.
  • haiddasalami
    Options
    Offline / Send Message
    haiddasalami polycounter lvl 14
    Awesome. Good to see more tech blogs :) Havent done much C++ in a while (always been on and off) but iirc from my crappy uni programming class, vectors were dynamic while arrays were static/fixed. Think when it comes to graphics programming, the word vector generally means direction. Would love an article on the journey of artist to rendering programmer. Maybe books and whatnot you found useful
  • Gheromo
    Options
    Offline / Send Message
    Gheromo polycounter lvl 11
    I loved it personally! Always wanted to read more into these things to understand them better, keep writing and I will keep reading! :)
  • Farfarer
    Options
    Offline / Send Message
    If it's aimed at non-technical artists, I'd like to see some more pictures showing what a vector does; How the X/Y/Z components contribute to defining the direction of the vector in a coordinate system (and perhaps how that same vector works when interpreted as a colour).

    Might be worth mentioning that vectors effectively store both a direction and a magnitude. It's an important aspect (even though the average artist will only be dealing with normalized/unit length vectors).

    Also mention that vertex positions, normals, UVs and cages are all vectors (to try and relate the more technical stuff back to what the artist is used to dealing with day-to-day).
  • monster
    Options
    Offline / Send Message
    monster polycounter
    Farfarer wrote: »
    If it's aimed at non-technical artists, I'd like to see some more pictures showing what a vector does; How the X/Y/Z components contribute to defining the direction of the vector in a coordinate system (and perhaps how that same vector works when interpreted as a colour).

    Might be worth mentioning that vectors effectively store both a direction and a magnitude. It's an important aspect (even though the average artist will only be dealing with normalized/unit length vectors).

    Also mention that vertex positions, normals, UVs and cages are all vectors (to try and relate the more technical stuff back to what the artist is used to dealing with day-to-day).

    Farfarer pretty much stole my feed back. :) I think an image like the following would enhance your description.

    vector.png
    http://mathinsight.org/vector_introduction
  • Joost
    Options
    Offline / Send Message
    Joost polycount sponsor
    Awesome, I've always wanted to learn more about the technical aspects of art so I'm looking forward to more posts. I'd be interested in seeing some posts about optimisation.
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    this feedback is awesome guys, thanks!

    Farfarer, just to clarify something here, when you're talking about magnitude, you mean the length of the vector, correct? if so i have some sweet pics coming up that covers that in either the next or immediately following post.
  • AdvisableRobin
    Options
    Offline / Send Message
    AdvisableRobin polycounter lvl 10
    Aw yeah! This is super cool Lee! I think all artists should learn the systems behind the pretty.

    I really like how you drew an example from the UE4 material editor, I think for future posts that'll really help ground the concepts in something tangible.
  • Farfarer
    Options
    Offline / Send Message
    Farfarer, just to clarify something here, when you're talking about magnitude, you mean the length of the vector, correct? if so i have some sweet pics coming up that covers that in either the next or immediately following post.
    Yeah, magnitude == length :)
  • satihartigan
    Options
    Offline / Send Message
    satihartigan polycounter lvl 3
    Great work, Lee! I don't have much to add. I think the length of the post was fine, though I felt like I was just getting into it and then it was over! Really looking forward to the next installment.
    I've been at fault for being one of those artists who works to make things look pretty without really knowing too much about the technical side - something i'd like to change, so I wholey support the blog and call for more pictures! :D
  • Count Vertsalot
    Great resource, keep it coming.
  • Wolthera
    Options
    Offline / Send Message
    Wolthera polycounter lvl 5
    I had the feeling this version of a vector was a little... too mathematical? I knew vectors from highschool physics, and they are still primarily the description of a force for me. Hence direction+magnitude.

    Might be an idea to explain that in computer graphics, we have vectors, which imply a direction in 3d space, and are described exactly the same way as float3, which in turn is used to store colours. Hence why normal maps and flow maps, which are maps of vectors, can be stored as a colour image.

    It helps for these kinds of things to look a little into the history of the term. There's usually something really tangible for artists if you dig deep enough. Like, 'Float' comes from 'floating point' which means that point can be introduced anywhere in a given set of cyphers. This in turn means that floating point can describe much more numbers than an integer of the same size, etc.

    Of course, you end up with really really long articles this way :) My own attempt at something similar(tutorials covering art-foundations using open source software) usually ranges somewhere between 2000 to 4000 words per piece.
  • gloriousczar
    Options
    Offline / Send Message
    gloriousczar polycounter lvl 6
    Hey this is cool, I'm looking forward to seeing articles that cover more advanced topics.

    I would say that this first blog is a bit too short, it ends right before it gets good. I'd like to see how you can apply this knowledge, like using 3 point vectors in unreal to manipulate normal maps or tint albedo maps, with pictures to break it down (actually maybe that's too advanced for starters?). What really helped me learn though was being able to actually look at the material editor in unreal and see how the nodes are used and what they did instead of just reading about it.

    Again, I guess just stressing on more pictures, once you explain that the XYZ vectors are stored in the RGB channels, it would be cool to see something like this picture to visualize that and break it down a bit more instead of just seeing the end result of a sphere normal map. This concept might be easy to follow, but once you get to the more advanced concepts having more visual breakdowns will help a lot
    Tangentspace_rgb.jpg

    Just my two cents, this is a good idea though. How often are you planning on writing an article?
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    Again, thanks for the feedback guys!

    A fairly consistent feedback i'm getting via skype too, is that it's still a little wordy/math heavy, and could do with more image based explanations. So my big focus right now is working up a second post explaining vectors in a far more visual way, as simply as possible (which is actually the hardest part).

    I'm aiming to do one a week at the minimum.

    And as for tangents/bitangents and the like... absolutely! a greater understanding of the way normals work is something i want to drive home, but i also feel like if people can't understand things like vectors or dot-products, then the more advanced concepts will be way out of their grasp. Similarly, if i have trouble explaining the simpler concepts, then i feel i may only add to existing confusion on the more difficult ones.
  • throttlekitty
    Options
    Offline / Send Message
    Cool shnit, gir! I don't feel that it's too long or too few on the images, but they are helpful.

    Tech art is something I've always liked, but never really dove into that hard. What is the average work day like for you?
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    just posted an update =]
  • Eric Chadwick
    Options
    Offline / Send Message
    This is awesome. I love these kinds of articles.

    I always enjoy how tech writing helps me figure out what I don't know, since trying to explain and clarify something points out all the gaps in my knowledge!

    In the first blog post, I think it would help to quickly explain what a float is.

    When you point out that you can have a vec2, it would help I think to say why there's no vec1. (then it would be just a point in space right? no length)

    The sphere image was a little puzzling. I was wondering why the red values started in the middle of the sphere, instead of being 0 on the left side, .5 in the middle, and 1 on the right. If you're making a sphere using rgb vectors in world space, then I wonder why you wouldn't get something more like this?

    03_normals_sphere.png
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    If the center of the sphere is at (0,0,0), then the left is at (-1,0,0) and the right is at (1,0,0). And i think the renderer i was using didn't like negative colour values.

    Floats will be covered in the next post as i'll need to explain why they're the result of a dot product of two vectors.
  • RN
    Options
    Offline / Send Message
    RN sublime tool
    I think there does exist the concept of a vec1 value. It's a 1-dimensional vector.
    Something like just an X coordinate, for example. Their length is their value.
  • almighty_gir
    Options
    Offline / Send Message
    almighty_gir ngon master
    Kryzon wrote: »
    I think there does exist the concept of a vec1 value. It's a 1-dimensional vector.
    Something like just an X coordinate, for example. Their length is their value.

    you're describing a float.
  • tungerz
    Options
    Offline / Send Message
    tungerz polygon
    Brilliant,
    Thanks for the blog Gir :)
    Rock on brother
  • RN
    Options
    Offline / Send Message
    RN sublime tool
    you're describing a float.
    A 1D vector depends on a coordinate system, has a basis etc.
    You can scale the coordinate system and still have the magnitude of the vector remain the same (under that coordinate system).

    A float does not share these properties, it's just the unit (EDIT: it's actually the data type) used to describe the components of vectors.
  • Farfarer
    Options
    Offline / Send Message
    Kryzon wrote: »
    A 1D vector depends on a coordinate system, has a basis etc.
    You can scale the coordinate system and still have the magnitude of the vector remain the same (under that coordinate system).

    A float does not share these properties, it's just the unit used to describe the components of vectors.
    A float does share these properties, it's a scalar value.

    A vector, by definition, is a direction and a magnitude. The lowest dimension that makes "useful" sense in is 2, which is a 2D vector, which has two components (in our case, 2 floats, one for each axis of the space).

    A 1D vector has only one "direction" (the single axis of the space) so really all you've got is a magnitude along that singular axis. You can only describe that in a single, scalar value (in our case, a float).

    The coordinate system is arbitrary in all cases.
  • RN
    Options
    Offline / Send Message
    RN sublime tool
    Farfarer wrote: »
    A 1D vector has only one "direction" (the single axis of the space) so really all you've got is a magnitude along that singular axis.
    I think it's two directions, positive and negative. We can encode the direction of the 1D vector as the sign of the value of magnitude.

    The argument here is if a 1D vector is the same as a float value, and I hold the opinion that it isn't. A float is scalar, it can be used to describe the magnitude and direction components of a 1D vector.

    In practice there's little difference (you will be dealing with a single float value after all), but if you're going by the vector definition then you need to make this distinction.
  • Farfarer
    Options
    Offline / Send Message
    Kryzon wrote: »
    I think it's two directions, positive and negative. We can encode the direction of the 1D vector as the sign of the value of magnitude.

    The argument here is if a 1D vector is the same as a float value, and I hold the opinion that it isn't. A float is scalar, it can be used to describe the magnitude and direction components of a 1D vector.

    In practice there's little difference (you will be dealing with a single float value after all), but if you're going by the vector definition then you need to make this distinction.

    But a 2D vector has positive and negative directions to each axis... we don't say it had 4 directions (positive and negative x and y).

    But by direction there I meant axis, which is why I put it in quotes. I just meant to say there is no other place for the point to go.
  • Mrfred
    Options
    Offline / Send Message
    Mrfred polycounter lvl 4
    Steve Theodore previously wrote a quite intesresting series about the dotProduct. I think it's a bit heavy for newcomers but it's very well explained and easy to understand for any techies out there.

    http://techartsurvival.blogspot.ca/2014/12/dot-matrix.html
  • Eric Chadwick
    Options
    Offline / Send Message
    A 1-dimensional vector, mind blown.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    you might want to work on the style of your blog, the lists should be indented, and the sub headlines come out a bit more (or actual text a bit less)

    magnitude is without sign, you need the sign information on the vector's directional properties, especially if you have multiple components. vec1 == float is prefectly fine reasoning imo. float happens to be the datatype here as well, but could use double, half...
  • Ashaman73
    Options
    Offline / Send Message
    Ashaman73 polycounter lvl 6
    Lol, shouldn't this blog help artist understand technically aspects instead of adding more confusion ? Reading this discussion, then a simple 1D vector suddenly looks like rocket science.

    In common sense computer science (no strict mathematically definition) a vector is more or less just a simple container for holding one or more data, to keep it simple, floats for now. In shader a vec1 ... vec4 just holds either one to four floats, without any attempt to interpret the contained data. A RGBA color is just a vector (4D), a three-dimisional position (3D), a two-dimisional direction (2D), a scale factor (1D), the width/height of a window (2D) etc. Therefor a 1d vector is just a single data piece, a float in this case.

    It is just a simple way to keep related data easily together. Instead of using
    float color_red = ...;
    float color_green = ...;
    float color_blue = ...;
    float color_alpha = ...;

    just use

    vec4 color = ...;

    That's all, no rocket science !
  • haiddasalami
    Options
    Offline / Send Message
    haiddasalami polycounter lvl 14
    Any reason to use gif rather than html5 video service like http://gfycat.com/ ? Nice update
Sign In or Register to comment.