Make it possible to scale planets (#631)

This commit is contained in:
Emil Axelsson
2018-06-25 09:30:20 +02:00
committed by GitHub
parent 0f5fd2c4bc
commit de71cfda78
19 changed files with 48 additions and 32 deletions

View File

@@ -48,6 +48,10 @@ local Pluto = {
Type = "SpiceRotation",
SourceFrame = "IAU_PLUTO",
DestinationFrame = "GALACTIC"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -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,

View File

@@ -56,8 +56,6 @@ local EarthIAU = {
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
EarthBarycenter,
EarthInertial,

View File

@@ -20,6 +20,10 @@ local Jupiter = {
Type = "SpiceRotation",
SourceFrame = "IAU_JUPITER",
DestinationFrame = "GALACTIC"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -21,6 +21,4 @@ local JupiterBarycenter = {
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter })

View File

@@ -184,6 +184,10 @@ local Mars = {
Type = "SpiceRotation",
SourceFrame = "IAU_MARS",
DestinationFrame = "GALACTIC"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -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 })

View File

@@ -49,6 +49,10 @@ local Mercury = {
Type = "SpiceRotation",
SourceFrame = "IAU_MERCURY",
DestinationFrame = "GALACTIC"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -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 })

View File

@@ -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 })

View File

@@ -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 })

View File

@@ -20,6 +20,10 @@ local Saturn = {
Type = "SpiceRotation",
SourceFrame = "IAU_SATURN",
DestinationFrame = "GALACTIC"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -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 })

View File

@@ -21,6 +21,4 @@ local UranusBarycenter = {
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter })

View File

@@ -20,6 +20,10 @@ local Uranus = {
Type = "SpiceRotation",
SourceFrame = "IAU_URANUS",
DestinationFrame = "GALACTIC"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -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 })

View File

@@ -25,6 +25,10 @@ local Venus = {
Type = "SpiceTranslation",
Target = "VENUS",
Observer = "VENUS BARYCENTER"
},
Scale = {
Type = "StaticScale",
Scale = 1.0
}
},
Renderable = {

View File

@@ -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 {

View File

@@ -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;