Categories
October 2020

Day 11

10/22/2020: The first video today covered the creation of grass for the house scene that is the subject for this Maya tutorial and I couldn’t wait to dive in and start experimenting with what it introduced. This video introduced two features – one, “Paint Effects” which are paintbrush like mesh generation tools that was used to paint simple (but convincing) grass. The other, which immediately got me experiment, was instancing with MASH. To aggressively oversimplify, MASH was used to scatter arbitrary geometry across an arbitrary surface. The tutorial used the paint effect brush to make a patch of grass, then used MASH to scatter that patch of grass and randomly rotate it across a “lawn” surface. With just basic materials and the Maya ray tracing renderer (named “Arnold” for some reason) it was trivial to make a pretty convincing looking lawn. It was also an impressive test of Maya’s rendering capabilities, because it handled me rotating a scene with comfortably over ten million verts in it without any kind of trouble at all. The raytracing certainly chugged on it, but I digress.

The first thought was, as has been an unofficial theme of these first two months – greebles. So I fired up my little Taiidani scout-like sketch, made a real simple panel, and started trying to scatter that across the geometry using MASH like I’d just been shown. This definitely showed some strengths and weaknesses of just slapping MASH onto some complicated geometry. When using a mesh as input, you have a couple of different distribution types across that mesh. “Scatter” was what we used for a lawn and for a lawn it works great. For the more complicated shape I’ve defined for the fighter’s fuselage there’s quickly issues apparent: MASH has no way of knowing what’s an appropriate place to put a fairly large chunk of detail on (see below):

The geometry can be distributed to a random face’s center and then scale the tiled geometry to the face, but that encounters a few more issues: namely I’ve bevelled a lot of panels into the fuselage already. There’s a few that look pretty good but a lot that does not look good (see below):

Creating geometry that serves as a mask works a bit better – here I extracted the largest faces in the second and third sections of the fuselage and used that as my target mesh to scatter panels across. I also used a MASH random node to introduce some random scaling differences. On a few of the panels it looks pretty good still but there’s no way to avoid the awkward diagonal panels. The most obvious use case I can think of is something like a Star Destroyer which has enormous flat panels without the more complex geometry of a Homeworld style spaceship. Another obvious use case is in building detail panels that can then be more meticulously placed into the model (see below):

This panel took a lot longer to make than I’d like to admit. The goal was to try to get something that was crusty with some natural feeling gaps, very much Star Destroyer tiling style. Some overlap is visible which is not a great look, and there’s two different MASH networks – one with the vertically extended panels and one with the horizontally extended panels as the MASH random function doesn’t seem to be able to have stairstepped rotation (so randomly choose rotations at 90 degree increments does not appear possible at this time). It’s still looking like handbuilding more complicated detail pieces is going to be required – I made a really fun little vent that looks awful scattered over this area (see below):

Another outcome that surprised me was that the MASH network outputs geometry, but that geometry tends to cause Maya’s boolean tool to crash. I’d wanted to try and create snakey intrusions on a panel but that didn’t work out even with plenty of subdivisions.

From the other videos an offhand comment intrigued me greatly: “I like to attach paint effects strokes to curves and then convert the strokes to polygons as a way to quickly create cables and wires and stuff.” After following along I tried my hand at a quick HW style three-pipes detail object with gratifying results after ~30 minutes. Most of it was trying to get perfectly straight tubes except for the turns:

And that concluded the Eric Keller intro to Maya 2019 series. I’ll have to figure out for sure what my next project will be to try and use all of the lessons in this tutorial. One option is to create a (probably simpler) house with various bits of lawn ornamentation and lit accordingly. Another option is to pursue existing projects – either a Homeworld frigate or perhaps a Freespace fighter. I’ve got a tutorial lined up for a robot character so I may hold off on the giant robot until then.

Categories
October 2020

Day 10

10/21/2020: Study today and the last few days have been heavily focused on learning materials, lighting, and animation within Maya. These are all enormous and critical features that – while very interesting – are secondary to my main goal of getting a lot better with the geometry. Here’s some notes on those three topics.

For UV mapping and materials, the most useful piece of information has been that for components that are definitely going to be used repeatedly throughout the mesh, UV mapping them and then duplicating them saves time in the long run. The example in the Intro to Maya 2019 tutorial was making the bolts holding a deck chair together. By UVing the first bolt, and then duplicating it out repeatedly, all instances of the bolt would have the same UV coordinates. You could spend an entire career getting deeper into Maya’s materials, which are incredibly powerful for rendering. Considering my short term goal is to really improve 3d modeling for importing into video game engines, it’s going to be useful to be able to get nice previews of normal maps and bump maps but they’re not critical.

Animation is definitely VERY exciting. Maya works with a timeline where objects’ transform (move, rotate, or scale) between different fixed keyframes. Maya lets you control the normals of the vectors between these points on the timeline (so you can have a stairstep immediate transition or a smooth curve or a direct line or shape it yourself). The most exciting feature here was that you can define multiple layers of animation that all apply to the object. These different layers can also be weighted and that weight itself can be changed overtime. The example in the tutorial was excellent – it was the animating of a weathervane turning in the wind. The bulk motion of the weathervane was handled in one layer of animations – swinging as the direction of the wind changes. A second layer of animation was defined for the weathervane shivering in the wind. The two were immediately and seamlessly overlaid so that even as the weathervane swung with the change in wind, it still oscillated a few fractions of a degree regularly with the wind blowing around it. That’s an incredibly powerful animation system and makes me think of thrust vectoring planes on spaceship engines as a possible application.

My hope for the next mini project is a robot character, an armored suit for a humanoid figure. That’s a hell of a lot further afield and more ambitious than the basic Taiidani fighter I was working on earlier this month, so we’ll see how it goes.

Categories
October 2020

Day Nine

10/15/2020: Today I got back into the tutorials and right at the end of the vidoe about the curve tool the instructor busts out that surfaces -> revolve lets you take a curve and spin it around an axis and produce either nurbs surfaces or polygons as output and that’s just awesome. Since Maya preserves construction history you can even manipulate the curve after executing the revolve command, basically like you were turning pottery on a wheel. So that’s pretty incredible already – I’d love to be able to do n-fold rotational symmetry but for now this will be extremely useful in creating any cylindrical object. The other topic I was able to cover today was using deformers. Since deformers can themselves be deformed the exercise was to take a very static fish, curve its back and twist its tail.

Inspired by that I went back to my Taiidani fighter model and in a few minutes, used the Lattice deformer to arch the back a bit more to get closer to the classic hull plan. No p3d at this time, just a screenshot for now:

The grid outline around the main body is the Lattice deformer, which lets you selectively deform the geometry within. Each of the vertices in that lattice can be moved to change the deformation. So here it was a pretty easy task to pitch the nose down slightly and bring the centerline up without messing around with soft select or moving any faces. Pretty neat stuff.

Categories
Complete Projects October 2020

Taiidan Fighter Complete

10/13/2020: So after a little over one week of working at it I think the wise thing to do is call the fighter complete. Instead of screenshots, here is a p3d.in link that should allow you to view the fighter at your own discretion: https://p3d.in/NFFjG

In retrospective, there was a lot to learn throughout the project – at first it was getting used to smoothly transitioning my camera from perspective to the various x/y/z axis cameras at my own volition instead of following along with the tutorials. Then it was experimenting with instanced geometry. Maya knows how to render that properly, but p3d sure doesn’t so I had to Modify – Convert – Instance to Object and then shuffle geometry around a bit before exporting.

Instancing geometry was definitely exciting when it came to details like the gun clusters and the nozzles in the thruster block, but led to unusual behavior when attempting to mirror or duplicate objects. The last, and best looking, piece of the fighter that I worked on was the four big winglets with their rotating bases. Instead of selecting the grouped base + winglet within the outliner, I mirrored each piece of geometry separately and rebuilt the heirarchy in the outliner. Moving things along normals and adjusting fine details on the surface is definitely possible within Maya but instead of needing to painstakingly define each normal, there’s a lot of slide commands and options to constrain movement along faces. Starting with a more complicated hull plan and then evolving from there would have been wise as right now the fighter doesn’t have the beautiful arched back of the Taiidani scout.

In order to ensure that this sketch of a fighter was original, I purposefully avoided consulting any concept art from the original games and instead wanted to make something Taiidani from memory. This helped the fighter feel a bit more original. I think the gun cluster came out fantastically, as did the four large wings, and I love the midsection. This also meant that I wasn’t working off of any kind of sketch or reference and just doing pure geometry work. It’s come out as a sort of hybrid interceptor-scout right now, but I love the character the two little winglets on the fuselage add. Weak points are the cockpit and the fuselage.

There’s still probably two weeks of work left detailing the thing and then of course texturing but I’m going to declare this done for now and return to taking lecture notes. I think a week of tutorials and a week of homework projects should be a pretty good rhythm. See you round, and I’m going to go play some Homeworld.

Categories
October 2020

Day Seven – Taiidan Fighter

Day Seven – 10/08/2020: Slow going in parts today and yesterday, but there’s been progress with this sketch of a fighter. I’ve had a devil of a time moving objects along the normals of faces or edges, which is unfortunately very helpful for creating complex shapes, but despite all of that I’ve been able to make some forward progress on the ship as seen below. I’ve been trying to work on generating detail panels but am still blocking in a few chunks of the hull.

I should get a p3d link for this setup with this model going forwards. I am quite proud of the way the nose is coming together but need to elegantly integrate the cockpit into the fuselage.

I had more trouble than I was prepared for integrating the vanes in the big midsection vents, there’s definitely still a LOT I have left to learn about how Maya handles certain kinds of mirroring operations.

Categories
October 2020

Day Six – Taiidan Fighter

10/06/2020: Late post today – got a late start this morning. After five days of largely following along the tutorials, today I tried the traditional first step of getting used to a modeling program – sketching up a Taiidani fighter of course. This one is obviously pretty far from done so far, but I like how it looks. I was able to use the instancing stuff to perfectly position the six muzzles in the gunpods below:

For a few hours I’m honestly quite pleased – I was definitely able to push past what I tended to use in Wings and really lean into multi object geometry (with the intention of booleaning things together in time). There was a particularly poignant moment working on the midsection where I found myself longing desperately for anything like the ability to precisely scale an edge with numeric input like in Wings. It gave me a monster headache as I looked through all the documentation I could trying to figure out why redo, recent commands, ctrl+Y, or G didn’t seem to let me repeat the command when I realized the problem was that I was trying to modify a 4-fold symmetric poly – when what I needed to do was recreate the poly the way I wanted it and duplicate it out four fold.

The plain cube sitting in the middle of the ship is where I’ll be picking things up tomorrow. Another success story was the aft of the ship here:

The engine nozzles are instanced as well, and that little detail panel (or rather, the space where a nice and fun detail panel might someday live!) are also attempts to really lean into what Maya can do. I think I’ll see where I can get this guy after a day or two more and then continue with the tutorials, but for now it’s exciting to start making stuff more earnestly with a new program.

Categories
October 2020

Day Five

DAY FIVE – 10/05/2020

Back on the horse after a weekend visiting my wife’s parents and grandparents. Something I appreciate about this instructor consistently is the emphasis on best practices – Maya saves the history of an object as you’ve been editing it, both in terms of commands executed upon it (so for instance I can roll back a bad bevel, or look at the parameters of a bevel I did on another poly) as well as the transformations it has undergone. Something the instructor recommends is using this to move an object back to the origin if you want to edit it later so you can take advantage of all three axes of symmetry. This is a great example of best practices – it is totally possible to model in place simply by doing math in your head or by using the objects axes instead of the world axes for symmetry, but moving things back to the origin is simpler and more reliable.

Something quite lovely in the modeling toolkit panel in Maya (that the instructor calls out as extremely useful in hard surface modeling) is a control for transformation constraints allowing you to only move verts along edges or along the normals of adjoining faces. Incredibly exciting – I’ve spent a LOT of time in recent Wings3d projects constantly defining normals I’d like to be moving objects along to ensure that the geometry remains consistent. Also Maya’s boolean operation is so unbelievably, heartbreakingly easy and good. Do you have ANY IDEA how long I spent hunting and killing verts when merging everything back into one shell for UV mapping? There’s three boolean operations… you know what I’ll just quote my discord ravings about it, mildly edited for readability:

Maya’s boolean operations may be worth the price of admission all by themselves. You’ve got three and they are excellent and simple.
1) Union. It’s what I’ve often wanted “Combine” to be – just make one mesh lol. Finds all the intersections and puts verts there and makes one poly out of two.
2) Difference. HOLY SHIT. YOU EVER WANT TO DO BATTLE DAMAGE? It’ll subtract the intersection of one poly with another – we’re working on lumpy rocks right now and it’s amazing.
https://www.dropbox.com/s/xxrszfbgvsqgyzp/maya_diff_1.png?dl=0 doesn’t look like much, just two lumpy rocks kinda on top of each other
BUT THEN! Look at that awesome crater!
https://www.dropbox.com/s/mrj8qco2r3pjy3y/maya_diff_2.png?dl=0
3) Intersection. The remainder after a difference operation. Great for little chonks of debris, or getting nice dynamic angular rocks.
https://www.dropbox.com/s/yh3ieabn4fsmsdb/maya_diff_3.png?dl=0

I continue being ebullient about the boolean operation and all of its incredible, wonderful implications. To summarize, Maya’s powerful object history lets you move surfaces around after applying a boolean operator to them and it will update in realtime. This essentially allows you to move an arbitrary void through your geometry if you want to do things like model an asteroid or apply damage to a spaceship, ugh it’s just incredible. The “multi-cut” tool is useful for making arbitrary edge loops and can be set to snap as well, super useful for quickly defining geometry.

The sculpting tools are even nicer for rapidly banging out plausible rock geometry
https://www.dropbox.com/s/vfqi3gwvxd9yfmj/maya_sculpt_1.png?dl=0

But I rapidly created a horrifying lump when attempting to make something with a bit more purposeful structure.
https://www.dropbox.com/s/486k6r6ajv4su8i/maya_sculpt_2.png?dl=0

Working at that a bit more, Sculpt is… probably something I need to get my tablet and stylus connected for. Definitely very interesting to be sure but tricksy for uniform hard surfaces.
https://www.dropbox.com/s/i61lwor37vk2hbo/maya_sculpt_3.png?dl=0

One of the other really cool things we’ve worked on today is the ability to have the same shape within multiple transform nodes. https://www.dropbox.com/s/tj4vuyx5nqdj0rx/maya_shapenode_1.png?dl=0 Without claiming any brilliance here, I’m just following along a tutorial here – I have multiple named transform nodes all incrementing as one would expect in any 3d modeling program’s outliner. However beneath each transform node I have the same shape4 geometry and as you can see in the perspective view, selecting faces on one of those geometry nodes selects them on all the others. This is a really, really powerful piece of capability. I have NO IDEA yet how it’s going to work with export to more mundane file formates like .obj, but it’s definitely a really fun way to do detail panels like I was talking about at length last week. Another fun note, transform nodes contain movement, rotation, and scaling data so I can keep consistent geometry on a consistent piece of detail (Say a radome, or a panel or a hatch) but if I move rotate or scale them they will retain that distinctiveness. That’s all available through the Duplicate Special command which allows the creation of duplicate objects as I understand them from Wings3d or a duplicate instance, which is a separate transform node for the same geometry.

I’m definitely still struggling with my instincts – I did a little excursion with a poly primitive and didn’t get too far. I kept wanting to use the Wings3d approach, grab and extrude faces to get a single ever more complicated piece of geometry. I think I need a little more before this stuff starts really clicking.

Categories
October 2020

Day Four

10/01/2020: Day Four! Right off the bat I really appreciate the approach of the instructor for the Gnomon Workshop Maya 2019 tutorial, as the various project files have been impressive demos of what Maya is capable of and now we’re actually going to start adding stuff to it in a guided fashion. The project that came with the tutorial is a house, and so today theoretically we’ll be making some porch furniture. We’re finally getting into a paradigm I’m pretty comfortable with from Wings3d – creating polygons and moving edges and verts around to define shapes. A nice little tip the instructor provides is that if you have an edge that intersects multiple other edges you can use ctrl+del to remove an edge and all of the verts where it intersected other edges.

Another interesting difference as we get into modeling with polygons is that in Wings, one of the most important uses of the Bridge operation was to turn two polygons into one polygon with a tube connecting them. In Maya, Bridge operations can only be performed between polygons that are already combined. Now that the instruction has switched from a lecture over various functionality into actual guided modeling.

BEHOLD, MY CHAIR:

I’m getting a bit more comfortable with the Maya workflow of pressing and holding spacebar to activate various tools. It still feels a bit clunky to try and hunt down specific edges compared to Wings, but that’s likely the years of familiarity with Wings speaking. My instructor certainly moves with ease from view to view or function to function so it’s not like it’s impossible to even with practice.

As far as the chair goes, I’m interested how object cleanup is done. There’s a handful of unnecessary edges on the cutouts around the chair arms, for example, though I’m given to understand that these days as long as you’re under like 10k polies your objects will work just fine even in a videogame. I also note that face selection works just like bridging – the objects need to be combined before you can select faces across multiple objects. That ought to make it a bit more interesting, my workflow in Wings was always working with one object as much as I could to, in theory, make UV Mapping and such simpler. The porch chair was a great piece of practice to break that habit as the instructor easily guided me through the process of using a Maya function for duplicating objects with a common displacement to quickly make the boards making up the seat using shift and D along with a single move. It definitely got me thinking about the detailing workflows I was talking about yesterday, kitbashing, that sort of thing.