1 Tutorials LightWave 3D Modeling & HDRI Lighting a Gamepad Qui Jan 27, 2011 8:44 pm
Admin
Admin
by Daniel (aka da_duke) | |
<table class="text1" border="0" cellpadding="2" cellspacing="4" width="100%"> <tr valign="top"> <td> ok, some basic stuff ;-) a simple gamepad, modeling using subpatch. i used this gamepad for my 'proper hdri lighting' tutorial so it's kinda simple and lacks some details, compared to the original. </td> </tr> <tr valign="top"> <td> we will use some primitives for that operation and so we start with a disc. it's not really important how many sides we have but around 16 is good for creating the big buttons. select disc tool and use the numeric field to enter 16 sides, 3-4 cm diameter and a high of around 1 cm (y axis). place the disc around 3 cm left from the center (or right if you want). switch to polygon mode and select the top disc and the 6 polygons facing to the center. delete those polygons and you should have an object like shown in pic1. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> just mirror this part to the other side and connect the opposing parts with selecting the points and 'making polygon' (key p). select all points on top in clockwise direction and create a new polygon. mirror this polygon to the bottom or just create a new one in the same manner. select both polygons and hit key b for bevel. bevel the polys around -3.5 mm inset and 4.5 mm shift. hit the secondary mouse button and bevel again around -4 mm inset and 1.5 mm shift. deselect the top poly and bevel again the poly on the bottom, just an inset of -5 mm, it doesn't matter. delete this polygon and select all the points of the former polygon and use average weld to weld them in the middle. you should have an object like the one shown in pic2. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> go to a new layer and create a new disc, use the same value for sides and place the disc that way that the border matches the inner shape of the last polygon we've created. the disc tool should have kept the last values so the new disc is at the same place. we just need a flat disc so the high doesn't matter. delete all polygons except the one on top. move this polygon to the same high as the top polygon of the body. now bevel this poly around -2.5 mm inside and no shift. hit the secondary mouse button to bevel again (ergh, works only if you have selected this polygon before, otherwise you will get a kind of hedgehog ;-)). bevel the disc around -0.2 mm shift and no inset, then -0.2 mm inset and no shift. copy this to another layer, we'll need it later. go back and start to bevel the disc 4 times like a flat ball. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> we're continue our bevel session, now we go inside the controller. use the same disc and bevel this disc around -0.2 mm shift and no inset, after that bevel the disc around 4 times and follow the outline shape we've created before. just bevel one times more to go a step deeper. now bevel this disc some millimeters inset and no shift, delete the disc and average weld the points. small hint for selecting the points. there are some plugins for such stuff but i'm always too lazy to search and install them. so i select the polygon, hit key + (hide all unselected polys) switch to point mode, lasso select the points, switch back to poly mode, delete the poly, back to point mode and average weld. (select, +, ctrl+g, select, ctrl+h, delete, ctrl+g, w [i use the key w for average weld instead of info]) this works fine every time and if i have too complex structures i use the info window to select all visible points </td> <td align="center"> </td> </tr> <tr valign="top"> <td> go to a new layer (or not, it's up to you) and create a ball. place it at the center of our 'crater' and try to fit it into the hole. use 8 sides and 8 segments. select the bottom part of the ball and stretch it until it fits into the hole. now delete the 8 polys on top of the ball and merge them (key shift+z). bevel this new poly a small step inside and shift it a little bit inside the ball, use the secondary mouse button to bevel 2 or 3 steps more to build a small dent inside the ball, this is for the thumb. hit 'tab' to check if the ball looks like we want </td> <td align="center"> </td> </tr> <tr valign="top"> <td> ok, now we want to create the 6 buttons. go to the layer where we copied the other disc. bevel this disc a little toward heaven so it will have the same high as the border. bevel the disc 3 or 4 millimeters inside. kill the disc we don't need it anymore. now create a smaller disc with 8 sides and 3 segments. use a radius of 6 mm and a high of around 5 mm. select this disc and use the rotate tool now, change the action center to selection and rotate the disc 22.5 degree. select the bottom polygon and bevel it a little outside (0.5 mm) and then shift 2 times up (around 1 mm per step), last bevel it around 2 mm outside. delete this disc. select the top disc and bevel it 2 times around 1.5 mm inside, delete the disc and average weld the points. now create an array of 3x2 disc's with the array tool from the multiply menu. if the array doesn't fit into our previously created disc just hit undo and stretch the points from the border a little bit inside. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> copy the buttons to the first disc if you worked on a separate layer. now we have to do some little 'select points - create poly' stuff. first create 4 polys between the buttons. after that weld and create polys to connect the buttons to the outer disc. i don't want to explain each single poly so just look at the image and try to do the same ;-) two ways: just create one side and mirror the new polys to the other side or create both sides if you don't want to fitting around with the mirror tool. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> ok, now back to the very first piece we did. kick the poly from the top and select the two polys between the disc and the two polys on the bottom connected to those 2 we've selected some seconds ago. use knife to cut those polygons, place it on the center of the controller. deselect the polygons except the polygons on one side of the controller which will be hold the big buttons. use knife two times for each side to cut these polygons again. turn to the bottom and switch to point mode. select the points in strange position and weld them with the center point. sounds strange but look at the picture and you'll understand it. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> now move the parts between the disc's a little bit inside, do it how you like and check with hitting tab if it looks like you want. copy the big joystick and the six buttons in one layer and start to connect them with 4 point polys. just connect them and cut them with knife at the middle. kick the two polys at the big button side or cut them with knife and connect the inner points to the middle point. copy this object to the main body of our controller. merge or weld the points from the two parts but be careful with 'fixed merge' better select the points you want to merge before. if you've deleted the polys on the big button side just create them, otherwise merge them properly. after switching to subpatch mode via the 'tab' key our object could be look like this. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> back to the buttons. this flat version looks kinda stupid and it's not like the original. select the 6 buttons including the surrounding polygons (leave 1 row of the 'disc' polygons beneath the notch unselected) then use the magnet tool to curve out the keys. play a little bit with falloff and radius until you get a smooth and round shape. i use radial and i define the range with building a shape with the secondary mouse button, include all selected polygons. don't care about the outer ring of unselected polygons, if you finish your shape just use the move tool and move the buttons upward until you have a nice round shape and a similar high to the joystick. (put it in a background layer) after some tweaking should the result look like this picture. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> so, the buttons are quit unergonomical at this moment so use the last selection and expand it with '}' until you have the notch included. cut it and paste it back, select some polygons and select all connected with ']' and use rotate to rotate the selection 22.5 degrees counterclockwise. that's maybe not the best position but we need it to paste it back correctly. merge the points with 'merge automatic' you should get a message '16 points merged'. if not, you can see the non merged points, they are located between some sharp peaks in the polygon structure. switch to polygon mode (no subpatch) select the points and weld or merge them manually. if you still have selected the polygons hit 'q' and type in something like small_knobs or so. use a black color and some specularity so that we can see the surface better. select the joystick cave and give them a similar surface with the name 'joystick_body' </td> <td align="center"> </td> </tr> <tr valign="top"> <td> there isn't so much to do left. we still need the big buttons and a small notch around the controller. we will do this in one step because we can save some work. we have to select the polygons around the controller. if you use lw7 or higher just select two polys and then switch to bandsaw or bandsaw pro, otherwise select all the polys and use the knife tool. we need two cuts, around 40% and 60%. now switch to point mode. if you have used the bandsaw the points we need are selected now, if not use the 'select points of selected polygons' trick i had explained above. smooth shift these points around 0.5 mm outside to keep the round shape of the controller. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> back to poly mode, we need the line of polys between our previously cuts. select the line manually or use bandsaw without divide to select the line. now use smooth shift and shift this line around 1 mm into the body. if you want really sharp borders then do this 2 times (you have to adjust the max smooth angle to avoid a scaling of the notch) but i think only one step should be ok. you can change the size of the notch with moving the points of our cuts closer together. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> now go to the place where the big buttons are located. select the polygons for the buttons. it's ok if you are work on one side only and mirror the part later, so we can save some time. select smooth shift and click with the primary mouse button only once but without moving the mouse, switch to move (key 't') and move the selection around 2 or 3 mm into the body. deselect the polygons except the small ones from the notch. use move to move the polygons to the same position like the other polys. (what the f#$% is he talking 'bout?) ok, check the picture and you'll know what i mean. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> next step is to weld some points. toggle to polygon mode (key 'tab') and then switch to point mode. if you zoom close to the polygons we've just moved you can see some points close together. weld those points and then use statistics to select the 2 point polygons and delete them. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> select the polygons at the bottom of the ditch. hit 'q' and give them a surface called 'big_buttons' or so. then smooth shift the button 2 times. use the 'click with no shift and move' trick to avoid strange shapes. first step is to the border of the body and the second step is out of the body. you can tweak the shape of the button with moving some points closer to the border or just keep it like it is. now mirror the part of the controller or do the same on the other side. </td> <td align="center"> </td> </tr> <tr valign="top"> <td> so, that's all, i think you are able to add a cable by yourself. just some hints for the texturing. i used an uv map for the bumpmaps for the small buttons. just select the top of the buttons, create an uv map with planar mapping on the y axis. make a screenshot of the map, go to your pixel program and place some numbers at the right positions. about surfacing, check my 'hdri lighting' tutorial for some hints. add some noise bumpmaps to the body and a gradient for the reflections to simulate the fresnell effect.<table class="text1" border="0" cellpadding="2" cellspacing="4" width="100%"><tr valign="top"><td> in progress so stay tuned or send comments to [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] i saw a lot of renderings with radiosity and hdr and i read a lot of tutorials about the usage of hdr and radiosity. and sometimes i'm really surprised about the things people thinking and doing. i saw often too much reflections, wrong reflections, too less contrast and last but not least, renderings with a background picture instead of a hdri. sometimes it was a little bit 'radiosity just to use radiosity' or 'radiosity only for the look' (you know that clay like stuff with this nifty noise spangles all around) so what's the problem with hdri lighting? i think the first big mistake is to switch from classical lighting to hdri lighting without thinking about the nature of light and the behavior of hdri lighting. this is based on several things. reflections, diffuse, overall brightness. it took me a while to figure out why some of my renders (and others) are not like i want. i used a hdri and reflection gradients, photo textures, depth of field and all this stuff but it was not like the original. so i will start to explain the details now. </td> </tr> <tr valign="top"> <td> i will compare this procedure with a photography of an object. since LightWave® is able to produce high dynamic renderings with the floading point render engine it is easy to tweak the result after rendering the image. so let's begin with the first important thing - reflections. we don't talk about metal reflections now i mean such things like dark plastic or ceramic stuff. since dark materials absorbing nearly every light hitting the surface they are only visible because of the reflections or in comparison to brighter materials. </td> <td> </td> </tr> <tr valign="top"> <td> since we don't use glossiness with hdri lighting the reflections of lights are only adjusted by the amount of reflection of the surface. if you take a look at a photography you will see that the reflection of a window is over exposed because the exposure is measured for the whole scene (for example, not generally) and so the window is too bright. if you adjust the reflection of the surface to get a good reflection of the window you will have only a small reflection of the environment and nothing more. that's wrong. let's check the following pictures, we can see that the whole room is visible on the black and shiny parts of the controller. </td> <td> </td> </tr> <tr valign="top"> <td> if we say we have around 2-3 percent reflection at an incidence angle of 90 degree we have to tweak the environment that way that we'll achieve the same reflection on our model. we don't have to spend too much attention to the parts where we look with a very flat angle onto the model because 'mr. fresnell' will do the trick for us (add a nonlinear gradient for the reflection layer or use a fresnell shader). after a first test rendering we'll see that there is nothing to see on our model. that's bad, indeed, and the reason for that is - our hdr is too dark. many hdri's and mine too are adjusted to get a good visual expression. nobody want to see an over exposed picture. since we know the amount of reflection is given by nature and we don't want to change the hdr there is only one way for that - we have to increase the brightness using the image world plugin or with the amount of radiosity. the latest option might work well for backdrop lighting but can produce strange effects if we want to use monte carlo. </td> <td> </td> </tr> <tr valign="top"> <td> after changing the brightness and a test rendering we'll get a helluva bright picture. the reason for that is simple. as long as we used 'normal' lights within LightWave® we adjusted the surfaces to get nice results with lights between 0-100 'LightWave® units'. but a hdri uses a big range for the light and after increasing the brightness we have lights with an intensity of 1000 or more. this ain't good for our surfaces. </td> <td> </td> </tr> <tr valign="top"> <td> so we have to lower the diffuse value of our surface until it matches the expectation. unfortunately we have to change the reflection value a little bit. a natural surface 'should' have 100% reflection at a view (incidence) angle of 90 degree but this reflection is the total amount of total reflection and diffuse reflection. since we simulate the diffuse reflection with the diffuse parameter the reflection is too heavy. decrease the reflection a little bit. the picture on the right side is close to our original. it's not the same hdr, i shot the photo later and the controller is not the same. the reflection blurring produces light bulb on the left which is too big. you can try to change this with decreasing the reflections or adding a gradient to the diffuse value to use a lower diffuse value for an incidence angle of 90 degree. </td> <td> </td> </tr> <tr valign="top"> <td> here now the settings: image world brightness: 300% global illumination: ambient light - 0, radiosity - backdrop only - 100% - 12x36 surface data: main body of the controller: diffuse - non linear gradient, incidence angle, 0 degree - 35%, 90 degree 20% (this will increase the affect of light to the surface) reflection - non linear gradient, incidence angle, 0 degree - 65%, 90 degree - 6% (the 0 degree value should be 100% but that's not correct for LightWave® since we use diffuse too) shiny parts except buttons: diffuse 0, because the surface is black, reflection - non linear gradient, incidence angle, 0 degree - 100%, 90 degree - 4 % the other parts are nearly the same but with additional fractal noise for bump and a bump map for the numbers on the buttons. </td> <td> </td> </tr> <tr valign="top"> <td> the picture is too perfect so feel free to tweak the surface with some dirty maps to add tiny adjustments to the reflection maps (use substract for blending mode). also the color range and the contrast is compared to a photography too good. and, the textures ;-) </td> </tr></table> </td> <td align="center"> </td></tr></table> |