mirror of
https://github.com/openglobus/openglobus.git
synced 2025-12-08 19:25:27 +00:00
233 lines
6.6 KiB
JavaScript
Executable File
233 lines
6.6 KiB
JavaScript
Executable File
import {
|
|
Globe,
|
|
control,
|
|
GlobusRgbTerrain,
|
|
Vector,
|
|
OpenStreetMap,
|
|
Entity,
|
|
Bing,
|
|
Object3d,
|
|
input
|
|
} from "../../lib/@openglobus/og.esm.js";
|
|
|
|
let cranesLayer = new Vector("crane", {
|
|
scaleByDistance: [1, 1, 1]
|
|
});
|
|
|
|
async function main() {
|
|
|
|
let sat = new Bing();
|
|
let osm = new OpenStreetMap();
|
|
|
|
// const dock = await Object3d.loadObj('./dock.obj');
|
|
//
|
|
// const crane = await Object3d.loadObj('./crane.obj');
|
|
|
|
const wind = await Object3d.loadObj('./ready/windTurbineBasic.obj');
|
|
const bf = await Object3d.loadObj('./ready/Butterfly.obj');
|
|
|
|
// let c1 = new Entity({
|
|
// lonlat: [33.2017379, 69.0821338, 19],
|
|
// });
|
|
|
|
// let c2 = new Entity({
|
|
// lonlat: [33.2037625, 69.0814592, 24],
|
|
// });
|
|
//
|
|
// let c3 = new Entity({
|
|
// lonlat: [33.2045480, 69.0818760, 20],
|
|
// });
|
|
//
|
|
// let c4 = new Entity({
|
|
// lonlat: [33.2024654, 69.0824443, 21],
|
|
// });
|
|
//
|
|
// let c5 = new Entity({
|
|
// lonlat: [33.2027773, 69.0817816, 21],
|
|
// });
|
|
//
|
|
// let c6 = new Entity({
|
|
// lonlat: [33.2035357, 69.0821616, 21],
|
|
// });
|
|
|
|
// for (let i = 0; i < crane.length; i++) {
|
|
//
|
|
// c1.appendChild(new Entity({
|
|
// geoObject: {
|
|
// //color: "white",
|
|
// scale: 5.0,
|
|
// instanced: true,
|
|
// tag: `crane-${i}`,
|
|
// object3d: crane[i],
|
|
// yaw: 87,
|
|
// pitch: 0
|
|
// }
|
|
// }));
|
|
//
|
|
// // c2.appendChild(new Entity({
|
|
// // geoObject: {
|
|
// // //color: "white",
|
|
// // scale: 1.0,
|
|
// // instanced: true,
|
|
// // tag: `crane-${i}`,
|
|
// // object3d: crane[i],
|
|
// // yaw: 24,
|
|
// // pitch: 0
|
|
// // }
|
|
// // }));
|
|
// //
|
|
// // c3.appendChild(new Entity({
|
|
// // geoObject: {
|
|
// // //color: "white",
|
|
// // scale: 4.0,
|
|
// // instanced: true,
|
|
// // tag: `crane-${i}`,
|
|
// // object3d: crane[i],
|
|
// // yaw: -95,
|
|
// // pitch: 0
|
|
// // }
|
|
// // }));
|
|
// //
|
|
// // c4.appendChild(new Entity({
|
|
// // geoObject: {
|
|
// // //color: "white",
|
|
// // scale: 1.0,
|
|
// // instanced: true,
|
|
// // tag: `crane-${i}`,
|
|
// // object3d: crane[i],
|
|
// // yaw: -160,
|
|
// // pitch: 0
|
|
// // }
|
|
// // }));
|
|
// //
|
|
// // c5.appendChild(new Entity({
|
|
// // geoObject: {
|
|
// // //color: "white",
|
|
// // scale: 1.0,
|
|
// // instanced: true,
|
|
// // tag: `crane-${i}`,
|
|
// // object3d: crane[i],
|
|
// // yaw: 42,
|
|
// // pitch: 0
|
|
// // }
|
|
// // }));
|
|
// //
|
|
// // c6.appendChild(new Entity({
|
|
// // geoObject: {
|
|
// // //color: "white",
|
|
// // scale: 1.0,
|
|
// // instanced: true,
|
|
// // tag: `crane-${i}`,
|
|
// // object3d: crane[i],
|
|
// // yaw: -229,
|
|
// // pitch: 0
|
|
// // }
|
|
// // }));
|
|
// }
|
|
|
|
//cranesLayer.add(c1);
|
|
// cranesLayer.add(c2);
|
|
// cranesLayer.add(c3);
|
|
// cranesLayer.add(c4);
|
|
// cranesLayer.add(c5);
|
|
// cranesLayer.add(c6);
|
|
|
|
const globus = new Globe({
|
|
frustums: [[0.01, 0.1 + 0.0075], [0.1, 1 + 0.075], [1, 100 + 0.075], [100, 1000 + 0.075], [1000, 1e6 + 10000], [1e6, 1e9]],
|
|
target: "earth",
|
|
name: "Earth",
|
|
terrain: new GlobusRgbTerrain(),
|
|
layers: [sat, osm, cranesLayer],
|
|
//atmosphereEnabled: true,
|
|
fontsSrc: "../../res/fonts",
|
|
sun: {
|
|
stopped: false
|
|
},
|
|
//viewExtent: [33.1758537, 69.0755299, 33.2251571, 69.08960050]
|
|
});
|
|
|
|
globus.planet.addControl(new control.DebugInfo());
|
|
globus.planet.addControl(new control.KeyboardNavigation());
|
|
globus.planet.addControl(new control.LayerSwitcher());
|
|
globus.planet.addControl(new control.TimelineControl());
|
|
globus.planet.addControl(new control.GeoObjectEditor());
|
|
globus.planet.addControl(new control.ToggleWireframe());
|
|
//globus.planet.addControl(new control.SimpleNavigation());
|
|
|
|
|
|
let cubeObj = Object3d.createCube(0.001, 0.001, 0.001);
|
|
|
|
let cubeLayer = new Vector("Cubes", {
|
|
scaleByDistance: [1, 1, 1]
|
|
});
|
|
|
|
cubeLayer.addTo(globus.planet);
|
|
|
|
globus.renderer.events.on("lclick", (e) => {
|
|
//if (e.pickingObject.geoObject) return;
|
|
|
|
let cart = globus.planet.getCartesianFromMouseTerrain();
|
|
if (cart) {
|
|
|
|
globus.renderer.setRelativeCenter(globus.planet.camera.eye);
|
|
|
|
let cube;
|
|
|
|
if (globus.renderer.events.isKeyPressed(input.KEY_SHIFT)) {
|
|
cube = new Entity({
|
|
cartesian: cart,
|
|
geoObject: {
|
|
color: "white",
|
|
scale: 0.1,
|
|
instanced: true,
|
|
tag: `btf`,
|
|
object3d: bf[0],
|
|
yaw: 0,
|
|
pitch: 0
|
|
}
|
|
});
|
|
} else if (globus.renderer.events.isKeyPressed(input.KEY_CTRL)) {
|
|
|
|
let wind0 = new Entity({
|
|
cartesian: cart,
|
|
geoObject: {
|
|
color: "white",
|
|
scale: 2,
|
|
instanced: true,
|
|
tag: `wind-0`,
|
|
object3d: wind[0],
|
|
yaw: 0,
|
|
pitch: 0
|
|
}
|
|
});
|
|
|
|
let wind1 = new Entity({
|
|
cartesian: cart,
|
|
geoObject: {
|
|
color: "white",
|
|
scale: 2,
|
|
instanced: true,
|
|
tag: `wind-1`,
|
|
object3d: wind[1],
|
|
yaw: 0,
|
|
pitch: 0
|
|
}
|
|
});
|
|
|
|
cube = new Entity({
|
|
cartesian: cart,
|
|
});
|
|
|
|
cube.appendChild(wind0);
|
|
cube.appendChild(wind1);
|
|
}
|
|
if (cube) {
|
|
cubeLayer.add(cube);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
main();
|
|
|