Author Topic: Merricksdad's Black Hills Tileset (First Look)  (Read 12226 times)

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #150 on: February 23, 2015, 07:59:14 pm »


               

So far, the only update is that my house is slightly cleaner. I put off way too much real world work last week, and I am now paying for it.


 


I guess other than that, I've made a bit of progress on one crosser type, and have finished another new one. I may or may not get it public tonight. No guarantees of anything. Tomorrow is ENTIRELY free for me.



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #151 on: February 24, 2015, 05:43:30 pm »


               

Just finished fixing the sharp overhangs issue with all tiles which have zero walk plane at the top of the tile. This modified tile-sharing-wrap method should work pretty nice in un-tile-izing the set. I'm personally quite happy with it!


 


Just another image (w/area lighting 64 gray):


 


3V53OIu.png


 


Still a few sharp edges to work out near the bottom, but I think if I leave less walk space at the bottom, I can accidentally create more billowy rocks at the bottom. Look down the corridor above and you can see what I mean on the right. Instead of the Erode crosser rounding down to the flat ground, often with sharp rocks with hollow underneaths, I've left enough room for the erode crosser to bubble out at the bottom. This takes about a meter or two extra space off the walkable area, but makes the tile look more realistic. However, I do see reason to have some of those older tiles around, as water rushing down a channel like this might cut the bottoms off rocks as it strips sediment.


 


I've also been packaging up a few of the custom tools I am using to make these tilesets. I've started a MaxScript rollout which includes RemoveAllModifiers (for cleaning down your base model so you can start again, works on all selected tiles), ToGranite (applies the set of granitizing functions to selected tiles), FixDucklips* (randomizes the noise modifier seed so that you get a different fold effect), and TargetNext (selects the next mesh in the scene and zooms in on it to fit the window, great for fixing ducklips).


 


*What the heck are ducklips? That is what I am calling it when noise and tessellation work together to create a fold in the rock which turns in on itself, or an adjacent tile, in such a way that it looks like a duck bill. This can cause some serious visual issues, such as objects with negative volume. This is just as bad as having some of your faces normal inverted. The major culprit is the noise modifier and using a random seed generation. Some noise is really bad at the edges, and smoother in the center of the block. By randomizing the seed again with the FixDucklips function, you simply get another seed. This potentially fixes the ducklips, but not always. I just keep hitting it until I find a seed which fits my need.


 


Strangely enough, if you want ropey lava, ducklips might be good, especially if you can get some which don't have negative volume. Something to think of for lava flows, like Pahoehoe:


 


pahoehoe-lg.jpg


 


I'm just having too much fun with this set


 


73Yz3u1.png



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #152 on: February 26, 2015, 03:26:21 am »


               

Trying to finish up one more crosser, then I will pack it. I spent too much time today teaching a script to do all this for me. Almost done with that too. It should make creating future mountain parts much faster. Already I have reduced my redo time on all new parts from one hour per new crosser, to 5 minutes. Soon the script will be able to make mixers for my mountain crossers, and that will be spectacular! The newer method uses a few more polygons, but I don't think it will mean much in the end. Also been trying to puzzle out an easy script-created shadow block for each tile. Almost there.



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #153 on: February 26, 2015, 07:39:28 pm »


               

Here's a teaser of what the script is doing for primitives. Once the primitives are done, it is just as simple as applying the granitizing script. Before granitizing, the script collects an array of all faces which have a certain slope, so it knows what faces to apply the granitizer to, and which ones will be generally walkable. The future version will clone off and create a walkmesh of all the primitive surfaces before granitizing, correcting walkmesh material types in the process.


 


You might not think this is very important to be able to recreate my tiles via a script, especially when you will already have them in a hak. But the point of this exercize is A) to increase my personal building/debugging speed, 'B)' teach GMax to build tilesets on its own, and C) allow you to create variant tiles to further diversify the sets appearance.


 


pLJJ0Jb.png


 


No that isn't pink slime from ghost busters. Everything you see in the image was added, modified, and manipulated via script.


 


As you can see, Ive taught it how to leave an amount of space on all corners so that you can have a walkable plane top and bottom (which is strangely enough (129.5/1000)*(transition change per edge) +/- 0.01).


 


In addition to manipulating corner height, it can also similarly modify the middle section to create crossers which push or pull on the crossing ridge, creating puffier or sharper cliffs, similar to my push-in/push-out crossers.


 


You can also modify the centers of edges up or down, as well as the middle of the tile, to create stone spires.


 


Automatic welders take care of locally similar vertices, as well as integer-snap them, so you won't see sky through the mesh.


 


I can't wait to get this finished, so I can show you all the entire set of mountain terrain it is cooking up, fully complete with all crossers compatible.



               
               

               
            

Legacy_kalbaern

  • Hero Member
  • *****
  • Posts: 1531
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #154 on: February 26, 2015, 07:54:03 pm »


               

I'm really liking what what I've seen so far. I have a question however. Is there a way to implement the grass and shrubs as animations? If so, I think this tileset could easily do double duty for large cavernous areas underground. Regardless, I can't wait to start using this on my own PW one day.



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #155 on: February 26, 2015, 08:52:35 pm »


               

Why do double duty when I can just make two? '<img'> But you are correct, and expect to see a caverns set as soon as this one is done (actually three sets).



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #156 on: February 27, 2015, 06:44:02 pm »


               

Quick maxscript question, maybe somebody could help me here with it. If not I will ask elsewhere...


 


I have this function which takes local space within a transform and converts it to world space. I then have the opposite function. I pulled the majority of these functions from maxscript help forums online. Here is the code for the world->local function



   fn WorldToLocalPos obj ffdmod pos = (
      objTM = obj.objecttransform
      modTM = (getModContextTM obj ffdmod) * ffdmod.lattice_transform.value
      modBBMin = getModContextBBoxMin obj ffdmod
      modBBMax = getModContextBBoxMax obj ffdmod
      -- correct for 0-size bx
      boxSize = (modBBMax-modBBMin)
      if (boxSize.x == 0) then boxSize.x = 1.0/1000.0
      if (boxSize.y == 0) then boxSize.y = 1.0/1000.0
      if (boxSize.z == 0) then boxSize.z = 1.0/1000.0      
      (pos - modBBMin) * (inverse objTM) * modTM / boxSize
                -- was: (pos - modBBMin) * (inverse objTM) * inverse modTM / boxSize
   ),


I personally added the size correcting bit for 0 volume bounding boxes, as the zero height bounding box was found to crash max. Something I also learned while playing with FFD boxes was that max handles them in the exact same way this code does, which is why a 0 height FFD box still has its top control points set to non-zero.


 


Anyway, my problem is this...


 


passing this [333.333,-166.667,1000] inside boxSize [1000,1000,1004.53] gives this [333.333,-166.667,1995.47]


 


I don't understand matrix math since high school. Could somebody check my function for missing brackets, or something else that is wrong? I know the mistake is in the last line, but I don't fully understand what the matrix math is doing, so I don't know where to put the missing brackets.


 


 


Edit:


 


Nevermind. I see the problem. While the visual bounding box of the FFD modifier appears to be placed at 0,0,0, the actual transform center is half its overall height. Stupid. Gmax still shows it as 0-based, but asking it details about itself shows the opposite. The formula just needs to take that into consideration. .....Maths


 


Edit again:


 


Nope, my mistake. The problem was this:


 


if local to global is found via (modBBMin + (pos * boxSize) * (inverse modTM) * objTM)


 


then global to local must be found via (pos - modBBMin) * (inverse objTM) * modTM / boxSize


 


The error then being that modTM was inversed in the function for some reason. Which is probably why the guy who originally asked for it couldn't use it.


 


I've corrected the function above in case anybody wants it.



               
               

               
            

Legacy_Draygoth28

  • Hero Member
  • *****
  • Posts: 574
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #157 on: March 03, 2015, 11:23:25 pm »


               Any updates to report to those eagerly awaiting this magnificent tile set?
               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #158 on: March 04, 2015, 04:11:00 pm »


               

Well, my wife had a 4-day birthday party....and I have a lot of cleanup to do. But I will be back on it shortly.


 


Just a non-visual update, Ive modified the rock to be more bumpy again, but this time it bumps up a bit more, has less ropy duck lips, and is more rounded overall. It looks pretty cool.


 


If you guys don't like that, both varieties can be released separately, since the script can switch between the two, whole set, in just a few minutes.



               
               

               
            

Legacy_rjshae

  • Hero Member
  • *****
  • Posts: 553
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #159 on: March 04, 2015, 04:23:14 pm »


               

Four days? Her delivery must have been legendary... '^_^'



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #160 on: March 04, 2015, 10:11:04 pm »


               

We did it over a weekend. The first two days were supposed to be just family fun, but my kid was a beast instead and ruined it for us. The third day was just me and her, and we saw Kingsman (awesome), ate at our favorite asian restaurant, and had a road trip while the kid was in school. Fourth day I spent cooking for a few hours while she watched concerts on our big screen with her friend. Oh I got messy, this kitchen was ruined! Home-made french fries, everything pizza, and cake (she made the cake, vegan german chocolate), with giant mochas. And during all that, we did paperwork on another house (again, third time).



               
               

               
            

Legacy_MerricksDad

  • Hero Member
  • *****
  • Posts: 2105
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #161 on: March 04, 2015, 10:23:35 pm »


               

I spent about an hour today teaching the script to do 4 crosser types from a struct array. I can then predetermine the crosser stats (push/pull/name/output file marker, etc), and then put those on my panel in a dropdown box. Or I can cycle through them in script with a nice loop.


 


The erode and dilate crossers took a slight change in that they shove the middle of the tile by about 666.67 from one side, and 333.33 from the other, instead of moving both by about 450. This maximizes the usable area, but keeps the look. 666.67 was the number needed to get the erode and dilate crossers to touch at the edge again. The push in/out crossers are half that, giving you just enough room and variation here and there to be useful.


 


The other crosser I was working on was spires. Since I took the spire idea and merged it with the base rock idea, it might not get packed separately now. Instead, the rock is more like the needles highway in SD, rather than rounded and plain.


 


Again, if the spires/needles looks is not to your liking, I can just pack the others as a variant hak.


 


This image might give you the basic idea of what I did. It shows 4 adjacent tiles with the dilate/erode combo. Beside that, it shows the dilate and erode separate from each other. (gmax pic, not in game)


 


gxXep0u.png



               
               

               
            

Legacy_rjshae

  • Hero Member
  • *****
  • Posts: 553
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #162 on: March 05, 2015, 04:44:30 pm »


               

Not to sound negative, but that last shot looks a little less realistic than your previous work. The appearance is perhaps more like a set of stalagmites than a worn rock formation.



               
               

               
            

Legacy_henesua

  • Hero Member
  • *****
  • Posts: 6519
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #163 on: March 05, 2015, 07:45:54 pm »


               

I think it depends on what you are used to, rjshae.


 


I'll admit that the basalt formations I have seen are much more regular, like vertically extruded hexagonal columns of stone all packed together. But this is based on the Black Hills which are much older than the formations I have seen and perhaps more rounded like this.


 


Iron_Creek.jpg


 


I prefer the kind of formations one sees along the columbia river gorge of oregon, but this is Merick'sdad's Thing. And I think this is what those formations look like where he is.



               
               

               
            

Legacy_rjshae

  • Hero Member
  • *****
  • Posts: 553
  • Karma: +0/-0
Merricksdad's Black Hills Tileset (First Look)
« Reply #164 on: March 05, 2015, 08:29:07 pm »


               

Okay. Then it's probably because I can't see the fracture lines in the texture very well due to a low level of contrast.