Home Contests & Challenges Archives CS:GO Weapon Finish Contest

PC-CSGO | Geometric Error | AK47

Intro:

    Well hello there, thank you for taking your time to take a look at my weapon design post. I would first like to say a huge thank you to Valve and Polycount for creating such an awesome competition and opportunity. And I am still quite new to the Polycount website, but I must say that the community and content on here is awesome! Keep it up guys! Now that that is out of the way, time to show off my (hopefully not horrible) design! Oh and, I love criticism, as it shows where I can improve my design!

Day 1:

     So today I decided to create another skin post as I had another idea which I think might look good in the game. So I began with my research as usual and design drafts. So here is the idea I came up with:



     As you can see, the idea of mine is to have an 'explosion' of polygons/triangles (most likely will be triangles). I am still not sure how to approach this as in the process, but I will decide that tomorrow, sorry for not having much to show today, but hopefully tomorrow there will be more to look at.

Replies

  • arcticnoah
    Options
    Offline / Send Message

    Day 2:

         So over the night I decided to make a program that would generate triangles, 'rotate' them and make them spread out so it look like an explosion. I created this in around 30 minutes in a language called processing, mainly because it is quite easy to create the effect I wanted with toxi's toxiclibs library. Here is the code:

    import toxi.geom.*;
    import toxi.color.*;
    import toxi.util.*;
    float MAX_SIZE = 100;
    float BASE_RADIUS = 0.8;
    Vec2D BASE = new Vec2D(0.8, 0.5);
    ColorTheme t;
    void setup() {
      size(4096, 1024);
      smooth();
    }
    void draw() {
      t = new ColorTheme("test");
      t.addRange("soft ivory", 0.5);
      t.addRange("intense goldenrod", 0.25);
      t.addRange("warm steelblue", 0.15);
      t.addRange("fresh teal", 0.05);
      t.addRange("bright yellow", 0.05);
      t.addRange("bright red", 0.08);
      t.addRange(ColorRange.BRIGHT, TColor.newRandom(), random(0.05, 0.1));
      background(t.getColor().toARGB());
      noStroke();
      for (int i = 0; i < 8000; i++) {
        randomTriangle();
      }
      saveFrame(DateUtils.timeStamp()+".png");
      delay(1000);
    }
    void randomTriangle() {
      float r = random(1);
      Vec2D p = Vec2D.randomVector().scaleSelf(r*BASE_RADIUS*width).addSelf(BASE.scale(width, height));
      
      float theta = random(TWO_PI);
      float theta2 = theta + PI;
      float delta = random(radians(25));
      Vec2D a = new Vec2D(MAX_SIZE, theta-delta).toCartesian().addSelf(p);
      Vec2D b = new Vec2D(MAX_SIZE, theta+delta).toCartesian().addSelf(p);
      Vec2D c = new Vec2D(MAX_SIZE, theta2).toCartesian().addSelf(p);
      
      beginShape();
      fill(t.getColor().toARGB());
      vertex(a.x, a.y);
      vertex(b.x, b.y);
      fill(t.getColor().toARGB());
      vertex(c.x, c.y);
      endShape();
    }

         Its quite simple how it works, first I import the libraries, then I create some variables that I want to control. Next I create a setup defining the resolution of the window/render and turn on anti-aliasing (although, it didn't make much of a difference). Then I create the loop with what I want to change every time it generates a new 'render'. Here I make a color theme, this is when the libraries come in handy as the library, 'toxi.color', has a color theory system, were you can set variables that define how likely that color variation is to occur. For example, I write: 

    t.addRange("warm steelblue, 0.15");

         This adds a range of a 'steelblue' color with the chance of '0.15' and is with a 'warm' modifier which 'warms' the color. Then I also set the background to fit the color theme. Then I make the triangles have no stroke, so you only see the fill and set how many times I draw a triangle per frame. And finally I save each frame as a .png and freeze the frame for 1 second. Then the function, 'randomTriangle', is created with a random variable between 0 and 1 called 'r' and also 'p' which is a random vector and scaled by 'r*BASE_RADIUS*width' and then adds 'BASE.scale(width, height)'. Then we create some more variables for the 'explosion' radius and then we create the triangle randomly with a high chance of being in the radius and then we create the triangle with the colours we created in the frame draw loop. Now hopefully that makes some kinda sense, if not, it doesn't matter because its more important what the out come is, so here are some examples:





         Now on the weapon how it looks is quite cool in my opinion, I did a few variations as you can see here:





         I am still not sure which design to go for, but there is still work to be done as the handle needs some detail, so does the magazine and maybe the hand thingy near the front.

  • arcticnoah
    Options
    Offline / Send Message
    Polycount decided to queue the posts instead of uploading them... So these were duplicates, sorry.
  • arcticnoah
    Options
    Offline / Send Message
    Polycount decided to queue the posts instead of uploading them... So these were duplicates, sorry.
  • arcticnoah
    Options
    Offline / Send Message
    Polycount decided to queue the posts instead of uploading them... So these were duplicates, sorry.
  • Nolt
    Options
    Offline / Send Message
    Nolt polycounter lvl 13
    Really nice scripting idea :) I think it worked well.
  • arcticnoah
    Options
    Offline / Send Message

    Day 3:

         So I began designing the handle and magazine detail. 




  • ifrostbite7
    Options
    Offline / Send Message
    ifrostbite7 triangle
    I think you should maybe try this as a tiling pattern, it feels like it would suit that a lot.
  • arcticnoah
    Options
    Offline / Send Message
    @9thKnight
    Thanks for your kind words... :smile:

    @ifrostbite7
    Maybe, I will definitely give it a go
  • Nolt
    Options
    Offline / Send Message
    Nolt polycounter lvl 13
    Yeah I think @ifrostbite7 has a point. Unless you add some other graphics down the side, it might make a really nice tileable :)
  • arcticnoah
    Options
    Offline / Send Message

    Day 4:

        So I have tried an idea suggested by @ifrostbite7, which is to use a tiled version of the background (the pattern), so here are some screenshots:

    NORMAL


    TILED


    OTHER

  • ifrostbite7
    Options
    Offline / Send Message
    ifrostbite7 triangle
    No I mean in the CSGO game haha! If you can make the pattern tile, you can turn it into a pattern skin for the MP9 or the Bizon and submit and extra skin. Spray paint and anodized airbrushed skins project the texture onto the skin so you can have it applied randomly each time.
  • arcticnoah
    Options
    Offline / Send Message
    @ifrostbite7
    Oh... Sorry! I still am new to the CSGO workshop and its skin techniques. This makes a lot more sense now... :tongue:

    P.S. Update soon
  • arcticnoah
    Options
    Offline / Send Message

    Day 5:

         So this may be the last update as I hope to finish this today and post it tommorow. First, I decided how to go with the grip on the 'barrel holder' (I don't know its real name).





         Now here is the moment of truth, how does it look in the game...



         Now, here are a few things to point out, yes the projection painting is not the best, this is just how Blender does stuff, I am still trying to figure out how to make it paint straight through the weapon like 3D-Coat. But generally I think it doesn't look to bad. It still needs some detail on the stock and front sight thingy.
  • arcticnoah
    Options
    Offline / Send Message

    Day 5 (Continued):

         Finally figured it out, and made a little bit more changes.



  • ifrostbite7
    Options
    Offline / Send Message
    ifrostbite7 triangle
    You could try turning your phong settings down a bit on the left. Set the top to like 120 and the bottom to 80 as a starting point, helps to take that white shine down a bit.
  • arcticnoah
    Options
    Offline / Send Message

    Day 6:

         So, I have some good news and some bad news. First the bad news, I don't know if I will be able make it in time for the competition deadline and/or I can't finish of my other idea in time either. The good news is, progress has been made on this and I can always just post on the workshop outside of the competition deadline. So anyways, here is some progress (mainly in game). So I had major issues again with Blender's projection painting, but managed to work through it. Hopefully it looks good:



         There are still adjustments to be made and other stuff, but hopefully I will manage to finish it by tomorrow. What I did was projection to UV the overlay with a green screen, which gave me this:



         A pretty ugly UV. So I began 'cleaning it up' into this (still WIP):



        Then I got the design projection to UV and put it underneath the overlay UV, to give me this:



         And some padding (only on the overlay at the moment) to give me this:



         Once the overlay is fully 'cleaned', I will pad the design and overlay and hopefully get good results. :fearful:
  • arcticnoah
    Options
    Offline / Send Message

    Finished:

        So I did finish it just in time! :tired_face: So anyways here it is:







         So I finally finished it, this took way too long, but I learned so much about CS:GO's skin system and general texturing techniques. And if you like it, here is the Workshop post: Link I would really appriciate it and if you do like it, share it with your friends! Thanks once again Valve and Polycount for this awesome experience! Bye!

    P.S. My other project will be finished some other time...
  • arcticnoah
    Options
    Offline / Send Message
    Here it is on Sketchfab:

    model
  • flisky
    Options
    Offline / Send Message
    really like how this was created - can't say im a huge fan of the outcome - a bit too pop than sci-fi for my liking, but neat nonetheless.
Sign In or Register to comment.