Beale 18,881 Posted November 21, 2015 Share Posted November 21, 2015 (edited) Part Modding For Beginners This is part one of a part modding tutorial. This series will take you from creating the model, painting a texture and getting the part into the game. No previous experience is required!Part 1 This tutorial will focus on the use of Wings 3D. What is Wings 3D? It's a piece of 3D modeling software, comparable to Blender, 3DS Max, SketchUp and Maya, for example.Why Wings 3D? The software has some great advantages for a beginner: Easy to learn, easy to use Suitable for any part-modeling needs you can imagine Why not? There are a few disadvantages to consider, but in this tutorial series, I will demonstrate how to work around them. The disadvantages are: Practically, Wings 3D cannot pre-bake ambient occlusion, it must be painted on the texture manually. Any animation needed by the part must be made in Unity So, lets begin...Modeling So, what are we going to make? The outcome of the tutorial series will be a part in-game that looks something like this. It's really basic, but that's a good thing! No need to start too complicated. This little engine only has two major components. The "Disk", which will connect the engine to a fuel tank The "Nozzle", where the thrust comes out of! Let's start modeling...Step 1. Open Wings 3D, you'll be seeing something like this. A few controls to get familiar with: Space - De-select anything selected Middle Mouse Button - Rotate camera Left Mouse Button - Select Right Mouse Button - Menu Arrow Keys - Pan camera Step 2. Right click anywhere, select the small box next to "Cylinder".Step 3. We're making the disk first, so lets define the dimensions. The cylinder should have 24 sections, a height of 0.1 and the radius values set to 0.625.Step 4. Click the "smooth view" button.Step 5. That doesn't look right! This is because the edges are "soft", under lighting they will try to appear as a curve, rather than a hard edge.Step 6. Get into face-select mode, by clicking the face select tool.Step 7. Select both the top and bottom of the disk, with this new tool.Step 8. Now, get into edge-select mode, by clicking the edge select tool.Step 9. Now, there we go! We have selected the edges of the top and bottom. You could select all edges manually, of course, but this is a faster method.Step 10. Right click anywhere and select the "Hardness" option.Step 11. Select "Hard" in the new window that appears. Now, see the results! The disk now has hard edges!Step 12. Now, go back to the face select tool and select the top face only. The green line in the centre of the application represents "up", so select the face that corresponds to that line. Once selected, right click and choose the "inset" option.Step 13. Now as you drag your mouse left and right, you will see the inset marker moving inwards and outwards. But, we want to be accurate! Press the TAB key to bring up the input menu. Input 20%.Step 14. Like before, select the newly created face in the middle, get the edges selected and turn them into hard edges.Step 15. Now, select the face in the middle, right click and choose the "extrude" option.Step 16. In the new window, select "Normal".Step 17. Like with the inset tool, we can manually extrude by moving the mouse left and right. But, again, let's press TAB. In the new window, enter "-0.05".Step 18. Select the bottom face of this newly created "pit". Again, grab the edges of this face and turn them into hard edges.Step 19. So, that's the disk done! Now, we need to work on the nozzle.Step 20. Like we did with at the beginning, create another cylinder. This one will be the nozzle. Again, 24 sections. A height of 0.8, a top radius of 0.1 and a bottom radius of 0.4.Step 21. Now, with the face select tool, move the camera underneath the disk, hover over the underside face of the disk. It will glow green, notice in the top left corner, some values have appeared "<0.0, -0.05, 0.0>". That second value, is Y (Or the up/down height value). This means the bottom of the disk is at Y -0.05. So, we want the top of the nozzle to be at Y -0.05!Step 22. Face-select the top of the nozzle, select "Absolute Commands".Step 23. Select "Move" for your absolute command, a new window will appear.Make sure that "Move Object" is ticked. Enter -0.05 as the Y value for the top of the nozzle. With "Move Object" ticked, this ensures that the top of the nozzle will move to Y -0.05 and the rest of the nozzle will move with it. Without "Move Object" ticked, only the top face of the nozzle would move.Step 24. Now, think of this: Nobody is ever going to see the top of the nozzle, are they? It's exactly where the bottom of the disk is. Move the camera until you are able to see the top of the nozzle again, face select it, right click and select "Hole". The top face of the nozzle will vanish. This practice of hiding things the player will never see is a good one, stick to it!Step 25. Now, use the face select tool and grab the bottom of the nozzle. Like we have done quite a few times before, make these into hard edges.Step 26. Well, what we have so far is not quite recognizable as a "Nozzle" yet, more of a cone. Let's fix that!Step 27. Select the "Object Select" tool. This will let you grab the entire nozzle.Step 28. Select the entire nozzle, right click anywhere and select the "Slice" option. In the window that appears, we're going to want to slice the object along the Y axis, so select Y. In the following window, leave it as default, 2 slices is good enough.Step 29. You'll find the nozzle is now split in half. Suddenly, you now have this new "split" selected. Don't un-select it! We're going to use it straight away!Step 30. Right click anywhere and select "Scale Uniform"Step 31. Like Inset and Extrude before, we can scale manually by moving the mouse left and right. But, again, open the input menu with TAB. Enter 120%Step 32. With that split still selected, right click anywhere again and select the "Bevel" option.Step 33. Finally, some manual stuff! Pull the mouse left and right until the nozzle is split into three roughly equal sections. Of course, you can press TAB to input exact numbers (Vaguely around 0.16), experiment and play around!Step 34. It's going well! We have a reasonable, smooth nozzle shape now. If you haven't already, make sure to save your work.Step 35. Select the underside of the nozzle, right click anywhere and select "Inset".Step 36. Inset a small amount (by dragging the mouse to the right). Select The new central face, right click and select "collapse". This will collapse this face into a single point.Step 37. It's good practice now to "cleanup" the model. Though it is unlikely that anything needs to be cleaned up, you never know! Use the object select tool, right click anywhere and select "cleanup". This will remove and duplicate vertices (For example, two points occupying the same space) and other nasty things that can cause problems later on.Step 38. Now, select the point select tool.Step 39. Select the point that is now in the centre of the nozzle underside. Right click anywhere and select "Move". When asked, choose the option "Normal".Step 40. Like every other operation we've done so far, you can move manually, or accurately, using TAB. Press TAB, enter "-0.4".Step 41. Well done! You've completed the modeling! It is a basic design for an engine, true. But, hopefully you've got a taste of how Wings 3D works. Now, go make yourself a cup of coffee, have a break. Because, up next, I will show you how to Unwrap the object in order to paint a texture on it, and it isn't so easy! Edited April 17, 2016 by Beale Quote Link to post Share on other sites
Beale 18,881 Posted November 21, 2015 Author Share Posted November 21, 2015 (edited) Part 2Previous Tutorial By the end of this tutorial, we will have a blank slate, with which we can draw our texture over. Currently, we have an un-textured model. Without any delay, let's jump straight into it.Step 1. Use the object-select tool, select both the nozzle and disk you made in the previous tutorial. Right click anywhere and select "Combine".Step 2. Before we can begin the UV-Unwrap, our engine object needs a proper name. Again with the object-select tool, select the object, right click anywhere and select "Rename". You can call it whatever you want, for this tutorial I have chosen "engine".Step 3. Right click again, select UV Mapping.Step 4. And, we are now in the UV Mapping Window! A quick run-down of how it works, in this window, use the face-select tool to select a face, right click that face to assign a colour.Step 5. For starters, let's divide the side of the nozzle into 4x3 sections. Each of these sections will be an "object" you will be able to drag around on the UV map later. But that will become apparent as we get there! For the sake of the tutorial, I recommend using the same colours for sectioning as I do.Step 6. For the side of the disk, let's divide it up into 2x1 sections.Step 7. For the underside of the disk, orange!Step 8. For the nozzle exhaust, let's do one big circle!Step 9. For the top of the disk, let's split it into 1x1 sectionsStep 10. For the walls inside the "pit" of the disk, let's do it like the outside walls, 2x1 sections, green and purple.Step 11. Finally, for the bottom of the "pit", bright orange again.Step 12. De-select everything, right click anywhere and select "Continue".Step 13. When prompted, select "Projection Normal".Step 14. Oh! There is our UV map! But, it's a bit of a mess isn't it? Let's tidy it up.Step 15. First, in the UV window, turn off the colourful background, it will make your life easier.Step 16. With the edge-select tool, select the centre line of all the nozzle sections. Right click, select "Rotate". When prompted, select "Chart To Y".Step 17. So, the nozzle sections are all facing the same way now, let's cluster them together. With the object-select tool, select all the nozzle sections, right click and select "Move To". When prompted, select "Centre".Step 18. They will all snap to the centre! Move the newly clustered nozzle sections to some clean space.Step 19. You may notice the nozzles lines are curvy, this will be a problem when coming to texture them, so lets straighten that out. With the point-select tool, select, one at a time, each row of points on the nozzle. You can select a whole row by dragging a the mouse while clicking, drag a box around the desired row. Right click, select "Flatten", when prompted, select Y.Step 20. That's the nozzle done! Put it away to one side.Step 21. Select all the parts that make up the outer walls of the disk. Combine them, like we did with the nozzle sections and move them off to one side.Step 22. For the top of the disk, you may notice that all the 1x1 sections we created are rotated to odd angles. This is no good. With the edge-select tool, grab all the longest edges of each section (Make sure to only grab one edge per section). Right click anywhere, select "Rotate", when prompted, select "Chart to X".Step 23. Grab all the newly rotated sections with the object-select tool, move them to centre, like the nozzle sections. Oh dear, though they are all roughly rotated the same way, some are upside down, at 180° angles.Step 24. Using the object-select tool, use the click and drag selection method to grab only the sections rotated at the wrong angle. Right click anywhere, select rotate. Remember in the first tutorial? We can do things manually, or we can press TAB for accurate input. Press TAB and enter 180. The 1x1 upper disk sections will now all be aligned and combined!Step 25. For the inner disk wall sections, do the same as you did for the outer wall. You should now have a sheet of objects aligned straight and combined together, something like this.Step 26. Using the object-select tool's "Move" and "Scale" functions, move each group of sections around. Arrange them so there is as little un-used space as possible!Step 27. This is what I ended up with, there is a fairly large amount of un-used space, but for the purpose of this tutorial, it is good enough.Step 28. Nearly there! Right click anywhere and select "Create Texture"Step 29. For a part this simple, a "256x256" texture will almost certainly be good enough, so select that.Step 30. Your model will probably now look something like this. Do you see that? Those are pixels! Your model has a texture map, ready to be painted over!Step 31. Close the UV window, in the main window, open the "Outliner" window, from the window menu.Step 32. In the "Outliner" window, find your texture. It will be a small checkerboard icon, with <YourObjectName>_auv printed to the side of it. Right click this and select "Make External". Save this texture as a .PNG, in the same location as your 3D model.Step 33. And, that's it! What you have now is a plain .PNG image sitting in the same directory as your 3D model. You can edit this .PNG with your favourite image editor, and reload the model in Wings 3D to see the changes.  Edited January 20, 2016 by Beale Quote Link to post Share on other sites
Beale 18,881 Posted November 22, 2015 Author Share Posted November 22, 2015 (edited) Part 3Previous Tutorial First of all, let me say:This tutorial will be vague. I can't really teach people how to texture, I can't really teach people how I texture, it is mainly motor memory at this point. But, what I can do, is demonstrate some of the general methodology I use, and how this can be put into practice! Another thing, this tutorial will assume you are using Adobe Photoshop (Really any version higher than CS3 will be fine) and that you are reasonably able to use it (Though, I won't be doing anything too complex). All of these techniques can be used in alternatives such as GIMP and Paint.NET, but unfortunately I cannot write such a tutorial for each application. So, that said, let's begin!Step 1. First things first, duplicate the one and only layer of the PNG file.Step 2. Now, rename the top layer "Outline" and the lower layer "Base". Outline will always remain the UV map you created in the second tutorial, it will exist as a guide to help you "Paint within the lines". Base will be the "base coat", flat colours which you can add further detail to through more layers.Important: Never actually directly work on the .PNG file, as soon as you have two layers, save this as a .PSD file. This PSD file will be your "master copy", with layers and such. You will overwrite the .PNG file with this "master copy" from time to time, to see changes.Step 3. Now, with the base layer selected, choose the "Stroke" tool from the "Edit" menu.Step 4. In the Stroke window, select a stroke width, I would reccomend 3 pixels for a 256x256 texture. Make sure "Outside" is selected. For the colour, absolute black, (0,0,0) !Step 5. Whoa, those thin lines of the base layer are now thick lines! Now, use the paint can tool to fill in-between the thick lines, with the same black colour.Step 6. Now you have a nice plain black base coat, you can start to choose out some colours! Feel free to improvise here! Myself, a basic light grey for the "Disk" and a much darker grey for the "Nozzle".Step 7. Okay, now, save over you .PNG that you originally created through Wings 3D.Step 8. Now, load up your 3D model. Not bad eh? It's starting to look like something. But, lets get on with the detailed stuff.Step 9. First thing, let's make a "black hole" on the inside of the nozzle. Select the paint brush tool and then select the "Soft Brush" shape.Step 10. Make a new layer for this "hole".Step 11. Where the Nozzle's underside is on the UV map, and in the newly created layer, make a single "click" and create this "black hole". Again, then save over and overwrite your .PNG texture.Step 12. Back in Wings 3D, open the "Outliner" window, find your texture, right click the icon and hit "Refresh". This is a whole lot quicker than re-loading the model everytime you want to see changes.Step 13. Great! The bottom of the nozzle now looks like it has a bit of depth!Step 14. Cast your mind back to the first tutorial. Remember when I said Ambient Occlusion had to be done manually through texture-work in Wings 3D? What is Ambient Occlusion? A basic description, the "Shadow" that appears when one corner meets another. Or in a more general sense, shadows. Hopefully what exactly AO is, and how it will improve the look of your model will become intuitive by the time you complete these next few steps...Step 15. First, use Wings 3D to find out where the Disk underside is on the texture.Step 16. Make a new layer for this.Step 17. Using the same technique as the Nozzle underside, paint a smaller black blob, in this new layer. Save over your .PNG, once more.Step 18. Reload the texture and... Well, that looks better, doesn't it? But we still need a shadow on the top of the nozzle, where it comes into contact with the disk.Step 19. Make a new layer, and using the square-select tool, grab the area that makes up the top of the nozzle.Step 20. In this selected area, use the Gradient tool, make sure the colour selected is absolute black, drag straight down (must be at an exact 90° angle). This will create a black gradient moving down over your nozzle. Save over your original .PNG texture.Step 21. Reload and... You see we now have a form of "hand-made" ambient occlusion, where the nozzle meets the disk. Hopefully you now have a general idea of how to work within Photoshop, how to preview changes in Wings 3D and how to compensate for Wings 3D's lack of automatic Ambient-Occlusion generation. This ends the step-by-step portion of this tutorial, now we move onto general "tips" which I hope will allow you to develop the texture further.General MethodsComing Soon  Edited January 20, 2016 by Beale Quote Link to post Share on other sites
Beale 18,881 Posted November 22, 2015 Author Share Posted November 22, 2015 (edited) Part 4Previous Tutorial So, are you ready to actually get your engine in game and take it for a spin? Well, first of all, you will need Unity installed, so get that done! With all that finished, let's begin...Step 1. Let's centre our model, this will make it easier to use in the VAB, and is just good practice overall. Select the highest and lowest points on the model. Right click anywhere and select "Absolute Commands", then select "Move".Step 2. In the "Move" window, replace the value for Y with zero, make sure that "Move Object" is ticked.Step 3. Our object is now in the centre of the space. Now, select the whole object, right click and select "Absolute Commands" again, but this time, choose scale.Step 4. See those values? That's our scale values for this model, in other words, how big it is. Take a note of these!Step 5. Now, we need to create a collider for the engine! In Wings 3D, select new. In the new model space, create a custom cylinder, as we did in the very first tutorial. The values I choose here correspond to the size of the "Real" model.Step 6. Now, select the entire object, right click and choose "Rotate", when prompted, choose the "Y" axis. Once again, press TAB and input "11.25". Why? Well, this is hard to explain. But, you may notice that the faces on the side of the collider are now aligned to the X and Z axis. This is good, when you want to make a collider for an object that can have things attached to it (I.E. a fuel tank), but for our little engine, it doesn't really matter.Step 7. Okay, save this collider file, don't overwrite your original engine file!Step 8. Now, for your collider model and your original engine model. Select export and export an .OBJ file.Step 9. Now! Unity time! First of all, you will need to download:0.20 Part Tools and0.23 Part Tools Now, in Unity, create a new project for your Kerbal Part Modding. In this new project, import the 0.20 PartTools.unitypackage.Step 10. When asked, just check "Import".Step 11. Now, find the 0.23 part tools folder you downloaded. Copy "Editor", "Lib" and "Shaders".Step 12. Navigate to where you saved your Unity project, inside the "Assets" folder, overwrite the "Editor", "Lib" and "Shaders" folder that are already there. This will upgrade your Part Tools to 0.23! If you haven't guessed already, part tools is what will allow you to create your part.Step 13. In Unity, select "KSP Part Tools".Step 14. Then, "Set Data Dir".Step 15. Find your KSP "GameData" folder, highlight it and press the "Select Folder" button.Step 16. So, that is Part Tools set up correctly, now lets actually start creating our engine. In the "Assets" window at the bottom of the Unity window, create a new folder for our engine.Step 17. In this new folder drag in your model.OBJ, your collider.OBJ and the .PSD texture!Step 18. Now, go inside this "Materials" folder that has appeared. Select the material for your engine's "Real" model, not the material for the collider, we don't need to worry about that.Step 19. On the right, change the "Shader". For now, we will change it to KSP/Diffuse. Remember, you can only use KSP shaders!Step 20. Click "Select" and assign your texture to this material.Step 21. Okay! That's materials done... Now, finally let's make the engine. Create an empty game object.Step 22. Select this newly created "Blank" object and make sure it is set at position 0, 0 and 0. Give it a name.Step 23. Now, on the left you will see your named game object sitting in the hierarchy window. From the asset window below, drag your model onto this game object. This will make the model a "child" of the game object. It will now appear in the scene.Step 24. Create a new game object, position it at 0, 0 and 0. Call it "Collider".Make sure that it is a child of the first game object you created.Step 25. Select "Collider", on the right, select "Add Component". Add a "Mesh Collider", it's found in the physics category.Step 26. In the "Mesh Collider" component that is now sitting there, select the little circle next to "Mesh", choose your Collider model you made earlier, when prompted.Step 27. Hey, this is real important!Make sure "Convex" is ticked. Otherwise, you will have a bad time later on.Step 28. Now, like with that "Collider" game object, create a new empty game object and make it a child of the first game object. Call it "thrustTransform", pay attention to the upper case and lower case characters here, it's important.Step 29. Position the position of thrustTransform at 0, -0.4 and 0. See it's now at the tip of the nozzle? This is where the thrust will come out of! The blue arrow represents the direction of thrust, so set the "X" Rotation value to "90", so that the blue arrow is now pointing down.Step 30. Select the "Parent" game object, the first game object you made!Step 31. "Add Component" and select "Part Tools", it's in the KSP category.Step 32. Ehm, well, we have done quite a lot in Unity, haven't we? Before we proceed, let's save the scene, so we can revisit this engine later if anything needs changing.Step 33. Okay, back to the Part Tools component! On the "File URL" property, select "Set". Right now, create a folder in KSP GameData and give it whatever name you want, I've chosen "myMod" here. Select this folder, then press the "Select Folder" button.Step 34. Set the "Model Name" value to "model". Set the "Texture Format" value to "MBM". Click write. That's it, you've exported a model from Unity!Step 35. Okay, create a config in the same directory as the model you just exported. Well, I'm sure you will have some idea how to make a config, but here is mine, as a template. Few things to notice! The values for thrust, ISP, etcetera, that's for you to decide.Step 36. Now, boot up the game! With any luck, you'll find the engine happily inside the VAB (Sandbox). Make a quick craft, try to fly the thing. With any luck it will work just fine.If it doesn't work: I am available by PM for help. Also, the modelling forum is a good place to get help.Step 37.Well, that's it. You've put a part in game, from start to finish. We've laughed, we've cried and we've seen the fruits of our labour. Hopefully you've found this tutorial helpful, if not, constructive criticism is always appreciated.For now, ciao! PART { name = MyEngine module = Part author = Me mesh = model.mu scale = 1 rescaleFactor = 1.0 node_stack_bottom = 0.0, -0.45, 0.0, 0.0, -1.0, 0.0, 1 node_stack_top = 0.0, 0.45, 0.0, 0.0, 1.0, 0.0, 1 TechRequired = start entryCost = 525 cost = 525 category = Propulsion subcategory = 0 title = Liquid Beale Rocket manufacturer = Cruelty Against Bread Corp. description = This engine runs on liquid bread, or LF and OX, your choice. attachRules = 1,0,1,1,0 EFFECTS { running_closed { AUDIO { channel = Ship clip = sound_rocket_spurts volume = 0.0 0.0 volume = 3.0 3.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } MODEL_MULTI_PARTICLE { modelName = Squad/FX/shockExhaust_red_small transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } } engage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { PREFAB_PARTICLE { prefabName = fx_exhaustSparks_flameout_2 transformName = thrustTransform oneShot = true } AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } mass = 0.35 dragModelType = default maximum_drag = 0.20 minimum_drag = 0.15 angularDrag = 2 crashTolerance = 10 maxTemp = 3400 stagingIcon = LIQUID_ENGINE MODULE { name = ModuleEnginesFX engineID = ClosedCycle runningEffectName = running_closed thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 39 heatProduction = 200 fxOffset = 0, 0, 0.0 PROPELLANT { name = LiquidFuel ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer ratio = 1.1 } atmosphereCurve { key = 0 410 key = 1 280 } } MODULE { name = ModuleGimbal gimbalTransformName = thrustTransform gimbalRange = 0.5 } }"rescaleFactor", this needs to be set to 1.0!"thrustVectorTransformName = thrustTransform", that game object was named "thrustTransform" for a good reason! Edited November 30, 2015 by Beale Quote Link to post Share on other sites
Stone Blue 1,971 Posted November 22, 2015 Share Posted November 22, 2015 Good to see this preserved... This was the best, simplest, easiest tute that I was able to find when I made my 1st part with Blender.. I highly recommend this for anyone who has ZERO modelling experience. Thanks, Beale!! Quote Link to post Share on other sites
CaptainKipard 994 Posted November 22, 2015 Share Posted November 22, 2015 Beale are you interested in developing this guide more? Quote Link to post Share on other sites
Mecripp 1,040 Posted November 22, 2015 Share Posted November 22, 2015 Beale did you forget apart on the thrustTransform or is unity just funny ? For me, I would have to add a Part Tools Library to it to get the FX ? Quote Link to post Share on other sites
Beale 18,881 Posted November 22, 2015 Author Share Posted November 22, 2015 (edited) [quote name='Stone Blue']Good to see this preserved... This was the best, simplest, easiest tute that I was able to find when I made my 1st part with Blender.. I highly recommend this for anyone who has ZERO modelling experience. Thanks, Beale!![/QUOTE] Nice to hear, thanks! :) [quote name='Cpt. Kipard']Beale are you interested in developing this guide more?[/QUOTE] Hi! I'd like to touch on a few more Unity parts (animations, etc.) if I get a chance :) It will also need a slight update when the new partTools get released. [quote name='MeCripp']Beale did you forget apart on the thrustTransform or is unity just funny ? For me, I would have to add a Part Tools Library to it to get the FX ?[/QUOTE] Not sure I understand, sorry? Edited November 22, 2015 by Beale Quote Link to post Share on other sites
Mecripp 1,040 Posted November 22, 2015 Share Posted November 22, 2015 The way you show it, I would have the thrust but no FX the only way, I can get the FX to show and that's if, I put Part Tools Library on the thrustTransform ? Quote Link to post Share on other sites
Beale 18,881 Posted November 22, 2015 Author Share Posted November 22, 2015 [quote name='MeCripp']The way you show it, I would have the thrust but no FX the only way, I can get the FX to show and that's if, I put Part Tools Library on the thrustTransform ?[/QUOTE] Nope, FX is unrelated to your Unity setup. You need only the thrustTransform in there :) Quote Link to post Share on other sites
Mecripp 1,040 Posted November 22, 2015 Share Posted November 22, 2015 (edited) I not sure what, I was doing wrong that time it did work but, I had to change the cfg to run in ( running_closed ) where if, I added the Part Tools Library on the thrustTransform then don't have to run in ( running_closed ) is there a draw back or a + to running a engine is ( running_closed ) or other ( guess you could say running_open ) or doesn't really matter ? EDIT- And do you have a Tutorial on adding the heat look to the engine ? Edited November 22, 2015 by Mecripp2 Quote Link to post Share on other sites
Beale 18,881 Posted November 23, 2015 Author Share Posted November 23, 2015 [quote name='MeCripp']I not sure what, I was doing wrong that time it did work but, I had to change the cfg to run in ( running_closed ) where if, I added the Part Tools Library on the thrustTransform then don't have to run in ( running_closed ) is there a draw back or a + to running a engine is ( running_closed ) or other ( guess you could say running_open ) or doesn't really matter ? EDIT- And do you have a Tutorial on adding the heat look to the engine ?[/QUOTE] Running_closed is from the effect definition in the config, you can name it whatever you like. Take a look at the stock R.A.P.I.E.R engine config for a bit more context (that has a running_open, being dual cycle). I'll probably tackle heat animations at some point, but its quite a lengthy tutorial to write. There is a good tutorial on this already by cardboardboxprocessor, find it in capt. Kipards modding development compendium. Quote Link to post Share on other sites
Mecripp 1,040 Posted November 23, 2015 Share Posted November 23, 2015 Sorry we are talking in a circle you are missing the point on Running_closed here is a cfg running closed [code]PART { // Kerbal Space Program - Part Config // mkbEngine // // --- general parameters --- name = mkbEngine module = Part author = aacu // --- asset parameters --- mesh = model.mu scale = 1 rescaleFactor = 1 // --- node definitions --- node_stack_top = 0.0, 0.181, 0.0, 0.0, 1.0, 0.0, 1 node_stack_bottom = 0.0, -0.183, 0.0, 0.0, -1.0, 0.0, 1 // --- editor parameters --- TechRequired = start entryCost = 3500 cost = 1200 category = Engine subcategory = 0 title = MKBL E-160 manufacturer = Munar Institute of Technology description = Designed for the Munar Kebabl Landing system the MKBL E-160 has the power output required to make fast corrections under the high stress environment of a munar landing, this engine is smoke free to improve pilots visibility in atmospheric trainning. // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,0,1,0,0 // --- standard part parameters --- mass = 0.06 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 2 crashTolerance = 5 maxTemp = 2000 // = 3600 bulkheadProfiles = size1 // --- liquid engine parameters --- EFFECTS { running_closed { AUDIO { channel = Ship clip = sound_rocket_spurts volume = 0.0 0.0 volume = 3.0 3.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } MODEL_MULTI_PARTICLE { modelName = Squad/FX/shockExhaust_red_small transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } } engage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { PREFAB_PARTICLE { prefabName = fx_exhaustSparks_flameout_2 transformName = thrustTransform oneShot = true } AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } MODULE { name = ModuleEnginesFX engineID = ClosedCycle runningEffectName = running_closed thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 160 heatProduction = 80 fxOffset = 0, 0, 0.21 EngineType = LiquidFuel PROPELLANT { name = LiquidFuel ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer ratio = 1.1 } atmosphereCurve { key = 0 345 key = 1 85 key = 3 0.001 } } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 0 fxMax = 0.3 maxDistance = 30 falloff = 1.7 thrustTransformName = thrustTransform } // thrustVectoringCapable = True // gymbalRange = 10 }[/code] If, I added a FX like [code]fx_exhaustFlame_blue = 0.0, -0.3, 0.0, 0.0, 1.0, 0.0, running fx_exhaustLight_blue = 0.0, -0.3, 0.0, 0.0, 0.0, 1.0, running fx_smokeTrail_light = 0.0, -2, 0.0, 0.0, 1.0, 0.0, running sound_vent_medium = engage sound_rocket_hard = running sound_vent_soft = disengage sound_explosion_low = flameout [/code] They run all the time even when throttle is off doing it that way but by adding Part Tools Library to the thrustTransform you can us a cfg like below and FX are set with throttle that is what, I didn't know why some engine have to run closed and some not but now, I know how to change that is what, I was getting at and thanks again :) [code]PART { // Kerbal Space Program - Part Config // mkbEngine // // --- general parameters --- name = mkbEngine module = Part author = aacu // --- asset parameters --- mesh = model.mu scale = 1 // --- node definitions --- node_stack_top = 0.0, 0.181, 0.0, 0.0, 1.0, 0.0 node_stack_bottom = 0.0, -0.183, 0.0, 0.0, -1.0, 0.0 fx_exhaustFlame_blue = 0.0, -0.3, 0.0, 0.0, 1.0, 0.0, running fx_exhaustLight_blue = 0.0, -0.3, 0.0, 0.0, 0.0, 1.0, running fx_smokeTrail_light = 0.0, -2, 0.0, 0.0, 1.0, 0.0, running sound_vent_medium = engage sound_rocket_hard = running sound_vent_soft = disengage sound_explosion_low = flameout TechRequired = heavierRocketry entryCost = 8000 cost = 4500 category = Engine subcategory = 0 title = MKBL E-160 manufacturer = Munar Institute of Technology description = Designed for the Munar Kebabl Landing system the MKBL E-160 has the power output required to make fast corrections under the high stress environment of a munar landing, this engine is smoke free to improve pilots visibility in atmospheric trainning. // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,0,1,0,0 // --- standard part parameters --- mass = 1.25 // heatConductivity = 0.06 // half default skinInternalConductionMult = 4.0 emissiveConstant = 0.8 // engine nozzles are good at radiating dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 2 crashTolerance = 5 maxTemp = 2000 // = 3600 stagingIcon = LIQUID_ENGINE bulkheadProfiles = size1 // --- liquid engine parameters --- MODULE { name = ModuleEngines thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 215 heatProduction = 192 fxOffset = 0, 0, 0.8 EngineType = LiquidFuel PROPELLANT { name = LiquidFuel ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer ratio = 1.1 } atmosphereCurve { key = 0 300 key = 1 280 key = 7 0.001 } } MODULE { name = ModuleAlternator RESOURCE { name = ElectricCharge rate = 7 } } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 0 fxMax = 0.5 maxDistance = 30 falloff = 1.5 thrustTransformName = thrustTransform } RESOURCE { name = ElectricCharge amount = 0 maxAmount = 0 isTweakable = false hideFlow = true } } [/code] You should give it a try :) Quote Link to post Share on other sites
Beale 18,881 Posted November 23, 2015 Author Share Posted November 23, 2015 [quote name='MeCripp']Sorry we are talking in a circle you are missing the point on Running_closed here is a cfg running closed [code]PART { // Kerbal Space Program - Part Config // mkbEngine // // --- general parameters --- name = mkbEngine module = Part author = aacu // --- asset parameters --- mesh = model.mu scale = 1 rescaleFactor = 1 // --- node definitions --- node_stack_top = 0.0, 0.181, 0.0, 0.0, 1.0, 0.0, 1 node_stack_bottom = 0.0, -0.183, 0.0, 0.0, -1.0, 0.0, 1 // --- editor parameters --- TechRequired = start entryCost = 3500 cost = 1200 category = Engine subcategory = 0 title = MKBL E-160 manufacturer = Munar Institute of Technology description = Designed for the Munar Kebabl Landing system the MKBL E-160 has the power output required to make fast corrections under the high stress environment of a munar landing, this engine is smoke free to improve pilots visibility in atmospheric trainning. // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,0,1,0,0 // --- standard part parameters --- mass = 0.06 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 2 crashTolerance = 5 maxTemp = 2000 // = 3600 bulkheadProfiles = size1 // --- liquid engine parameters --- EFFECTS { running_closed { AUDIO { channel = Ship clip = sound_rocket_spurts volume = 0.0 0.0 volume = 3.0 3.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } MODEL_MULTI_PARTICLE { modelName = Squad/FX/shockExhaust_red_small transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } } engage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { PREFAB_PARTICLE { prefabName = fx_exhaustSparks_flameout_2 transformName = thrustTransform oneShot = true } AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } MODULE { name = ModuleEnginesFX engineID = ClosedCycle runningEffectName = running_closed thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 160 heatProduction = 80 fxOffset = 0, 0, 0.21 EngineType = LiquidFuel PROPELLANT { name = LiquidFuel ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer ratio = 1.1 } atmosphereCurve { key = 0 345 key = 1 85 key = 3 0.001 } } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 0 fxMax = 0.3 maxDistance = 30 falloff = 1.7 thrustTransformName = thrustTransform } // thrustVectoringCapable = True // gymbalRange = 10 }[/code] If, I added a FX like [code]fx_exhaustFlame_blue = 0.0, -0.3, 0.0, 0.0, 1.0, 0.0, running fx_exhaustLight_blue = 0.0, -0.3, 0.0, 0.0, 0.0, 1.0, running fx_smokeTrail_light = 0.0, -2, 0.0, 0.0, 1.0, 0.0, running sound_vent_medium = engage sound_rocket_hard = running sound_vent_soft = disengage sound_explosion_low = flameout [/code] They run all the time even when throttle is off doing it that way but by adding Part Tools Library to the thrustTransform you can us a cfg like below and FX are set with throttle that is what, I didn't know why some engine have to run closed and some not but now, I know how to change that is what, I was getting at and thanks again :) [code]PART { // Kerbal Space Program - Part Config // mkbEngine // // --- general parameters --- name = mkbEngine module = Part author = aacu // --- asset parameters --- mesh = model.mu scale = 1 // --- node definitions --- node_stack_top = 0.0, 0.181, 0.0, 0.0, 1.0, 0.0 node_stack_bottom = 0.0, -0.183, 0.0, 0.0, -1.0, 0.0 fx_exhaustFlame_blue = 0.0, -0.3, 0.0, 0.0, 1.0, 0.0, running fx_exhaustLight_blue = 0.0, -0.3, 0.0, 0.0, 0.0, 1.0, running fx_smokeTrail_light = 0.0, -2, 0.0, 0.0, 1.0, 0.0, running sound_vent_medium = engage sound_rocket_hard = running sound_vent_soft = disengage sound_explosion_low = flameout TechRequired = heavierRocketry entryCost = 8000 cost = 4500 category = Engine subcategory = 0 title = MKBL E-160 manufacturer = Munar Institute of Technology description = Designed for the Munar Kebabl Landing system the MKBL E-160 has the power output required to make fast corrections under the high stress environment of a munar landing, this engine is smoke free to improve pilots visibility in atmospheric trainning. // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision attachRules = 1,0,1,0,0 // --- standard part parameters --- mass = 1.25 // heatConductivity = 0.06 // half default skinInternalConductionMult = 4.0 emissiveConstant = 0.8 // engine nozzles are good at radiating dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 2 crashTolerance = 5 maxTemp = 2000 // = 3600 stagingIcon = LIQUID_ENGINE bulkheadProfiles = size1 // --- liquid engine parameters --- MODULE { name = ModuleEngines thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 215 heatProduction = 192 fxOffset = 0, 0, 0.8 EngineType = LiquidFuel PROPELLANT { name = LiquidFuel ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer ratio = 1.1 } atmosphereCurve { key = 0 300 key = 1 280 key = 7 0.001 } } MODULE { name = ModuleAlternator RESOURCE { name = ElectricCharge rate = 7 } } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 0 fxMax = 0.5 maxDistance = 30 falloff = 1.5 thrustTransformName = thrustTransform } RESOURCE { name = ElectricCharge amount = 0 maxAmount = 0 isTweakable = false hideFlow = true } } [/code] You should give it a try :)[/QUOTE] Those are old FX definitions, they won't work with moduleEnginesFx, but instead work with module engines. So, instead define your FX in running_closed, or remove the "FX" from the Engine module, so it's just moduleEngines :) Quote Link to post Share on other sites
Mecripp 1,040 Posted November 23, 2015 Share Posted November 23, 2015 LOL this is to funny Beale lol, Them are the 2 cfg, I use and, I can make them both work one way engine has to run-closed and one it doesn't lol to funny and the only change was what you see in the cfg and one MU has parts tool script on the thrust and one don't. And you can use moduleEnginesFx with the old fx lol it doesn't care lol one man thanks you crack me up :) we has long has your not running closed :) Quote Link to post Share on other sites
Beale 18,881 Posted November 23, 2015 Author Share Posted November 23, 2015 [quote name='MeCripp']LOL this is to funny Beale lol, Them are the 2 cfg, I use and, I can make them both work one way engine has to run-closed and one it doesn't lol to funny and the only change was what you see in the cfg and one MU has parts tool script on the thrust and one don't. And you can use moduleEnginesFx with the old fx lol it doesn't care lol one man thanks you crack me up :) we has long has your not running closed :)[/QUOTE] I really do not understand what you are asking. Quote Link to post Share on other sites
CaptainKipard 994 Posted November 23, 2015 Share Posted November 23, 2015 (edited) [quote name='Beale'] Hi! I'd like to touch on a few more Unity parts (animations, etc.) if I get a chance :) It will also need a slight update when the new partTools get released.[/QUOTE] Back before I became completely disillusioned with Squad I had a thread asking moders and beginners what they would want from a complete tutorial like this. I can post the list I made if you want. [B]edit[/B] The links in your OP still point to the blogs. Edited November 23, 2015 by Cpt. Kipard Quote Link to post Share on other sites
Randazzo 1,502 Posted November 23, 2015 Share Posted November 23, 2015 (edited) [quote name='MeCripp']LOL this is to funny Beale lol, Them are the 2 cfg, I use and, I can make them both work one way engine has to run-closed and one it doesn't lol to funny and the only change was what you see in the cfg and one MU has parts tool script on the thrust and one don't. And you can use moduleEnginesFx with the old fx lol it doesn't care lol one man thanks you crack me up :) we has long has your not running closed :)[/QUOTE] I imagine a great deal is being lost in translation here, but yes, those two configs are (from a cursory glance) correct for their respective engine module, but the point you're trying to make is not clear. However, you never need to add a script to the thrustTransform under any circumstance for those to function, and ModuleEnginesFX [U][I][B]will not[/B][/I][/U] display effects without an EFFECTS definition. Edited November 23, 2015 by Randazzo Quote Link to post Share on other sites
Mecripp 1,040 Posted November 23, 2015 Share Posted November 23, 2015 [quote name='Randazzo']I imagine a great deal is being lost in translation here, but yes, those two configs are (from a cursory glance) correct for their respective engine module, but the point you're trying to make is not clear. However, you never need to add a script to the thrustTransform under any circumstance for those to function, and ModuleEnginesFX [U][I][B]will not[/B][/I][/U] display effects without an EFFECTS definition.[/QUOTE] I'm not good with words but let try this, Why do some engine have to run closed ? and some not ? ok It's one step in unity and was asking is there + side or - side to either ? [code]However, you never need to add a script to the thrustTransform under any circumstance for those to function, and ModuleEnginesFX will not display effects without an EFFECTS definition. [/code] Like I said it's one step and with it the engines run more less open verses running closed again is there a upside or downside :confused: Quote Link to post Share on other sites
Beale 18,881 Posted November 23, 2015 Author Share Posted November 23, 2015 [quote name='MeCripp']I'm not good with words but let try this, Why do some engine have to run closed ? and some not ? ok It's one step in unity and was asking is there + side or - side to either ? [code]However, you never need to add a script to the thrustTransform under any circumstance for those to function, and ModuleEnginesFX will not display effects without an EFFECTS definition. [/code] Like I said it's one step and with it the engines run more less open verses running closed again is there a upside or downside :confused:[/QUOTE] I'm still not quite with you unfortunately... But, running_closed doesn't mean anything. It could be called running_cheesecake, or closed_running, or nearly any ASCII string. Quote Link to post Share on other sites
Mecripp 1,040 Posted November 23, 2015 Share Posted November 23, 2015 [quote name='Beale']I'm still not quite with you unfortunately... But, running_closed doesn't mean anything. It could be called running_cheesecake, or closed_running, or nearly any ASCII string.[/QUOTE] So really it's just how you want to write the cfg for the FX ? So if, I wanted to use the old stock FX I use the MU number 1 that, I add a script to the thrustTransform and all works great And by using MU number 2 which is how you show to set one up, I can't use the old ones and you can see a have a cfg for that MU file and you have to tell it to run closed or what ever. so really just matters how you want to write the cfg is what it's looking like, And thanks to all that makes these Tutorial :D Quote Link to post Share on other sites
fairy 21 Posted November 23, 2015 Share Posted November 23, 2015 [quote name='Beale']It could be called running_cheesecake, or closed_running, or nearly any ASCII string.[/QUOTE] I'm sorry for not adding anything to the conversation, but this just made me laugh so hard :P Quote Link to post Share on other sites
NecroBones 3,167 Posted November 24, 2015 Share Posted November 24, 2015 Yes, to clarify, you can name the effect anything you want, as long as the name matches in both ModuleEnginesFX and in the EFFECTS section. The only reason it's usually named "running_closed" is because the first engine to need more than one effect was the RAPIER, which has a "closed cycle" mode in addition to its air-breathing mode, so they called it "running_closed" for the closed-cycle mode. Quote Link to post Share on other sites
Eskandare 1,326 Posted November 25, 2015 Share Posted November 25, 2015 In regard to multi particle, how would one change the size of the exhaust FX? This for example... [CODE] MODEL_MULTI_PARTICLE { modelName = Squad/FX/shockExhaust_red_small transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } [/CODE] Quote Link to post Share on other sites
Beale 18,881 Posted November 25, 2015 Author Share Posted November 25, 2015 [quote name='Eskandare']In regard to multi particle, how would one change the size of the exhaust FX? This for example... [CODE] MODEL_MULTI_PARTICLE { modelName = Squad/FX/shockExhaust_red_small transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } [/CODE][/QUOTE] I'm not actually sure you can to be honest, [URL="http://forum.kerbalspaceprogram.com/threads/65754-HotRockets!-Particle-FX-Replacement-Tutorial"]you might have to create a new FX of the correct size.[/URL] Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.