mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-09 21:21:19 -06:00
Make it possible to scale planets (#631)
This commit is contained in:
@@ -48,6 +48,10 @@ local Pluto = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_PLUTO",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -12,6 +12,12 @@ local mapServiceConfigsPath = asset.localResource("map_service_configs")
|
||||
local Earth = {
|
||||
Identifier = "Earth",
|
||||
Parent = transforms.EarthIAU.Identifier,
|
||||
Transform = {
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableGlobe",
|
||||
Radii = earthEllipsoid,
|
||||
|
||||
@@ -56,8 +56,6 @@ local EarthIAU = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
EarthBarycenter,
|
||||
EarthInertial,
|
||||
|
||||
@@ -20,6 +20,10 @@ local Jupiter = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_JUPITER",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -21,6 +21,4 @@ local JupiterBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter })
|
||||
|
||||
@@ -184,6 +184,10 @@ local Mars = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_MARS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -2,8 +2,6 @@ local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
asset.require("spice/base")
|
||||
|
||||
|
||||
|
||||
local MarsBarycenter = {
|
||||
Identifier = "MarsBarycenter",
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
@@ -21,6 +19,4 @@ local MarsBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { MarsBarycenter })
|
||||
|
||||
@@ -49,6 +49,10 @@ local Mercury = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_MERCURY",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -2,8 +2,6 @@ local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
asset.require("spice/base")
|
||||
|
||||
|
||||
|
||||
local MercuryBarycenter = {
|
||||
Identifier = "MercuryBarycenter",
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
@@ -21,6 +19,4 @@ local MercuryBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryBarycenter })
|
||||
|
||||
@@ -3,8 +3,6 @@ local transforms = asset.require('./transforms')
|
||||
asset.require("spice/base")
|
||||
asset.request('./trail')
|
||||
|
||||
|
||||
|
||||
local textures = asset.syncedResource({
|
||||
Name = "Neptune textures",
|
||||
Type = "HttpSynchronization",
|
||||
@@ -20,6 +18,10 @@ local Neptune = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_NEPTUNE",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
@@ -42,5 +44,4 @@ local Neptune = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { Neptune })
|
||||
|
||||
@@ -2,8 +2,6 @@ local assetHelper = asset.require('util/asset_helper')
|
||||
local sun_transforms_asset = asset.require('scene/solarsystem/sun/transforms')
|
||||
asset.require("spice/base")
|
||||
|
||||
|
||||
|
||||
local NeptuneBarycenter = {
|
||||
Identifier = "NeptuneBarycenter",
|
||||
Parent = sun_transforms_asset.SolarSystemBarycenter.Identifier,
|
||||
@@ -21,6 +19,4 @@ local NeptuneBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneBarycenter })
|
||||
|
||||
@@ -20,6 +20,10 @@ local Saturn = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_SATURN",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -2,8 +2,6 @@ local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
asset.require("spice/base")
|
||||
|
||||
|
||||
|
||||
local SaturnBarycenter = {
|
||||
Identifier = "SaturnBarycenter",
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
@@ -21,6 +19,4 @@ local SaturnBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnBarycenter })
|
||||
|
||||
@@ -21,6 +21,4 @@ local UranusBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter })
|
||||
|
||||
@@ -20,6 +20,10 @@ local Uranus = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_URANUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -2,8 +2,6 @@ local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
asset.require("spice/base")
|
||||
|
||||
|
||||
|
||||
local VenusBarycenter = {
|
||||
Identifier = "VenusBarycenter",
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
@@ -20,6 +18,4 @@ local VenusBarycenter = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { VenusBarycenter })
|
||||
|
||||
@@ -25,6 +25,10 @@ local Venus = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "VENUS",
|
||||
Observer = "VENUS BARYCENTER"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1.0
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
|
||||
@@ -191,8 +191,14 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData,
|
||||
_modelTransform * glm::dvec4(0.0, 0.0, 0.0, 1.0)
|
||||
);
|
||||
|
||||
double distance = glm::distance(tPlanetPosWorld, renderData.camera.eyePositionVec3());
|
||||
if (distance > DISTANCE_CULLING) {
|
||||
const double distance = glm::distance(tPlanetPosWorld, renderData.camera.eyePositionVec3());
|
||||
|
||||
// Radius is in KM
|
||||
const double scaledRadius = glm::length(
|
||||
glm::dmat3(_modelTransform) * glm::dvec3(1000.0 * _atmosphereRadius, 0.0, 0.0)
|
||||
);
|
||||
|
||||
if (distance > scaledRadius * DISTANCE_CULLING_RADII) {
|
||||
program.setUniform("cullAtmosphere", 1);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -113,7 +113,8 @@ private:
|
||||
bool isAtmosphereInFrustum(const glm::dmat4& MVMatrix, const glm::dvec3& position,
|
||||
double radius) const;
|
||||
|
||||
const double DISTANCE_CULLING = 1e10;
|
||||
// Number of planet radii to use as distance threshold for culling
|
||||
const double DISTANCE_CULLING_RADII = 5000;
|
||||
|
||||
std::unique_ptr<ghoul::opengl::ProgramObject> _transmittanceProgramObject;
|
||||
std::unique_ptr<ghoul::opengl::ProgramObject> _irradianceProgramObject;
|
||||
|
||||
Reference in New Issue
Block a user