DEFINING
SHIP PARAMETERS USING VINKA'S SPACECRAFT2.DLL
Tutorial made
by José Pablo Luna Sánchez. Version 0.8 beta. October 2005.
Feedback: jpluna@racsa.co.cr
Special thanks to Vinka,
Martin Schweiger, Jorge "Hispaorbiter" Iglesias, Salvadortega, Furtim,
Juan J. Luna, Juan Carlos Dovis, AndyMc for sharing their valuable knowledge,
and having patience and answering my questions, which made this tutorial possible.
Special thanks to Glen Jackson for his valuable comments that helped to improve
this tutorial.
Notice:
This tutorial is a beta.
Despite of the intensive research process, it is possible that there might be
a few inaccuracies, because I am not an aeronautics engineer.
So if you can point them out for correction purposes, it would be appreciated.
However, it is mostly debugged and tested.
If you provide any feedback you will be included in the credits for the next
version of this tutorial and you may choose to appear with your real name, or
just your nick, or both.
You are authorized to use
this tutorial for personal and non commercial purposes only.
You are not authorized to modify or repack the contents of this pack without
written permission of the author.
However you may post and modify the contents of this tutorial for wiki purposes
only, as long as credits are kept.
WHAT IS THIS TUTORIAL ABOUT
This tutorial will describe the most commonly used variables needed to configure a spacecraft using Vinka's Spacecraft2.dll.
SPACECRAFT2.DLL
is an add on to Orbiter Space Flight Simulator that allows users to configure
their own spacecraft using Notepad only, instead of programming C++ to make
their meshes flyable.
It has some limitations in the sense that you can´t configure the internal
systems of your ship, and it does't allow to configure a virtual cockpit.
But still it´s just great because it's very easy to use.
With this add on, your main concern should be to develop the skills and get
the tools to make 3D meshes and texture them.
You may get SPACECRAFT2.DLL
at http://users.swing.be/vinka/
You may get Anim8or
at http://www.anim8or.com
You will need it if you are to obtain some coordinates from your mesh for
thruster, landing and launch points placement.
Spacecraft performance parameters
and properties are indicated in a .INI file that is placed at the Orbiter
CONFIG/SPACECRAFT directory.
You may create or edit such INI files using Notepad.
The complex part of making
your own spacecraft is to understand all the concepts involved in the design
of your ship.
Fortunately, this tutorial will help you, even if you don't have a math or programming
degree.
Here is an example of the contents of an .INI file.
[PARTICLESTREAM_1]
NAME=engine
SRCSIZE=0.2
SRCRATE=1600
V0=100.0
SRCSPREAD=0.05
LIFETIME=0.5
GROWTHRATE=5
ATMSLOWDOWN=3.0
LTYPE=EMISSIVE
LEVELMAP=LVL_SQRT
LMIN=0
LMAX=1
ATMSMAP=ATM_PLOG
AMIN=1e-5
AMAX=0.1[CONFIG]
MESHNAME="Practice"
SIZE=25
EMPTY_MASS=10000
FUEL_MASS=20000
MAIN_THRUST=6e5
RETRO_THRUST=3e5
ATTITUDE_THRUST=6e5
ISP=50000
TRIM=0.05
PMI=(15.5,22.1,7.7)
CW_Z_POS=0.09
CW_Z_NEG=0.09
CW_X=2.
CW_Y=1.4
CROSS_SECTION=(53.0,186.9,25.9)
COG=2.47
PITCH_MOMENT_SCALE=0.00005
BANK_MOMENT_SCALE=0.00005
ROT_DRAG=(1.5,1.5,1.5)
WING_ASPECT=0.7
WING_EFFECTIVENESS=2.5
LAND_PT1=(0,-1.1,9)
LAND_PT2=(-4,-1.95,-5)
LAND_PT3=(4,-1.95,-5)
VISIBLE=1
CAMERA=(0,1.22,5.4)
MAIN_PSTREAM1=engine[EX_MAIN_0]
OFF=(0,0,-2)
DIR=(0,0,-1)
LENGTH=0.001
WIDTH=0.001
Looks too complex?
We will learn it is not as complex as it seems.
This example doesn't take
advantage of all the capabilities of spacecraft2.dll.
This example was selected precisely because it was short.
As you can see, you basically have a group of parameters or properties
grouped in certain sections that appear between brackets.
This tutorial WILL NOT
cover the AERODYNAMICS, PAYLOADS and the ANIMATIONS sections.
Let's focus on creating a simple flyable spacecraft.
TEXTURE
LIST
SECTION
[TEXTURE_LIST]
This section will declare the list of engine exhaust textures that will be used later.
Example:
[TEXTURE_LIST]
TEX_1=Exhaust_atrcs
TEX
The tex parameter specifies
the name of the DDS texture placed at the TEXTURES directory you will use for
the engine exhaust.
You may use a maximum of 16 textures for all spacecraft present in a scenario,
defined by Vinka's Spacecraft2.dll.
Example
TEX_1=Exhaust_atrcs
TEX_2=Exhaust_atsmeIt will load a texture called Exhaust_atrcs.dds
and a texture called Exhaust_atsme.dds
As you add more textures they should be declared as
TEX_3 = ...
TEX_4 = ...
etc.Notice all these textures are squares and they are composed by slices containing different elements each.
PARTICLE
STREAM SECTION
[PARTICLESTREAM]
Particle streams are basically...
SMOKE and FIRE coming out from the engine exhaust.
You may use up to 13 particle streams.
They will range from PARTICLESTREAM_1 to PARTICLESTREAM_13.
Particles are emitted by
the engine exhaust.
PARTICLESTREAM definition
must be made at the beginning.
This definition will be used
later when you define the MAIN_PSTREAM, HOOVER_PSTREAM, RETRO_PSTREAM or ATT_PSTREAM
variables.
Example:
This is the particle definition.
As you may notice, the NAME parameter is an arbitrary name defined by you, that
is used later.
[PARTICLESTREAM_1]
NAME=DGContrail
SRCSIZE=8.0
SRCRATE=3
V0=150.0
SRCSPREAD=0.3
LIFETIME=3.5
GROWTHRATE=4
ATMSLOWDOWN=3.0
LTYPE=DIFFUSE
LEVELMAP=LVL_PSQRT
LMIN=0
LMAX=2
ATMSMAP=ATM_PLOG
AMIN=1e-4
AMAX=1[PARTICLESTREAM_2]
NAME=DGMain
SRCSIZE=2.0
SRCRATE=10
V0=150.0
SRCSPREAD=0.1
LIFETIME=0.2
GROWTHRATE=16
ATMSLOWDOWN=1.0
LTYPE=EMISSIVE
LEVELMAP=LVL_SQRT
LMIN=0
LMAX=1
ATMSMAP=ATM_PLOG
AMIN=1e-5
AMAX=0.1
This is where the particle streams are used
[CONFIG]
MESHNAME="dg\DeltaGlider"
SIZE=9.
CAMERA=(0,1.467,6.782)
EMPTY_MASS=12000
FUEL_MASS=10000
MAIN_THRUST=2.16e5
RETRO_THRUST=5.4e4
HOVER_THRUST=2.16e5
ATTITUDE_THRUST=5000
ISP=50000
TRIM=0.05
PMI=(15.5,22.1,7.7)
CW_Z_POS=0.09
CW_Z_NEG=0.09
CW_X=2.
CW_Y=1.4
CROSS_SECTION=(53.0,186.9,25.9)
COG=2.47
PITCH_MOMENT_SCALE=0.00005
BANK_MOMENT_SCALE=0.00005
ROT_DRAG=(0.10,0.13,0.04)
WING_ASPECT=0.7
WING_EFFECTIVENESS=2.5
ATT_TEX=Exhaust_atrcs
MAIN_PSTREAM1=DGContrail
MAIN_PSTREAM2=DGMain
HOOVER_PSTREAM1=DGContrail
HOOVER_PSTREAM2=DGHoover
Let's learn about the variables required to configure them.
The description of particle
stream variables is based on the API manual made by Martin Schweiger.
The whole Spacecraft2.dll app is based on the concepts of the API manual that
comes with Orbiter SDK.
If you want to go technical into programming stuff, you may like to read it.
SRCSIZE
Initial smoke particle size when it's being created (measured in meters)
Example
SRCSIZE=8.0
SRCRATE
Average particle generation rate (particles per second)
Example
SRCRATE=3
V0
Average particle emission velocity (measured in meters per second)
Example
V0=150.0
SRCSPREAD
Emission velocity distribution randomisation
Example
SRCSPREAD=0.3
LIFETIME
Average particle lifetime (measured in seconds)
Example
LIFETIME=3.5
GROWTHRATE
Particle growth rate (measured in meters per second)
Example
GROWTHRATE=4
ATMSLOWDOWN
Deceleration rate beta in atmosphere, defined by
v = v0 * e ^ (- beta * d * t)
Example
ATMSLOWDOWN=3.0
LTYPE
Lighting type.
Could be EMISSIVE or DIFFUSE.
Emissive particles are good
for fire, for they are a source of light.
Diffuse particles are good for smoke, for they don´t have light
by themselves.
You may define several particle streams.
Example
LTYPE=DIFFUSE
LEVELMAP
Mapping between level parameter and particle opacity.
Example
LEVELMAP=LVL_PSQRT
LMIN
Minimum level for alpha
mapping.
The alpha channel contains a grayscale image of any object in an image.
Example
LMIN=0
LMAX
Maximum level for alpha mapping.
Example
LMAX=2
ATMSMAP
Maximum level for alpha mapping
Example
ATMSMAP=ATM_PLOG
AMIN
Minimum atmospheric mapping for alpha mapping
Example
AMIN=1e-4
AMAX
Maximum atmospheric mapping for alpha mapping
Example
AMAX=1
CONFIG
SECTION
[CONFIG]
General ship definition parameters are used in this section.
Example:
[CONFIG]
MESHNAME="dg\DeltaGlider"
SIZE=9.
CAMERA=(0,1.467,6.782)
EMPTY_MASS=12000
FUEL_MASS=10000
MAIN_THRUST=2.16e5
RETRO_THRUST=5.4e4
HOVER_THRUST=2.16e5
ATTITUDE_THRUST=5000
ISP=50000
TRIM=0.05
PMI=(15.5,22.1,7.7)
CW_Z_POS=0.09
CW_Z_NEG=0.09
CW_X=2.
CW_Y=1.4
CROSS_SECTION=(53.0,186.9,25.9)
COG=2.47
PITCH_MOMENT_SCALE=0.00005
BANK_MOMENT_SCALE=0.00005
ROT_DRAG=(0.10,0.13,0.04)
WING_ASPECT=0.7
WING_EFFECTIVENESS=2.5
ATT_TEX=Exhaust_atrcs
MAIN_PSTREAM1=DGContrail
MAIN_PSTREAM2=DGMain
HOVER_PSTREAM1=DGContrail
HOVER_PSTREAM2=DGHover
MESHNAME
It's the name of a .MSH
file that is placed in the Orbiter MESHES directory.
A mesh contains the data of the ship 3D model that is displayed on screen.
Syntax
MESHNAME= <filename>
Example:
MESHNAME="K-Gripen"
It refers to a file called
K-Gripen.msh
This file, once displayed on screen, looks like this...
You may need to model a mesh using an 3D modeller that allows you to do some 3D modelling and texturing.
SIZE
It is the radius of a sphere that contains the mesh.
Syntax
SIZE=<Radius in meters>
Example:
SIZE=8
Radius of the sphere is 8 meters. Diameter is 16 meters. So craft length is 16 meters.
EMPTY_MASS
It's the mass of the ship,
but without any fuel or payload or ordnance, measured in kilograms.
Some specs are presented in pounds, so conversion to kilograms is necessary.
Usually such specs already include the weight of filled internal fuel tanks.
To give you an idea about
mass, the container carried by a truck may carry up to 26,000Kg of cargo
and the total weight (including platform an wheels) could reach 30,000Kg.
A Space Shuttle has a mass of 90,718kg when landing, the External
Tank (ET) has a mass of 29,938Kg when empty, and each Solid Rocket Booster
(SRB) has a mass of 589,680Kg.
An A-10 Thunderbolt has an empty mass of 9183Kg.
Kilograms (Kg) is the standard
measure used to measure mass, and Newtons (N) is the standard measure for forces.
However, you may be able to find airplane specs using other non standard units,
like lb (mass), hp-lb (force), lbf (force), ton force (force) and Kgf (force).
Kg = lb /2.2
Kgf (kilogram force) = g * 1 kg = 9.80665 N
lbf (pound force) = g * 1 lb = 4.4482216152605 N
ton force = g * 1 sh tn = 8.896443230521 N
where g = 9.80665 m / s ^ 2
As you may notice, some
plane specifications describe weight using mass units, so you
say that a certain plane has a weight measured in lb or Kg.
Kg and lb are not units of weight, but mass, but since aircraft are not subjet
to gravitational variations as spacecraft may be, and since every measure takes
place on Earth, you should understand weight as the force of gravitational atraction
for the mass described in Kg or lb, when you read plane specifications.
Here you have the empty "weight" (mass) of several airplanes measured in lb.
B-17E: 31,150 lb
B-29C: 135,000 lb
B-52: 480,000 lb
F-105D: 27,500 lb
F-4E: 28,000 lb
F-86E: 10,555 lb
FW-190: 7,055 lb
L-5: 2,158 lb
ME-109: 4,330 lb
ME-110: 4,330 lb
ME-163: 4,191 lb
ME-262: 8,820 lb
MIG-15: 8,820 lb
MIG-17: 9,040 lb
MIG-21: 11,464 lb
P-47: 19,400 lb
P-51D: 7,125 lb
YAK-9: 7,055 lb
Syntax
EMPTY_MASS=<mass>
Example:
EMPTY_MASS=10000
The mass of this ship is
10,000kg.
This could be the mass of
a modern jet fighter with no fuel.
FUEL_MASS
It's the mass of the fuel
contained in the internal fuel tanks, measured in kilograms.
The external tank of a space shuttle has a mass of 29,938Kg when empty, and
a total mass of 760,234 when it's full of fuel. How much fuel mass does it have?
Time to use your calculator...
Notice that such fuel will
barely be enough to achieve a Low Earth Orbit when heading east.
AIRCRAFT FUEL MASS
An A-10 Thunderbolt carries 4835Kg of fuel.
Weight is a force, it is
measured in Newtons.
Objects near Earth seal level will have the following weight
Weight = 9.8 * Mass
For an aircraft we may calculate fuel as
Fuel weight = Max weight - Payload capacity - Empty weight
Maximum weight is the maximum possible weight an aircraft can have so it can take off using a runway with a certain length and having a certain engine power.
SPACECRAFT FUEL MASS
For spacecraft things could
be a bit more complex.
We need to estimate how much fuel we need for a space trip.
Usually, if your craft will
fly from Earth surface to orbit only, it would need fuel to be about 90% of
it's total weight upon take off.
If your craft is to be designed for interplanetary travel you will need fuel
for the various stages of your flight:
Notice that if you use realistic
fuel limited settings, your craft will lose mass as fuel is consumed, so more
fuel will be required at the beginning and less wil be required at the end of
your mission.
If your fuel limited settings are unrealistic, weight will remain the same,
but also fuel is not consumed, so you´ll need not to have an empty tank
to make it flyable.
CALCULATING FUEL FOR SURFACE TO ORBIT
You may use the following formula:
Fuel mass = 0.9 * Total mass
Notice that total mass is the mass upon take off.
CALCULATING FUEL FOR EJECTION BURN
To escape gravity of a certain
planet you will need to accelerate from your current velocity (Vel
in the Orbit MFD) to reach escape velocity.
You may find escape velocity data for each planet in the Orbiter.pdf manual,
page 108.
The difference between those is called as "Delta V" or "dV".
dV = Escape velocity - Current Velocity
Such dV can be obtained from Interplanetary MFD (also known as IMFD) by Jarmonik, or TransX MFD that comes with the standard Orbiter.
To calculate the fuel required for escaping gravity, you will use the following formula.
Fuel mass = dV * Total mass / Thrust * Is * 9.8
Notice that "total
mass" for escaping is not the initial mass upon take off, but the total
mass before the ejection burn.
In this formula you have 2 missing values:
CALCULATING FUEL FOR THE REST OF THE TRIP
As an approximate, you may
think that the amount of fuel required for orbit ejection is about the same
as the required to achieve an orbit around your destination planet. Of
course, it is just a gross estimate.
Such orbit insertion at the destination planet will also imply a certain
dV and some fuel consumption.
But as you get closer to the destination planet, your craft will increase its
velocity.
So what should be the "current velocity" we should use to calculate
dV?
We have a point where we
start the retrograde burn, which is located near the periapsis
(lowest point in the orbit) of your parabolic/hyperbolic orbit.
So we could think that the velocity at the periapsis, given your current
parabolic/hyperbolic orbit, should be the "current velocity".
Your current velocity before orbit insertion usually should be
higher than the escape velocity.
To achieve an orbit around the planet, you'd need to get below escape velocity
to get into orbit, so you need to brake using a retrograde burn.
Now you can make a gross estimate of dV for orbit insertion.
To land on a planet
you will have a dV will be equal to Vel (which can be found at
the Orbit MFD) because you want to bring your craft to a zero velocity.
Notice that Vel and ground velocity are not the same, due to planet rotation,
but it is a rough estimate to calculate fuel consumption.
Fuel mass = Vel * Total mass / Retro thrust * Is * 9.8 + spare fuel
You have Retro thrust as a missing variable, so see RETRO_THRUST variable.
Notice that total mass is
the initial mass before deorbiting and it doesn't consider the amount
of fuel required to reduce vertical speed.
So you may like to add spare fuel since you may like to use your hover
engines and have some fuel in case you need it for some extra maneuvering.
Of course, if your orbiter is a glider and you are about to land on Earth, you may not need too much fuel, because you may use drag instead of retro thrusters to brake and land.
ONE
WORD OF ADVISE
Since "total mass"
is diferent at every stage of the trip, it would be better if you calculate
the required fuel for the latest stages of your trip first, and then the earlier
stages of your trip.
Why?
Because the fuel mass used for later stages is part of the total mass at the
beginning of earlier stages.
Notice that these formulas used to calculate fuel mass for interplanetary travel are just gross estimates so you can have an idea of how much fuel you may need.
Syntax
FUEL_MASS=<mass>
Example:
FUEL_MASS=20000
This craft has 20000kg of fuel in the internal fuel tanks.
MAIN_THRUST
There are several forces acting on a flying craft:
1.Thrust
2.Drag
3.Lift
4.Weight
Main Thrust indicates how
much power the main engine has.
The following picture shows the main thruster of a space shuttle performing
a burn.
A good way to think of
how much thrust you should add is to think about the thrust/weight ratio.
Thrust/weight ratio would be important to determine if a craft can fly vertical
and continue climbing or not.
If thrust/weight ratio
<1 it means that the engine can't sustain a continued climb on earth.
It means that weight is higher than thrust, so you can't lift this object from
Earth surface using this engine.
An A-10 Thunderbolt has a thrust/weight ratio of 0.6 so if you are wise, you shouldn't go in a steep climb with that plane.
Obviously, a rocket that goes upward must have thrust/weight ratio higher than 1, for it wouldn't take off otherwise.
The mass is expressed in
Kg (kilogram) and the force is expressed in N (Newton).
Weight is the attractive force of Earth on the mass.
You can calculate weight at the surface of the Earth as follows:
Weight = 9.81 * Mass
So if you want to calculate thrust you could do it as follows:
Thrust = Thrust-weight-ratio * Mass * 9.81
In the case of A-10, it
flies due to aerodynamic properties, airspeed causes a difference of pressure
on the wings, that causes lift and that keeps it flying.
If A-10 had a hover thrust with a thrust/weight ratio of 0.6, it wouldn't be
able to make a vertical take off.
Also you can calculate thrust using powerplant data from aircraft specifications.
B-17E: 1200*4 hp-lb
B-29C: 2200*4 hp-lb
B-52: 13750*8 hp-lb
F-105D: 17200 hp-lb
F-4E: 17900*2 hp-lb
F-86E: 5200 hp-lb
FW-190: 1700 hp-lb
L-5: 190 hp-lb
ME-109: 1300 hp-lb
ME-110: 1100 hp-lb
ME-163: 3748 hp-lb
ME-262: 1980*2 hp-lb
MIG-15: 5005 hp-lb
MIG-17: 5952 hp-lb
MIG-21: 11240 hp-lb
P-47: 2300 hp-lb
P-51D: 1590 hp-lb
YAK-9: 1360 hp-lb
The hp unit is usually referred
to "horse power" (the weight or pull of a horse used to power a piece
of machinery) and is used to describe the power of internal combustion engines.
Such unit was first used by James Watt who used steam engines to replace horses.
1 hp = 745.69987158227022 W
1 W = 1 N m / s
where W (Watt) is a unit of power.
Syntax
MAIN_THRUST=<Thrust force>
Example
MAIN_THRUST=2.7e5
It means it has 2.7 * 10^5
N or 270000 N of thrust.
If the ship has a mass of 30000kg (craft and fuel), then thrust mass ratio would
be:
Thrust/weight ratio = 270000N / [ 30000kg x 9.81 ] = 0.917
As you can see, this craft
can't go vertical. It seems to be an airplane, not really a spacecraft that
could take off from Earth to go to space.
It is quite underpowered
to go from Earth to space.
N stand for Newtons which
is:
1 Newton = 1 Kg x m /sec^2
A space shuttle may have a thrust of 53,400 N.
RETRO_THRUST
Retro thrust indicates how
much power the retro thrusters have.
Retrothrusters fire backwards, precisely in the opposite direction of the main
thrusters.
It's mostly used for braking in space, so it is not expected to have too much
power, for space maneuvers don't require so much power if you plan to make delicate
maneuvers.
Syntax
RETRO_THRUST=<Thrust force>
Example
RETRO_THRUST=5.4e4
It means it has 5.4 *10^4
N or 54,000 N of retrothrust.
This is the retrothrust of a Delta Glider.
Main thrust for Delta Glider is 2.16 * 10^5 N or 216,000 N.
An airplane or a rocket should have no retrothrust.
HOVER_THRUST
It indicates how much power
the hover engine has.
Thrust/weight ratio applies here, because hover thrust keeps the ship flying.
Logic says that VTOL (Vertical Take Off and Landing) craft, should require a
thrust/weight ratio higher than 1.
Syntax
HOVER_THRUST=<Thrust force>
Example
HOVER_THRUST=2.16e5
It means it has 2.16 *10^5
N or 216,000 N of retrothrust.
This is the hover thrust value for a Delta Glider.
ATTITUDE_THRUST
It indicates how much power the attitude engines have.
Attitude thrusters control
your ship's orientation.
They will rotate your ship around all 3 axes.
Those are needed in space and therefore they should not be very powerful as
other engines, but still powerful enough to move your craft.
Orbiter considers ships
as a mass placed at a certain point in space, not like a volumetric shape.
The thrust specified should
be the equivalent to the force placed at 1 meter from such point.
If you have a thruster (T1), located at a different distance (D1), the equivalent thrust T at 1 meter from the point where the ship is located, would be
T = T1 * D1
Syntax
ATTITUDE_THRUST=<Thrust force>
Example
ATTITUDE_THRUST=7740
It means it has 7740 N of
attitude thrust.
That's the thrust for a space shuttle.
A Delta Glider may have an attitude thrust of 5000 N.
If your thruster is located at 20 meters from the center of mass of your ship and it has a force of 350N, using the formula the equivalent ATTITUDE_THRUST would be:
T = 20 * 350 = 7000 N m
So you'd have
ATTITUDE_THRUST=7000
ISP
It is some sort of measure
of fuel consumption. It measures the flow of gas coming out from the craft exhaust.
It is not really fuel specific impulse (Is), but the flow of gasses (Vg) that
come out from the exhaust.
Vg = Is * 9.8
ISP = Vg
If you want to estimate what a ship can do, you have the following formula:
1/2 (Vg * ln( m0 / mt )) ^2 = 1/2 v^2 + G * M / R
Where:
Vg: Flow of gasses coming out from engine exhaust.
m0: Mass of the rocket/ship (without fuel)
mt: Total mass (Fuel + rocket) which can be considered as initialv: Velocity required to achieve a certain orbit.
R: Radius of orbit measured from the center of the planet/moon
G: This is a constant value (6.67e-11)
M: Mass of the planet/moon
Notice that due to Is, for rockets we usually have:
m0 = 0.1 * mt
One of the highest Is is
the H2 and O2 which is 363 which gives about Vg = 363 * 9.8 = 3557.4 m/sec (which
looks like the numbers that appear in Orbiter).
Ion engines have higher ISP but their thrust don't provide enough power to go
from Earth to space. It's mostly for use in outer space.
In Orbiter this is just a number, you might put any number you want.
Here some Is values for different types of fuel mixtures:
Nafta / liquid O2 (at 3000ºC, mixture proportion 0.4, combustion pressure 24kg/cm2) : 242
Nafta / liquid O2 (at 3200ºC, mixture proportion 0.4, combustion pressure 24kg/cm2): 261
Nafta / liquid O2 (at 3300ºC, mixture proportion 0.4, combustion pressure 40kg/cm2): 279
JP4 / liquid O2 (at 3300ºC, mixture proportion 0.45, combustion pressure 40kg/cm2): 255
Methylic alcohol and liquid O2 (at 2800ºC, mixture proportion 0.80, combustion pressure 24kg/cm2): 238
Methylic alcohol and gas O2 (at 2900ºC, mixture proportion 0.83, combustion pressure 24kg/cm2): 248
Liquid H2 and O2 (at 2500ºC, mixture proportion 0.28, combustion pressure 40kg/cm2): 363
JP4 and nitric acid (at 2800ºC, mixture proportion 0.24, combustion pressure 40kg/cm2): 238
JP4 is a special fuel for jets.
Specific impulse is the thrust given by each kilogram of burned gas per second.
Specific impulse (Is) = Thrust / Total gas flow
Aircraft that accelerate air by using air intakes, behave like a craft with a big ISP (fuel will last longer), so for aircraft you calculate ISP as follows:
ISP = Thrust at cruise speed * Max flight time / Fuel mass
Max flight time = Range / Cruise speed
Here you have the range for several aircraft
B-17E: 1100 miles
B-29C: 3250 miles
B-52: 9000 miles
F-105D: 800 miles
F-4E: 786 miles
F-86E: 925 miles
FW-190: 497 miles
ME-109: 350 miles
ME-110: 559 miles
ME-163: 50 miles
ME-262: 652 miles
MIG-15: 1115 miles
MIG-17: 870 miles
MIG-21: 683 miles
P-47: 590 miles
P-51D: 950+ miles
YAK-9: 875 miles
where 1 mile = 1609.344
m
It is possible also
that you may find a measure in terms of nautical miles (nm).
1nm = 1852 m
Syntax
ISP= <Flow of gas>
Example
ISP=12500
This ship spend 12500 Kg/sec of fuel.
TRIM
Trim factor will set the
magnitude of the trim angle of attack.
If trim is zero, there is no angle of attack.
It is not engine trimming
but control surface trimming.
Its value ranges from -1 to 1.
Syntax
Trim = <Trim value>
Example
TRIM=0.05
PMI
Principal moment of inertia
describes some sort of resistance to rotational movement.
For a very small mass
is calculated in the following way:
PMI = Mass * Distance between mass center and axis of rotation^2
Since making the calculations
for a complex shape is a bit hard, we better use some tools to calculate it.
It can be calculated using ShipEdit, an application that comes with the
Orbiter SDK that can be downloaded from the Orbiter website, and it is
located at the Orbitersdk\utils directory.
To calculate baricenter, just load the mesh you will use, and do the calculations,
using either MC integration or grid integration.
ShipEdit is a useful tool that will give you the following information:
By making an MC integration, or a grid integration, you may get the PMI values.
In the previous example, you have the output from ShipEdit which gives some PMI values.
9.96 -0.01 -0.03
(X axis moment of inertia)
-0.01 9.62 0.035 (Y
axis moment of inertia)
-0.03 0.35 1.72 (Z
axis moment of inertia)
The PMI values for orbiter
will be the figures shown with bold letters.
You have different PMI values because the resistence to rotation is not the
same in the 3 axes.
Syntax
PMI=(<X axis PMI>,<Y axis PMI>,<Z axis PMI>)
Example
PMI=(9.96,9.62,1.72)
This is the PMI for a custom
vessel.
For F-18 plane, you may have a PMI of (15.5,22.1,7.7).
A space shuttle may have a PMI of (78.2,82.1,10.7)
CROSS_SECTION
A cross section of a solid
is a plane figure obtained by the intersection of that solid with a plane.
The cross section of an object therefore represents an infinitesimal "slice"
of a solid, and may be different depending on the orientation of the slicing
plane.
The cross section in Orbiter is the area of such surface, measured in square meters.
Notice that depending on
where you slice the object, or depending on the direction of the cut, cross
section may look different.
So when you calculate the cross section area, you must use a shape that should
look like a "shadow" of that ship.
As you see, in this case, the cross section is the area of the shadow of your
craft.
The 3 values describe the
area of each cross section through the XY, YZ and XZ planes. (The XY plane is
the plane opened by X and Y axis).
You must specify the
cross section area for X, Y and Z axes in square meters.
Tip:
To calculate the area, you may use ShipEdit.Exe that comes with OrbiterSDK.
Just load the mesh and run integration process.
You may also get PMI data from the Inertia Tensor after running the integration.
Syntax
CROSS_SECTION=(<X>,<Y>,<Z>)
Example
CROSS_SECTION=(53.0,186.9,25.9)
These are cross section
values for a Delta Glider.
For a space shuttle you may have (234.8, 389.1, 68.2)
CW_Z_POS
Drag coefficient when the
craft is moving forward.
Drag coefficient is an aerodynamical resistance coefficient, that depend on
how air will flow along the axis of each coefficient.
In the following picture
air flow lines are shown.
As you see, the air is not flowing smoothly and some turbulence appears.
Turbulence creates drag, because vacuum is created.
The turbulence is produced by the fact that vacuum is produced behind the ship.
Vacuum will suck air
and it will cause non smooth air flow, so the drag coefficient is bigger.
A bigger cross section is likely to produce drag , but also air flow problems
causes drag because air is not flowing smoothly.
That causes drag.
If you have a drag coefficient
higher than 0, you have basically an object trying to move, which will
face some resistance to movement due to the action of atmosphere.
If you have a drag coefficient of 0, you have a thin knife that makes
a cut in the air (no resistance).
If coefficient is higher than 1, then you have a VERY high drag.
Drag coefficient when craft is moving forward should be the lower of all drag
coefficients, since it's the direction in which the craft will move.
Each object will have a
cross section in each axis.
Equal cross sections may result in different drag coefficients, because cross
section is not the only factor responsible for drag.
For example, an ellipsoid should have lower drag than a sphere, but both would
have the same cross section.
Drag is the force that poses
resistance to movement, and it will indicate aerodynamic efficiency.
Drag is calculated by Orbiter,
but here you have the formulas anyway.
Drag = 0.5 * drag coefficient * atmosphere density * cross section area * velocity ^ 2
Atmosphere density = 1.3 * e ^ (-G * Alt * Wm / (8320 * T))
Where
e: constant called "e"
Alt: Altitude (meters)
G: constant. For Earth, G = 9.86 m/s^2
Wm: Average molecular weight of atmosphere. Wm=29 (similar to N2 which represents 78% of air)
T: Temperature of air (Kelvin).
At sea level, atmosphere density = 1.3Kg/m^3
Drag coefficient could be calculated as:
Drag coefficient = 2 * Main Thrust / (atmospheric density * cross section area * max speed ^ 2)
Drag coefficient changes
at supersonic speeds, due to compression of air, but it has nothing to do with
the .INI file.
You could make a wild guess regarding this coefficient by comparing similar
ships to yours, either by interpolating or extrapolating figures.
The most accurate way to measure drag coefficients in using an wind tunnel designed
for such a specific purpose, but most of us won't have one at our disposal.
Here you have the maximum speed for several aircraft.
B-17E: 317 mph
B-29C: 357 mph
B-52: 665 mph
F-105D: 1226 mph
F-4E: 1386 mph
F-86E: 679 mph
FW-190: 408 mph
L-5: 129 mph
ME-109: 390 mph
ME-110: 349 mph
ME-163: 596 mph
ME-262: 540 mph
MIG-15: 668 mph
MIG-17: 711 mph
MIG-21: 1285 mph
P-47: 428 mph
P-51D: 437 mph
YAK-9: 368 mph
where 1 mph = 0.44704 m/s
Syntax
CW_Z_POS=<Drag coefficient>
Example
CW_Z_POS=0.09
CW_Z_NEG
Drag coefficient when the craft is moving backwards.
Syntax
CW_Z_NEG=<Drag coefficient>
Example
CW_Z_NEG=0.09
CW_X
Drag coefficient is the
aerodynamical resistance coefficient when the craft is moving along X axis (lateral
motion).
For a normal airplane, CW_Y would always have the highest value of all drag
coefficients.
Syntax
CW_X=<Drag coefficient>
Example
CW_X=2.0
This is the X drag for a Delta Glider.
CW_Y
Drag coefficient is the
aerodynamical resistance coefficient when the craft is moving along Y axis (vertical
motion).
A cylindrical rocket should have CW_X = CW_Y and they both would be higher
than CW_Z POS.
Syntax
CW_Y=<Drag coefficient>
Example
CW_Y=1.4
This is the Y drag for a
Delta Glider.
A space shuttle would have a Y drag of 1.5.
It's the "center of
gravity" above the ground.
It raises your craft to prevent that your craft looks like it's sunk in the
ground when your craft has a mesh with points below 0 level in the Y axis.
Syntax
COG=<Minimum altitude in meters>
Example
COG=2.47
PITCH_MOMENT_SCALE
It's some sort of resistance
to pitch changes.
When your craft has an Angle of Attack (AoA), it means that your ship longitudinal
axis is not aligned with your airspeed velocity vector (the direction
in which your ship is moving).
The ship will try to align both, so there will be a moment acting to rotate
your ship, your longitudinal axis towards the velocity vector.
It is known as pitch moment scale.
Example
PITCH_MOMENT_SCALE=0.00005
This is the pitch moment scale for a Delta Glider or an F/A-18 Hornet
PITCH_MOMENT_SCALE=0.00001
This is the pitch moment scale for a space shuttle.
BANK_MOMENT_SCALE
When your craft has an Angle of Attack (AoA), there will be also a moment acting on bank when ship is moving towards the airspeed vector.
Example
BANK_MOMENT_SCALE=0.00005
This is the bank moment scale for a Delta Glider, or an F/A-18 Hornet
BANK_MOMENT_SCALE=0.00002
This is the bank moment scale for a space shuttle.
ROT_DRAG
It's the vessel resistance
to rotation around all 3 axes when flying in atmosphere.
It will cause an angular deceleration due to atmospheric friction.
Basically it will be the resistance force that will stop pitch, yaw and bank
maneuvers.
Syntax
ROT_DRAG=(<X>,<Y>,<Z>)
Example
ROT_DRAG=(0.10,0.13,0.04)
MAIN_PSTREAM
It will use particle streams
defined at the PARTICLESTREAM section to display the main engine smoke and/or
fire.
Syntax
MAIN_PSTREAM<n>=<Particle Stream Name>
<Particle stream name> must previously defined at the PARTICLESTREAM section
Example
MAIN_PSTREAM1=DGContrail
MAIN_PSTREAM2=DGMain
HOVER_PSTREAM
It will use particle streams defined at the PARTICLESTREAM section to display the hover engine smoke and/or fire.
Syntax
HOVER_PSTREAM<n>=<Particle Stream Name>
<Particle stream name> must previously defined at the PARTICLESTREAM section
Example
HOVER_PSTREAM1=DGContrail
HOVER_PSTREAM2=DGHover
ATT_PSTREAM
It will use particle streams defined at the PARTICLESTREAM section to display the attitude engines smoke and/or fire.
Syntax
ATT_PSTREAM<n>=<Particle Stream Name>
<Particle stream name> must previously defined at the PARTICLESTREAM section
Example
ATT_PSTREAM1=DGContrail
ATT_PSTREAM2=DGAtt
MAIN_TEX
It will define what texture
will be used for attitude exhaust flames.
The texture should be previously defined at the TEXTURELIST section.
Example
ATT_TEX=Exhaust_atsme
It will use a texture called Exhaust_atsme.dds to display the main thruster flames.
HOVER_TEX
It will define what texture
will be used for hover engine exhaust flames.
The texture should be previously defined at the TEXTURELIST section.
Example
HOVER_TEX=Exhaust_atsrb
It will use a texture called Exhaust_atsrb.dds to display the attitude thruster flames.
ATT_TEX
It will define what texture
will be used for attitude engine exhaust flames.
The texture should be previously defined at the TEXTURELIST section.
Example
ATT_TEX=Exhaust_atrcs
It will use a texture called Exhaust_atrcs.dds to display the attitude thruster flames.
LAND_PT
Landing points are the points
where the craft will be in contact with the ground once it lands.
You may think of it as the points where the landing gear are in contact with
the ground.
To obtain the coordinates
of landing points you may use Anim8or.
Your ship should be properly oriented, sized and located so you can get the
coordinates.
Refer to the "Engine exhaust sections" to see exactly how to orientate,
resize and locate a mesh.
Once ship is properly oriented, sized and placed, press the buttons highlighted in RED in the following diagram and double click on a point that is as close as possible to the location of your landing point.
The axes used by Anim8or are different than the axes used by Orbiter.
Orbiter X = Anim8or X
Orbiter Y = -Anim8or Z
Orbiter Z = Anim8or Y
So in the example shown above, Anim8or coordinates are (121.56, 41.9337, -65.179) and Orbiter coordinates should be (121.56, 65.179, 41.9337).
Syntax
LAND_PT<n> =(<x>,<y>,<z>)
Example
LAND_PT1=(-4.5,0,6.2)
LAND_PT2=(4.5,0,6.2)
LAND_PT3=(0,4.5,6.2)
LAND_PT4=(0,-4.5,6.2)
These would be the coordinates of the 4 legs of a lander, similar to the rocket of Tintin, or an Eagle from Space 1999.
LAUNCH_PT
Launch points are the points
where the mesh is in contact with the ground before taking off.
Launch points may be the same of landing points for some space modules, but
in some cases, landing and launch points could be different.
For example, if you have a craft that is vertical upon launch and it's horizontal
when it lands on a runway, launch and landing points would be different.
Syntax
LAUNCH_PT<n> =(<x>,<y>,<z>)
Example
LAUNCH_PT1=(-4.5,0,6.2)
LAUNCH_PT2=(4.5,0,6.2)
LAUNCH_PT3=(0,4.5,6.2)
LAUNCH_PT4=(0,-4.5,6.2)
These would be the coordinates of the 4 legs of a lander. These are the support points during take off.
CAMERA
It's the position of the
camera when in cockpit view.
When you make a mesh, if you modelled it in detail so cockpit details can be
seen, you may like to put your camera there.
So you define the mesh coordinates where the camera should be.
Syntax
CAMERA=(<X>,<Y>,<Z>)
Example
CAMERA=(0,1.467,6.782)
VISIBLE
It will specify if the internals of the mesh should be displayed in cockpit view.
Example:
CAMERA=1
DOCKING
PORT SECTIONS
[DOCK]
In these sections you will
define the docking ports of your craft.
You may have up to 16 docking ports, from [DOCK_0] to [DOCK_15].
Example:
[DOCK_0]
POS=(0,-0.49,9.84)
DIR=(0,0,1)
ROT=(0,1,0)
POS
Indicates where the center of the docking port is located in the mesh, in X, Y and Z axis.
To obtain the coordinates
of a docking port you may use Anim8or.
Just press the buttons highlighted in RED
in the following diagram and double click on a point that is as close as possible
to the location of your docking port.
The axes used by Anim8or are different than the axes used by Orbiter.
Orbiter X = Anim8or X
Orbiter Y = -Anim8or Z
Orbiter Z = Anim8or Y
So in the example shown above, Anim8or coordinates are (-2.9111, 29.104, 0.400) and Orbiter coordinates should be (-2.9111, -0.400, 29.104)
Example:
POS=(0,0,9.84)
The docking port is located along the Z axis, 9.84 meters from the origin.
DIR
Indicates a direction that
is normal to the docking port.
It indicated the side of the dock where you can dock.
Example:
DIR=(0,0,1)
When you try to dock with
this port, you must approach from the +Z direction in this case.
If this docking port belongs to a craft, this port should be in front of the
craft.
If you had to approach from -Z, the port should be placed in the back of the
craft.
ROT
Indicates where is the "this
side up" of the docking port.
You must align ports with both sides up pointing at the same direction to have
an effective dock.
You may notice that as you approach to dock there is a double line in each one
of the docking gates that indicates what side is "up".
Example:
ROT=(0,1,0)
In this case, the "this
side up" vector is pointing to +Y, it tells you where the green arrow in
the diagram is pointing.
Notice that DIR and ROT will always be perpendicular to each other.
ROT vector must not be aligned with DIR vector.
EXHAUST
SECTIONS
These sections contain information
about the location and orientation of the engine exhaust flames of your craft.
This information will be used to draw the exhaust smoke and flames of your vessel.
Notice that it is just for graphical purposes, not for calculation purposes.
To obtain the coordinates
of the exhaust port of a mesh you have created, you may use Anim8or.
Anim8or is a freeware that
can be found at www.anim8or.com.
It allows to import and export from and to 3DS files.
First, you must rotate your craft (Edit > Rotate) so it looks like this when using LEFT view (View > Left).
As you may notice, ship nose is up, and the top of the ship is to the right.
Then you must give your
ship the proper size.
To do that, you may use Edit > Scale.
You may want to set grid to 1 meter using Options > Grid and then set a fixed spacing to 1 meter, so you can have an idea of dimensions during the resizing process.
Then you should locate your ship using Edit > Locate.
Once ship is properly oriented,
sized and placed, press the buttons highlighted in RED
in the following diagram and double click on a point that is as close as possible
to the location of your exhaust.
The axes used by Anim8or are different than the axes used by Orbiter.
Orbiter X = Anim8or X
Orbiter Y = -Anim8or Z
Orbiter Z = Anim8or Y
So in the example shown above, Anim8or coordinates are (-2.9111, 29.104, 0.400) and Orbiter coordinates should be (-2.9111, -0.400, 29.104)
Orbiter Axes go as follows.
Exhaust sections use the following parameters:
Example:
We have this craft.
This is the area in detail.
We want to configure the forward attitude thruster, using Orbiter coordinates system..
Since it is an attitude thruster, and it's the first one we define (thruster number 0), we have
[EX_ATT_0]
The coordinates of such thruster are 10.8 meters to the front, 9.2 meters to the left from the origin.
OFF=(-9.228,0,10.838)
Since the attitude thruster is pointing forward (+Z axis), we have
DIR=(0,0,1)
The width of the flame will be 20 cm.
WIDTH=0.2
The flame will be 60 cm long.
LENGTH=0.6
This thruster would make the ship to spin around the Y axis, with no drag in Y axis in atmospheric flight.
ROT_AXIS=Y
ROT_CW=0
This thruster will have a flame aligned with Z axis and there might be drag in the Z axis.
LIN_AXIS=Z
LIN_CW=1
Notice that HOVER, RETRO and MAIN thrusters don´t use the ROT_AXIS, ROT_CW, LIN_AXIS and LIN_CW parameters.
We have several types
of sections for each thruster.
EX_MAIN for main engines, EX_RETRO for retro rockets, EX_HOVER for hover engines,
and EX_ATT for attitude thrusters.
Notice that such sections will configure the placement where exhaust
flame textures will be displayed.
But it won´t reflect the actual placement of the thrusters, because for
calculation purposes the ship is considered as a point with a mass in space
and engines are just forces acting on that point.
EX_MAIN SECTIONS
It will configure main thruster
texture placement.
You may have up to 16 thrusters (EX_MAIN_0 to EX_MAIN_15)
Example:
[EX_MAIN_0]
OFF=(-1,0,-7.7)
DIR=(0,0,-1)
LENGTH=12
WIDTH=1[EX_MAIN_1]
OFF=(1,0,-7.7)
DIR=(0,0,-1)
LENGTH=12
WIDTH=1
EX_RETRO SECTIONS
It will configure retro
rocket texture placement.
You may have up to 16 thrusters
(EX_RETRO_0 to EX_RETRO_15)
Example:
[EX_RETRO_0]
OFF=(-3,-0.236,5.6)
DIR=(0,0.042,1)
LENGTH=3
WIDTH=0.4[EX_RETRO_1]
OFF=(3,-0.236,5.6)
DIR=(0,0.042,1)
LENGTH=3
WIDTH=0.4
EX_HOVER SECTIONS
It will configure hover
thruster texture placement.
You may have up to 16 thrusters (EX_HOVER_0 to EX_HOVER_15)
Example:
[EX_HOVER_0]
OFF=(0,-1.6,3)
DIR=(0,-1,0)
LENGTH=6
WIDTH=0.5[EX_HOVER_1]
OFF=(-3,-1.3,-4.55)
DIR=(0,-1,0)
LENGTH=6
WIDTH=0.5[EX_HOVER_2]
OFF=(3,-1.3,-4.55)
DIR=(0,-1,0)
LENGTH=6
WIDTH=0.5
EX_ATT SECTIONS
It will configure attitude
thruster texture placement.
You may have up to 16 thrusters (EX_ATT_0 to EX_ATT_15)
Example:
[EX_ATT_0]
OFF=(-0.8,-0.25,9.6)
DIR=(0,1,0)
LENGTH=0.6
WIDTH=0.078
ROT_AXIS=X
ROT_CW=1
LIN_AXIS=Y
LIN_CW=1[EX_ATT_1]
OFF=(0.8,-0.25,9.6)
DIR=(0,1,0)
LENGTH=0.6
WIDTH=0.078
ROT_AXIS=X
ROT_CW=1
LIN_AXIS=Y
LIN_CW=1[EX_ATT_2]
OFF=(-0.75,-0.7,9.65)
DIR=(0,-1,0)
LENGTH=0.6
WIDTH=0.078
ROT_AXIS=X
ROT_CW=0
LIN_AXIS=Y
LIN_CW=0