I didn't realized you had built it near Talkeetna It's a bit sad because the next update I will publish will erase your work if you install it (no way to "merge" lower level cache files for the moment)
From what I see here, it will not be hard to reproduce, did you use precise data for the lengh/width of the roads?
Not I was just developing a method to build the launch pad using the OT road rather than importing a launch pad model which was having zero success. I am already working on SLC-37 in Cape Canaveral and it sounds like you'll be the first to see it!
Good luck ! Maybe a stupid suggestion, but is it possible to add an invisible collision mesh around the rocket wich will help to set it stable when placed? Since rockets are not really supposed to interact with terrain, it could be a good solution for you (if the launch terrain is flat).
Not a stupid question at all, I've been working on that problem for three days with no luck, but I just found the solution to spawning the rocket or its side, and it will also allow stage separation finally!!! I would really appreciate some help on this, it could open up a ton of possibilities in Outerra, including armaments such as bombs/missile on aircraft. You could also write a script to calculate a part is destroyed given a collision and spawn/replace the mesh with a bunch of fragments/broken pieces of the original mesh, which are separately simulated. (Things could brake/explode!
)
Since JSB uses Y as the vertical axis and OT uses Z, the rocket is spawned laying down horizontally. I was searching the forum for a way to specify the position/orientation/translational velocity/rotational velocity of a vehicle/aircraft when it is spawned. I found
this thread, 'External Dynamic Data',
this thread, 'Real time GPS input' and
this thread, 'Integrating with another sim' in which Cameni provides a means to do just that, such as the code below:
var world,igc,vehicle;
function ll2xyz(lon,lat) {
const R = 6378135;
const rad = Math.PI/180.0;
var fc = Math.cos(lon*rad);
var fs = Math.sin(lon*rad);
var ac = Math.cos(lat*rad);
return [R*fc*ac, R*fs*ac, R*Math.sin(lat*rad)];
}
if(!world) world = $eview.$query_interface("ot::js::world.get");
if(!igc) igc = $eview.$query_interface("ot::js::igc.get");
if(world && !vehicle) {
var c = map.getBounds().getCenter(); //this is from google maps object
var pos = ll2xyz(c.lng(), c.lat());
vehicle = world.create_instance("outerra/ddg/ddg", pos, {x:0, y:0, z:0, w:1}, false);
}
My plan is to spawn the rocket stages from separate aircraft files, first the command module, and using a modified version of the script above, set each stage to the position/orientation/translation velocity/rotational velocity of the command module. The command module (parent) will calculate all of the forces for all of the attached stages (children) and contain all of the functionality, and the pointmasses for each attached stage will be set to zero while attached to the parent (essentially non-functional). When the stage is jettisoned, an SRB for example, its mass will be set to the empty case weight and it will be initialized in JSBSim imparted with the initial position/orientation/translation velocity/rotational velocity.
If it is not possible to attach on aircraft to another from launch, than I can spawn the SRB_stage and hide the coorisponding SRB_mesh and the SRB_stage will be initialized in JSBSim as soon as it is spawned, again being imparted with the current position/orientation/translation velocity/rotational velocity at the moment of separation. I am not sure which method will work, maybe both, in which case I can think of many different purposes suitable for each.
The only piece of the puzzle that is still missing is how to get one aircraft (SRB_stage) to read the JSBSim position/orientation/translation velocity/rotational velocity of another aircraft, the command module. I know it can be done, just not sure how yet. Any thoughts?
Regards,
Uriah