|
Author
|
Topic: Control Surface Damage
|
jedi Pilot
|
posted 08-27- 09:31 PM
Well, I think I've figured out how to simulate the loss of a control surface so that it affects your aerodynamics. Here's how for those who may want to try it (instructions for an aileron, but other surfaces use the same idea)...First, the actual control surface is NOT the aileron, rudder, or elevator MODEL--those are just visual appendages that flop back and forth. The actual aerodynamic forces are generated by the parent object: the wingtip for the aileron, vert stab for the rudder, and horiz stab for the elevator. So, to eliminate the effect of the control, you have to remove the actual airfoil itself. So, to enable an aileron to get "shot off," first make a copy of the leftWingTip, including the aileron, in OPS. Copy the wingtip to itself, so you have "leftWingTip1" as a child of "leftWingTip." leftWingTip1 has its own child, aileronLeft1. Now, DELETE the aileron from the original wingtip. Now your original leftWingTip model has no aileron model, and you have a second wingtip superimposed over the first, which DOES have an aileron model. Then, edit the properties of the original wingtip. Find the "obAirfoil" property. Delete the entries for "airControl" and "airObject." This removes the aileron aero forces from the original wingtip. Don't worry, because leftWingTip1 still has an aileron property. If you wish, you can change the name of aileronLeft1 to plain old "aileronLeft" now. If you do, make sure the "airObject" property of leftWingTip1 lists "aileronLeft" as its target. Now, open the properties for the main fuselage object. Find "aircLeftWing" and add 'leftWingTip1 to the list. This makes your new leftWingTip1 a "target" airfoil, so that the stick will move the aileron on the new wingtip model. Now, you need to edit the damage properties of the wingtips to detach the new wingtip. The easiest way is just to open the obDamage property of the new leftWingTip1 model. Give it an onDmg property, for example, "onDmg 5." Append "obDetach" to "onDmg 5." So, when you reach damage level 5 on the new wingtip, it will detach, taking the aileron with it, and leaving a wingtip model with a missing aileron. Just to be safe, add a damage property to the original wingtip, so that it will cause the new wingtip to detach. It's possible to damage the old wingtip since it occupies the same space as the new one. Lastly, adjust the "airArea" properties for the old wingtip and new wingtip. Say the old wingtip had an airArea of 50. Start out by changing the new leftWingTip1 airArea to 40, and change the old leftWingTip airArea to 10. You may have to play with these values to get the new plane to "feel" the same as the old one. You want the old wingtip to be "smaller" than the new one, so that when the aileron is "shot away," the airplane will tend to roll toward the damaged wing (the aileron is part of the wing surface and contributes to the airfoil's efficiency). You might have to do some re-testing on the flight model next, since you've been fiddling with the airfoils. In particular the roll rate may have to be readjusted. That's basically it. When your wingtip takes enough damage, the new wingtip will separate, taking the aileron with it. The old wingtip no longer has any aileron properties, nor a visual model of the aileron, so it will look AND fly like it's missing an aileron. Now just do the same thing to the other wingtip, both horiz stabs, and the vert stab 
------------------ --jedi-- IP: Logged |
Sv Pilot
|
posted 08-27- 09:57 PM
Well jedi, you have just done a great job of re-inventing the wheel  http://www.fightersquadron.com/ubb/Forum7/HTML/000334.html I mentioned the idea and Charm actually did it... I forget what plane, maybe the Fokker DVIII. http://www.fightersquadron.com/ubb/Forum7/HTML/000998.html Just goes to show that great minds think alike  ------------------ -Sv =FC= WWI in SDOE!
IP: Logged |
Sv Pilot
|
posted 08-27- 10:02 PM
This should be an OpenPlane enhancement, it would be so simple no doubt. If the control surface object is gone, then the aifoil should not interpolate the up/down value.This clever hack works, but it makes a mess of things and it is hard to get the percentages of the wing FM's correct... FM is hard enough without extra hidden wings, well for me at least  The Morane N has a hacked wing much like this to simulate wing warping. Basicaly there are trailing and leading edge ailerons... many tricky wings, what a mess  -Sv IP: Logged |
jedi Pilot
|
posted 08-27- 10:15 PM
Hehe I have a short attention span. At least it works!This one adds a total of 5 small airfoils. Not sure of the overall effect on the FM, but the ailerons seemed to have only a negligible impact. The Aussie Spit will have the whole setup in it  ------------------ --jedi-- IP: Logged |
ArgonV Pilot
|
posted 08-27- 10:53 PM
For the "copied" wingtip, do you delete the LODs for it? If not, this may cause frame rates to drop alot. Heres a better, frame rate friendly solution: You could delete the LODs for the "copied" wingtip and have it where if the aileron gets shot off, it takes the "copied" wingtip with it... or have it where the origonal wingtip reaches a certain amount of damage, and the "copied" wingtip drops off. (use onDetachs and obFuncs and obDetachs) Dont forget to add obNoCollide to the "copied" wingtip so it will not get in the way of the origonal wingtip. If you already said this, forgive me as I did not see nor understand what you wrote as I missed it. P.S. Any problems with this idea? [This message has been edited by ArgonV (edited 08-27-2000).] IP: Logged |
charmstar Pilot
|
posted 08-28- 01:01 AM
Yeah, if you do a search for this, you can find the hack that we came up with back in February or something? Anyhow, I found that it worked well for the rudder, but it changed the FM when used on ailerons and elevators. Some people ran into problems with the AI refusing to fly planes that had been modified like this, but I never noticed them myself.Your idea is interesting because it won't affect the FM the way mine does. Either way you look at it though, OpenPlane has a problem with how control surfaces are handled. All models should just have an airfoil with one set of drag/lift coefficents, and have the control surfaces modeled as their own airfoils which increase drag when out of line with the wing airfoil. Instead, wings have 3 sets of lift/drag data, and the control surface is just eye candy. Basically the so cool physics engine sits by the wayside while a hack is done to determine changed lift/drag values with a change in control surface positions. I guess you could create your own airfoils that don't contain differing UP/DOWN airfoil data, and add special airfoils to the control surfaces, but I don't know how effective/framerate friendly that would be, or whether the AI would handle it well. good luck with this! charm IP: Logged |
Raider Pilot
|
posted 08-28- 03:28 AM
That's it. It works. Without all the mess.1.Copied LWTip, then pasted it back to LWTip (That created LWTip1, LWTipDmg1 and leftAileron1) 2. Deleted the LWTipDmg1 and leftAileron1 3. In the properties for the LWTip1 I deleted everything that was not wing related (Like damage and BodyPoints - this is still controled by the original LWTip) 4. Left the airControl to the original aileron (leftAileron) (The new wingtip actually controls the original aileron.) 5. Deleted all the lods for LWTip1 6. Added 'LWTip1 to the aircLeftWing property of the main body. On the original LWTip
7. onDmg X, added all the wing properties for the the wing (airSection, airK, airAR, airAdvantage, airArea, obAirfoil, airChord, airPT) 8. Deleted those properties from the wing - as well as AirControl (Now the wing will not control the aileron) 9. Added obExec to the onDmgX to detach the LWTip1. So when you start the game, the the new wingTip has all the wing properties, and the old wingTip has no wing properties (Until the new wingTip is detached), then the wing properties are given back to the old wingTip (Does that make sense?) When Dmg X is reached LWTip1 is detached, and the old wing is given wing properties, but no airControl The AI doesn't seem to mind this, they still fly the plane. I did see one go into a spiral after shooting his wing tip, then he recovered. (This was very cool) With both ailerons disabled you have to use the rudder to counter for prop rotation. Man I love this sim. If you want to take a look at it, let me know and I will send you what I have. Another thing, We could leave the airControl in for the leftAileron and add airMax .X to reduce the amount of range it would have. ------------------ Raider 33rd~GS Raiders Site
[This message has been edited by Raider (edited 08-28-2000).] IP: Logged |
Raider Pilot
|
posted 08-28- 04:12 AM
This method seems to work, I have been testing it.------------------ Raider 33rd~GS Raiders Site
[This message has been edited by Raider (edited 08-28-2000).] IP: Logged |
ArgonV Pilot
|
posted 08-28- 06:46 AM
Raider, is the method you used a combination of jedi's and my idea? If so, kewl! if not, still kewl! What plane did you do this for?IP: Logged |
Sv Pilot
|
posted 08-28- 07:17 AM
Wow Raider!Does step 7 really work? I though we were not able to create new airObject durring runtime? Could you chose a new airfoil too? This must be impossible, such things are loaded at startup, no? If that really works, then we can do many many things! -Sv IP: Logged |
AGAS - 5 Pilot
|
posted 08-28- 08:18 AM
IP: Logged |
Raider Pilot
|
posted 08-28- 09:42 AM
ArgonV, Yes, this is from your idea and jedi's mainly, also from what I learned from charmstar, Sv, bjorn and input from a few others. Team SDOE does it again  Of course I tested this on the P-51D I am updating. Sv, I was thinking about the way bombs work, their air properties are called from a obFunc when released. As long as the air properties have not been previously defined, you can call them in during runtime. Yes, this even calls the airfoil. You could choose any airfoil you want. The old airfoil is killed when the other wingTip is killed. I beleive some properties can be enabled and disabled using dof's. The landing gear has an air property list that is inactive until the gear is lowered. We could play with this idea a little  On my second post, I thought I discovered an easy way to do all of this. Just don't give the wing tip an airMax value. then onDmg X airMax .1 but this did not work. That would have been too simple. The P-51D still has a little work to be done, I hate to post it as a beta in this unfinished state, but I would be glad send it to anyone that wants to check this out. ------------------ Raider 33rd~GS Raiders Site
IP: Logged |
jedi Pilot
|
posted 08-28- 02:50 PM
OK, cool. I didn't realize you could add in the airX values using a damage-induced obFunc. I'll have to try that one next--it's a bit more elegant, and doesn't require me to juggle the area properties.Thanks Argon! Hadn't thought of deleting the .lods for the extra wingtip. I still have the "fake" wingtip flying off visibly. You just solved the last problem I think  It does work pretty well. With both ailerons shot off, the rudder is the only thing functional, but it's just possible to keep control of the plane. Using Raider's technique, there should be NO FM impact, because only one of the wing surfaces is actually an airfoil at any one time. I'll have to try that one tonight.
------------------ --jedi-- IP: Logged |
ArgonV Pilot
|
posted 08-28- 02:56 PM
One small step for modeling techniques. One... giant leap for modeling damage.  IP: Logged |
charmstar Pilot
|
posted 08-28- 08:03 PM
Wow! That's really great news. I never realized you could instantiate an airfoil and its properties runtime. I bet that the airMax idea didn't work because there's probably a default value if it isn't specified. Anyhow, looking forward to the '51!charm IP: Logged |
Condor Pilot
|
posted 08-29- 10:54 AM
Jedi,What are your latest findings with all this amazing stuff? I am very interested to hear any news regarding this type of damage effect. I hope this process and the bullet damage effects can be ported to all the planes for pp5.4. I am not holding my breath though.  Thanks, Condor out ------------------
IP: Logged | |