Create FPM models for Future Pinball 1.9
Welcome to FPM Editor for Future Pinball 1.9
FPM Editor for Future Pinball 1.9 is a third party standalone software and was entirely build to give to the user freedom of creativity. Everything, every toys you ever dreamed to see in 3D action are now there for everyone to enjoy!
Your knowledge of FP is limited? since FPM Editor for FP 1.9 is a standalone program, you can still contribute as a toy maker for others. The will to learn a little bit of 3D is all you need.
NEWS AND DOWNLOAD
FPM Editor for Future Pinball 1.9 is a creation of LvR from PinSimDB.org
Creative input, technical specs and documentation : Steve Paradis
Testing : Ruckage, TheNalex and Steve Paradis
Future Pinball is a property of Chris Leathley.
Basics - What is a .fpm?
.fpm are simply the 3d models object used in Future Pinball. The .fpm is a special "wrapping" of the .ms3d object, which you obtain when you create a 3D model from MilkShape 3D.
Do you need to know how MilkShape 3D work? YES you do. But it is not really thought to learn and the basics of it will be covered later.
So to create a toy for Future Pinball you need to do these 4 steps :
1. Create your object
Via any of your favorite software then export it to either .obj or .3DS format. Please note that other format could be supported but these are the one that have been tested by our staff and approved to work well.
2. Import your model in MilkShape 3D.
You need that software to add animation to your model if necessary, but mostly to convert your model to the .ms3d format.
3. Import your brand new .ms3d model into FPM Editor for Future Pinball 1.9
This step is for injecting the special properties needed by Future Pinball to recognise the model as his own. Save it to .fpm
4. Import the .fpm model into Future Pinball
And have fun...
Now that you have the basics, let's move on to the hot stuff...Step by Step.
1. Create your object
The object modeling
You can really use any package out there, as long as you can export to one of the format that are compatible to Milkshape 3D. Please note that there is a limit of 1500 polygons per object if you want it to behave well in Future Pinball, so you really need to keep everything "low poly" which is a standard in the game industry.
Less polygon mean also a better performance, remember that Future Pinball render the 3D at runtime and that no one have the same hotrod PC.
If you plan to have this very complicated spaceship, just break it down in pieces, some pieces can repeat themselve anyway... e.g. why create 4 wheel on a truck? You can easely use the same wheel 4 times in Future Pinballinstead keeping the table lighter and more fast on the loading time. Also having separate parts are great because you can animate them separatly, making thing look more awesome on the playfield!
The object texturing
.fpm model hold the possibility for only one texture to be wrapped around the object which mean that you have to master what is called UV mapping a little bit. I'm not going to explain how to do it here since it is different for every 3D software, so please refer to your software help section for that. Note that the texture accepted by Future Pinball are .jpeg, .bmp or . targa (including alpha channel transparency). Make sure that your "normals" are on the exterior, if you dont know what a normal is, please consult your software help file (f1)
it is always a good practice to keep multiple instance of your objects, named with incremental version(v1,v2,...).
So you have a model,it is up to your expectation and you are really proud of it...so lets' move on to MilkShape 3D for primary conversion.
2. In MilkShape 3D
Import your object. First thing you might notice is that MilkShape 3D has "triangulated" your model, which mean converting every single polygon from 4 side to 3 side making them all ...well..triangle :) this is normal so don't worry about that. This is needed for the .fpm model so it is a good thing that it does it automaticaly.
The center point
Be carefull with that part because it is mostly trial and error on some objects. To be perfectly on top of the playfield, your object need to be perfectly centered on the XYZ in MilkShape 3D. I say be carefull because it it not true for "holes" and "kicker" which we will cover in the later. But for now, let position your object to be perfect for Future Pinball:
(for control and howto's please refer to MilkShape 3Dhelp)
1.Click on Select. in Select Options pick "group mode"
2.Click on Move. in the Move Options drop down menu, select " Absolute" then click the move button.This will put your object perfectly centered and ready for FP. This is Absolute zero.
Animating your object in MilkShape 3D.
Only 2 objects can be animated for Future Pinball:
1. Drop Target
All others are hard coded ditecly into Future Pinball and their behaviors can be altered only there (like a flipper)
Depending on what you are creating, you might want to try at first, to deconstruct some existing object to understand how they work. I am not going through the process of animation here, since it is pretty unlimited what you can achieve with MilkShape 3D. Keep in mind that each frame of animation add rendering time on Future Pinball. Bellow 30 frames you are good, but pass that we noticed that Future Pinball become unstable and have a tendancy to crash..this one is on us, no need to thanks...
As a side note, there are tons of tutorials about MilkShape 3D. Mastering it can come very handy since it is a good little program that can also translate across multiple format.
Tips. The animation on Drop Target need to be made ONE WAY. When you invoke the "SolenoidPulse" script, Future Pinball will automaticaly play your animation backward at double speed.It is a good thing to experiment !
So when you are done, save as .ms3d and move on to FPM Editor
3. In FPM Editor (the fun part..)
FPM Editor is a properties injector that was created to bridge the gap between MilkShape3D and Future Pinball. This is were a flipper become a flipper, that a light can start blinking and that a ramp can shine with chrome attribute...but most important, this is where your object become a .fpm! Let's start with the grand tour...
New : Create a brand new model
Open : Open an existing model. Multiple model can be open all at once.
Close : Close the actual model. Watch out for the tabs!
Save : Overwrite the actual saved .fpm object
Save As : Create a new instance of the .fpm object in modification
Quit : Quit the program
Model Name : This is the actual name that is going to be diplayed in Future Pinball propriety stacks (on the right under the model drop down list)
Model Type : Drop Down list. What is your object is going to be? this is where the magic happen. you must select one of the attribute there, else Future Pinball will not know under which section to place your object when you import it.
As an example, If you select "Drop Target", Future Pinball will automaticly know that this object need to be place under the "Drop target" button in the Future Pinball object menu. It will also take in account the this object has animation on it and that you can script it
Icon(96x96bmp) : This is where you select the icon picture that will be displayed in Future Pinball
Main model (ms3d)
File name : Here is where you import your ms3d model. With the button save next to it, you can also export back your ms3d which is very helpful if you lost it.
Low poly model (ms3d)
Enabled and Distance : this was originaly made for older PC. when an object is at a distance (in millimeter) greater than (the distance) from the camera, it replace the object with a lower polygonal object of your choice to improve runtime rendering. On most of today PC though, it is not really usefull.
File name : Where you import your low poly ms3d model. With thebutton save next to it, you can also export back your low poly ms3d.
Mask for hole (ms3d)
File name : Again, these button are for importing and exporting a ms3d object, but this one will serve as a "cutout" to create hole in whatever surface you have including Playfield. Please note that holes need trial and error so be patient, you can realise amasing stuff with them. Mask object need to be "polygonal flat plane with normal facing up". Note that any shape will do as long as they are flat and perfectly positioned at Absolute zero in MilkShape 3D.
Reflection model (ms3d)
Use main model : When selected, the reflection of the model will be itself,
File name : otherwise you can select another model, which can lead to the creation of really weird effect.
Material : Drop Down List. This is where you set the bouncyness of an object. It tells Future Pinball what type of material the object is made of and how the ball is going to react to it if there is a collision.
Custom value : Amongst other thing, this value set the height of the kicker floor (where the ball rest).
Per polygon collision :When selected, Future Pinball have take in account every single polygon for a collision to occur so it is really CPU eater use with caution on very low polygon. Also Per polygon collision turn on the scriptable "hit event" automaticaly.
Tips - When doing ornaments, lights or pegs it is always better not to put any collision on the object, this improve the speed a lot for the end user. The more simple collision you have the better.
If Per polygon collision is unchecked the Collision shapes are actives. Collision shapes are basic shapes like cube, sphere and cylinder that are used to create more simpler collision. They are invisible but they reduce a lot the impact on CPU since they are made of a couple of surface only. You can add more than one to a single object. Again, deconstructing existing object are always good practice.
Collide Ball : This tell Future Pinball to make the ball react on impact with that object.
Generate Script Event :Check this if you want to be able to script the object on impact (e.g. _HitEvent)
Shape : Select from this list the object that is more suitable for your 3d model. Never let to unknown. At least put a 0.1x0.1x0.1 cube for it to take effect. if you dont want any collision at all (like for a Peg) just uncheck Per polygon collision and don't put any collision shape.
Note. Flipper and Diverter have a special type of collision under Flipper.
X.Y.Z. : These are use to offset the collision shape. Both positive and negative value are accepted
The others parameters bellow depend on what you have selected as a collision shape so they may vary.
Best way to understand them is to play with them.
Left Click and drag on the 3D interface: Fly around Cam
Middle mouse scroll on the 3D interface : Zoom In and Out
Right Click and drag on the 3D interface : Rotate the object and the collision shape
All these controls are pretty self explanatory except for Draw ball. When this is checked, a real size ball is created so you can actually compare the size of your object. You can move the ball around by middle clicking on it. Also please note that the collision shapes are represented (in pink when collidable else in blue) in the preview window and switching to wireframe mode make it easier to see.
Info collected from the model. Width,height and lenght are in millimeters
Frame is the number of animated frame in the model, this was injected in MilkShape 3D.
So now save your model as a new born .fpm and let's move on to Future Pinball.
4. In Future Pinball
Import your model via the Model Editor in Future Pinball. Go into the proper tab at the bottom and you should see your object now classified with the object under the proper section. Adjust the parameter as you would do on any other object.