Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
############################################################################## [ACFTools v0.62a] Set of tools to play with ACF files outside of Plane-Maker Perl script and modules coded by Stanislaw Pusep <email@example.com> Site of this and another X-Plane projects of mine: http://xplane.sysd.org/ Allows you to: * export X-Plane (www.x-plane.com) aircraft data files to human-editable plaintext format and 3D mesh editable in AC3D modeler (www.ac3d.org). * import plaintext/3D mesh back to ACF file. ############################################################################## Usage: acftools.exe <commands> [parameters] o Commands: -extract [DEF] : extract TXT from ACF (opt: using DEF definition) -generate : generate ACF from TXT -merge : merge body from AC3D file to TXT o Parameters: -acffile FILE : name of ACF file to process -txtfile FILE : name of TXT file to process -ac3dfile FILE : name of AC3D file to process -noorder : DO NOT sort vertices while merging bodies -noac3d : DO NOT generate AC3D -(min|max)body N: write all bodies in specified range to AC3D -force LIST : force extraction of bodies LIST (comma-separated N) -normalize N : normalize wings to N vert/surface (N>=2 or no wings!) o Notes: * You can use abbreviations of commands/parameters (-gen or even -g instead of -generate). * The only required parameter for "extract" command is -acffile. Both -txtfile and -ac3dfile are derivated from it. * "generate" command and -txtfile has the same relation. * By default "extract" uses the latest DEF file. * "generate" doesn't need DEF at all (it is implicit in TXT) * If file to be created already exists backup is made automatically. o Examples: acftools.exe --extract=ACF700 --acffile="F-22 Raptor.acf" (extract 'F-22 Raptor.txt' from 'F-22 Raptor.acf') acftools.exe -e -acf "F-22 Raptor.acf" (same as above) acftools.exe -me -ac3d ladar.ac -txt "F-22 Raptor.txt" (merge *single* 3D body from 'ladar.ac' to 'F-22 Raptor.txt') acftools.exe -g -txt "F-22 Raptor.txt" (reverse operation; generate 'F-22 Raptor.acf' from 'F-22 Raptor.txt') Why AC3D (http://www.ac3d.org/)? ================================ You'd better ask "why not?". First of all AC3D can import/export many different formats like AutoCAD DXF, 3D Studio, Milkshape, and OBJ between others. Second, AC3D is small and lightweight. Full installation has below 7 Mb. Third, AC3D format is supported by 'Progressive Fans' (http://www.terra.es/personal3/atoniman/) so I can view my models directly from Total Commander (http://www.ghisler.com/). And finally, AC3D has all editing resources you will ever need. I only see 2 problems with AC3D: it's shareware and it is for Intel machines, not Apple. Tips & Tricks: ============== When generating AC3D model, if ACFTools fails with message: "No airfoil definition found ..." you can do one of: 1) Run 'acftools.pl -normalize 0 ...' so wings are skipped. 2) Get into http://www.aae.uiuc.edu/m-selig/ads/coord_database.html download right airfoil and edit 'data/airfoil.lst'. 3) Simply edit 'data/airfoil.lst' aliasing new airfoil to any existent one, just like: "Horz Stab.afl naca2412.dat" If you with to make your fuselage outside of Plane-Maker you can use 'models/fusepipe.ac' template. Remember to NOT to add/delete vertices and neither surfaces! This still generates ACF (with warnings) but X-Plane gets confuse with surface mapping. If you want to export ACF to render in outer programs (maybe AutoCad? :) then you'd better optimize AC3D file generated. Just open AC file, then go to 'Object->Optimize vertices' and THEN 'Object->Optimize surfaces'. Done this, 'Select->Vertex' and kill all unlinked vertices. Note that now you can't return this model back to Plane-Maker!!! By default ACFTools operates with X-Plane 7.0 ACF format. But if you're sure what are you doing, you can mess with older versions also: "acftools.pl -e ACF6_51.def -min 28 -max 38 -acf f16.acf" On line above you will be extracting bodies from 28 to 38 using X-Plane 6.51 definition file. Sorry, at this moment you need to deduce '-min' & '-max' values by yourself! Everything you need is a little C knowledge and "Instructions/Manual_Files/X-Plane ACF_format.html" file from that version of X-Plane you are messing with. To extract weapon models just use: "acftools.pl -e wpn6_601.def -force 0 -acf droptank.wpn" Special Thanks To: ================== * Andy Colebourne for AC3D of course. * Austin Meyer for X-Plane itself :) * Blair Zajac for Math::Interpolate Perl routines. * Emmanuel Sanvito for Perl Utilities and byte-swapping idea I stolen :) * Marcelo M. Marques for idea of extracting wings too. * Marco Testi for wing & airfoil specifications. * Mark Fisher for ACF format definitions. * Mark Tecson for being "test pilot" for my QuickIntro.txt * Tony Gondola for ACF2Text that was the inspiration for ACFTools. TODOs: ====== * Export gear models. Not TODOs: ========== * GUI. * Models in other than AC3D format. * Control surfaces. * Paint mapping. * Wing import back to ACF. Known Bugs/Issues: ================== ACF to TXT and backwards converters: * VERY SLOW. * Certainly not bullet-proof; malformed lines will mess all things. * If you mess with input file type, you will crash hard. * BAD THINGS may happen if you attempt to use wrong definition. * Several X-Plane version 7.0 constants are hard-coded. I mean, I designed ACFTools to work for latest X-Plane. Other versions work but with tons of parameters. * It seems that Perl float numbers are different from C float numbers. Thus, some are rounded and in some rare cases values are lost at all. Body-related: * You may only import one model at time. Note that I did it to protect YOU; if many models would be imported at time they might acidentally overwrite things you didn't wanted to be overwritten. Beware! * Surface triangulation has inverse order of that observed in X-Plane. This doesn't see to be important but who knows? * Unlinked vertices from "ghost" sections should be filtered manually. * Engine nacelles should be rotated for helos. * Wheel fairing surfaces are "convolved" to inside of fairing. * When importing AC3D models they do loose original arm. But they are re-centered at least :) * When merging section vertices are ordered anti-clockwise. May break some very weird designs. If it happens to be yours, pass -noorder flag. Wing-related: * No rotor wings at all. * I don't understand how *exactly* X-Plane handles incidence. Quick Intro: ============ How to use ACFTools? Well... My GUI programming skills are poor, so ACFTools is, as most of my programs, command-line. You can write it in any folder. For example, C:\ACFTools of C:\X-Plane\ACFTools. But you may operate it from DOS prompt. Remember this buddy from ancient computing days? :) If not, here is brief usage explanation. Go to "Start->Run", type "command" and press "OK". This will open black screen which is better seen when configured to have 80x50 characters-wide. There, you type: "cd C:\ACFTools" or whatever directory ACFTools is located. There, type "acftools" (note that "acftools", "acftools.exe" and "acftools.pl" may be different files but they do refer the same thing: main ACFTools executable). That screen that appears is parameter list. Now, for extract good old 747, type: acftools --extract --acffile="C:\X-Plane\Aircraft\HeavyMetal\B747-400 United\United-Air.acf" --txtfile 747.txt This will start conversion from ACF to TXT & AC3D formats. Lots of stuff are dumped to screen. When process is finished, "Press <RETURN> to exit" appears. At this point, 747.txt & 747.ac files were created. 747.txt is plaintext detailed description of 747 aircraft. It's HUGE: 5 Mb! Then, 747.ac is AC3D model of 747. Just open it in AC3D and have a lot of fun :) Note that you may separate body you wish to edit into separate file. For example, select "body" group, copy it and paste in new file: "body.ac". Then edit it as you wish. Note that you can't add nor delete vertices/surfaces. This is enormous limitation imposed by X-Plane itself. When you want to IMPORT edited model back to ACF file, do following: Step 1: acftools --merge --ac3dfile=body.ac --txtfile 747.txt Step 2: acftools --generate --txtfile 747.txt --acffile 747.acf Sometimes resulting file is weirdly broken, this is because my merging algorithm is poor :( To avoid that use "--noorder" parameter: acftools --merge --ac3dfile=body.ac --txtfile 747.txt --noorder Unfortunately ACFTools stills very ugly and difficult to use piece of software. Even me, it's author, suffered several hours to try to import cool duct fans into X-Plane. I hope to expand ACFTools in brief future! Change Log: =========== v0.1 - first public release v0.2 - section vertex sorting for merging added v0.5 - bug fixes for merging routines - support for interpolated wings - better organized source & package - licensed under GPL - propeller blades in different color now - added docs/QuickIntro.txt v0.5a - fixed a bug in .WPN handling v0.6 - added lib/acf_h2def.pl which aids conversion from Austin's "X-Plane ACF_format.html" to standart .def format! - added ACF740.def - added WPN740.def - tested with X-Plane 7.40 RC-2 models - now using 7.40 definition by default - fixed bug of AC3D writer applying surface to only 12 of 20 sections - made some error messages more clear - updated author's mail & official site URL - added contrib/*.bat contribution by Marcelo M. Marques v0.61 - fixed 7.40 "is_left" misc. wing attribute (7.00 also had it, but it was undocumented until 7.40) - removed dumb & unnecessary Time::HiRes dependency - ACFTools can now run from PATH - minor docs/help fixes - added models/Seabee.ac model by Tracy Walker sample v0.62 - rewritten major part of XPlane::Convert::AC3Dparse - now using AC3D 'loc' attribute to get/set bodies arm - Win32 binary is now made with PAR - Perl Archive Toolkit - recreated models/* v0.62a - fixed WPN740.def: weird radius attribute shi(f)ted 3D model - fixed weapon AC3D generation: weapons has no arm