Flexman Posted August 26, 2010 Share Posted August 26, 2010 I added some dusty rotor downwash from a helicopter but I'm not getting the effect I want and wondered if anyone has any ideas on how to do this. I want the particles to emanate around a circumference (mid rotor length), or a single point (under the rotor shaft) and move away in a circle. Leadwerks particles, as far as I can see support a rectangular area and a linear acceleration (one direction only from a 'wind' direction). But since they wind is blowing 360', the rotor downwash, it doesn't quite give the desired results. Any help or suggestions? Quote 6600 2.4G / GTX 460 280.26 / 4GB Windows 7 Author: GROME Terrain Modeling for Unity, UDK, Ogre3D from PackT Tricubic Studios Ltd. ~ Combat Helo Link to comment Share on other sites More sharing options...
Paul Thomas Posted August 26, 2010 Share Posted August 26, 2010 I haven't messed with LE particles in a while so I can't exactly give any help, but I just wanted to say how fantastic that looks. Instantly gives me the vision that the helicopter is about to take off, or landing. Quote Link to comment Share on other sites More sharing options...
macklebee Posted August 26, 2010 Share Posted August 26, 2010 eh... needs fine tuning, but this might work for your purpose... require("scripts/class") local class=CreateClass(...) function class:CreateObject(model) local object=self.super:CreateObject(model) SetWorld(fw.transparency.world) object.circlevalue = 0 object.emitter=CreateEmitter(5000,10000,Vec3(math.cos(object.circlevalue),0,math.sin(object.circlevalue))) object.emitter:SetParent(object.model) object.emitter:Paint(LoadMaterial("abstract::smoke.mat")) object.emitter:SetColor(Vec4(1,0,0,1)) object.emitter:SetRadius( .3, .01 ) object.emitter:SetRotationSpeed( .5 ) object.emitter:SetWaver( .5 ) object.emitter:SetPosition(object.model.position,1) SetWorld(fw.main.world) function object:Update() object.emitter:SetVelocity(Vec3(math.cos(object.circlevalue),0,math.sin(object.circlevalue)) ) object.circlevalue = object.circlevalue +.5 end function object:Free() object.emitter:Free() self.super:Free() end end EDIT-- parented the emitter to model to remove the need for the UpdateMatrix function Quote Win7 64bit / Intel i7-2600 CPU @ 3.9 GHz / 16 GB DDR3 / NVIDIA GeForce GTX 590 LE / 3DWS / BMX / Hexagon macklebee's channel Link to comment Share on other sites More sharing options...
macklebee Posted August 26, 2010 Share Posted August 26, 2010 or just rotate the emitter around a point/object... require("scripts/class") local class=CreateClass(...) function class:CreateObject(model) local object=self.super:CreateObject(model) SetWorld(fw.transparency.world) object.emitter=CreateEmitter(500,5000,Vec3(1,0,1)) object.emitter:SetParent(object.model) object.emitter:Paint(LoadMaterial("abstract::smoke.mat")) object.emitter:SetColor(Vec4(1,0,0,1)) object.emitter:SetRadius( .3, .01 ) object.emitter:SetPosition(Vec3(model.position.x+2,model.position.y,model.position.z),1) SetWorld(fw.main.world) function object:Update() TurnEntity(object.model,Vec3(0,-10,0)) end function object:Free() object.emitter:Free() self.super:Free() end end EDIT--- added radius setting to allow you to see the emitter Quote Win7 64bit / Intel i7-2600 CPU @ 3.9 GHz / 16 GB DDR3 / NVIDIA GeForce GTX 590 LE / 3DWS / BMX / Hexagon macklebee's channel Link to comment Share on other sites More sharing options...
Flexman Posted August 26, 2010 Author Share Posted August 26, 2010 Brilliant, I added the emmiter.Turn(...) to the Update() method and it seems to have the desired effect. I'll play around with the parameters while I write this reply...at some frame rates you can see a 'spiral' pattern emerge. In the cockpit it looks pretty convincing. *more edits* After some more parameter experimentation I get a really nice 'shockwave' effect in the dust. ...CreateEmitter(300, 1200, Vec3(0, 1, 0), 0) ; ...SetVelocity(Vec3(8, 0.01, 0)) ...Turn(Vec3(0, -33, 0)) ...AlignToTerrain(TTerrain(game.scene.terrain)) ; I set the Area and Radius according to the helicopters altitude from the ground and rotor RPM (which is a percentage). Above 60 feet it's "hidden". Maybe I should pause it? Not clear what's more efficient. Thanks for those suggestions. Got a good result /thumbup Quote 6600 2.4G / GTX 460 280.26 / 4GB Windows 7 Author: GROME Terrain Modeling for Unity, UDK, Ogre3D from PackT Tricubic Studios Ltd. ~ Combat Helo Link to comment Share on other sites More sharing options...
Pixel Perfect Posted August 27, 2010 Share Posted August 27, 2010 Nice solution Mack. Quote Intel Core i5 2.66 GHz, Asus P7P55D, 8Gb DDR3 RAM, GTX460 1Gb DDR5, Windows 7 (x64), LE Editor, GMax, 3DWS, UU3D Pro, Texture Maker Pro, Shader Map Pro. Development language: C/C++ Link to comment Share on other sites More sharing options...
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.