mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-03-07 04:49:00 -06:00
Merge pull request #1297 from OpenSpace/feature/orion_nebula
Feature/orion nebula
This commit is contained in:
51
data/assets/scene/milkyway/objects/orionnebula/cluster.asset
Normal file
51
data/assets/scene/milkyway/objects/orionnebula/cluster.asset
Normal file
@@ -0,0 +1,51 @@
|
||||
--orionnebula/cluster.asset
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local transforms = asset.require("./transforms")
|
||||
|
||||
local sync = asset.syncedResource({
|
||||
Name = "Orion Nebula Star Cluster",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "orion_nebula_star_cluster",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local OrionClusterStars = {
|
||||
Identifier = "OrionClusterStars",
|
||||
Parent = transforms.NebulaPosition.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableStars",
|
||||
File = sync .. "/oricluster.speck",
|
||||
Texture = sync .. "/halo.png",
|
||||
Texture = sync .. "/colorbv.cmap",
|
||||
MagnitudeExponent = 5.02,
|
||||
SizeComposition = "Distance Modulus",
|
||||
RenderMethod = "Texture Based"
|
||||
},
|
||||
GUI = {
|
||||
Name = "Orion Nebula Star Cluster",
|
||||
Path = "/Milky Way/Stars"
|
||||
}
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { OrionClusterStars })
|
||||
|
||||
asset.meta = {
|
||||
Name = "Orion Nebula Star Cluster",
|
||||
Version = "1.0",
|
||||
Description = [[ In order to have an accurate depiction of the Orion nebula, we need
|
||||
to include the star cluster that was birthed from it. We turned to a study of the
|
||||
cluster's stellar population by Lynne Hillenbrand, who was working at the University of
|
||||
California, Berkeley at the time. The catalog from her paper contains more than 1500
|
||||
stars, about half the stars in the actual cluster. The cluster is very crowded, with a
|
||||
peak density of 10000 stars per cubic parsec over a wide range of masses from a tenth the
|
||||
sun's mass up to 50 times its mass. We were presented with one problem: there are no
|
||||
distances. For the stellar distances, we needed to deduce them by statistical methods.
|
||||
Knowing the size of the cluster and approximating the shape to be roughly spherical, we
|
||||
placed each star along a line of sight through this imaginary sphere centered on the
|
||||
cluster. In this sense, these data are observed data and the view from Earth is accurate.
|
||||
But the distance of each star has been derived from this educated-guess approach for the
|
||||
cluster distribution. ]],
|
||||
Author = "AMNH Digital Universe",
|
||||
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",
|
||||
License = "custom"
|
||||
}
|
||||
157
data/assets/scene/milkyway/objects/orionnebula/nebula.asset
Normal file
157
data/assets/scene/milkyway/objects/orionnebula/nebula.asset
Normal file
@@ -0,0 +1,157 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local transforms = asset.require('./transforms')
|
||||
|
||||
local center = sunTransforms.SolarSystemBarycenter.Identifier;
|
||||
local LIGHTS = assetHelper.getDefaultLightSources(center);
|
||||
|
||||
local sync = asset.syncedResource({
|
||||
Name = "Orion Nebula Model",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "orion_nebula_model",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local NebulaHolder = {
|
||||
Identifier = "OrionNebulaHolder",
|
||||
Parent = transforms.NebulaPosition.Identifier,
|
||||
Transform = {
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 35999998699110400.000000
|
||||
},
|
||||
Rotation = {
|
||||
Type = "FixedRotation",
|
||||
Attached = "OrionNebulaHolder",
|
||||
XAxis = {1.000000,1.000000,0.510000},
|
||||
XAxisOrthogonal = true,
|
||||
YAxis = "Sun",
|
||||
YAxisInverted = false
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Orion Nebula",
|
||||
Path = "/Milky Way/Objects",
|
||||
}
|
||||
}
|
||||
|
||||
local OrionNebulaModel = {
|
||||
Identifier = "OrionNebulaModel",
|
||||
Parent = NebulaHolder.Identifier,
|
||||
Transform = {
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 0.67500000
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Geometry = {{
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = sync .. "/orion_nebula.obj",
|
||||
ColorTexture = sync .. "/heic0601a_masked.png"
|
||||
}},
|
||||
Opacity = 1.0,
|
||||
DisableFaceCulling = false,
|
||||
SpecularIntensity = 0.0,
|
||||
AmbientIntensity = 0.45,
|
||||
DiffuseIntensity = 0.0,
|
||||
RotationVector = { 0.000000, 22.300000, 0.000000 },
|
||||
LightSources = LIGHTS;
|
||||
},
|
||||
GUI = {
|
||||
Name = "Orion Nebula Model",
|
||||
Path = "/Milky Way/Objects",
|
||||
Hidden = true
|
||||
}
|
||||
}
|
||||
|
||||
local OrionNebulaShocksModel = {
|
||||
Identifier = "OrionNebulaShocksModel",
|
||||
Parent = NebulaHolder.Identifier,
|
||||
Transform = {
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 0.67500000
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Geometry = {{
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = sync .. "/orishocks.obj",
|
||||
ColorTexture = "${DATA}/colors/pink.png"
|
||||
}},
|
||||
Opacity = 1.0,
|
||||
DisableFaceCulling = false,
|
||||
SpecularIntensity = 0.0,
|
||||
AmbientIntensity = 0.19,
|
||||
DiffuseIntensity = 0.4,
|
||||
RotationVector = { 0.000000, 22.300000, 0.000000 },
|
||||
LightSources = LIGHTS;
|
||||
},
|
||||
GUI = {
|
||||
Name = "Orion Nebula Shocks",
|
||||
Path = "/Milky Way/Objects",
|
||||
Hidden = false
|
||||
}
|
||||
}
|
||||
|
||||
local OrionNebulaProplydsModel = {
|
||||
Identifier = "OrionNebulaProplydsModel",
|
||||
Parent = NebulaHolder.Identifier,
|
||||
Transform = {
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 0.67500000
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Geometry = {{
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = sync .. "/proplyds.obj",
|
||||
ColorTexture = "${DATA}/colors/pink.png"
|
||||
}},
|
||||
Opacity = 1.0,
|
||||
DisableFaceCulling = false,
|
||||
SpecularIntensity = 0.0,
|
||||
AmbientIntensity = 1.0,
|
||||
DiffuseIntensity = 1.0,
|
||||
RotationVector = { 0.000000, 22.300000, 0.000000 },
|
||||
LightSources = LIGHTS;
|
||||
},
|
||||
GUI = {
|
||||
Name = "Orion Nebula Proplyds",
|
||||
Path = "/Milky Way/Objects",
|
||||
Hidden = false
|
||||
}
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, {
|
||||
NebulaHolder,
|
||||
OrionNebulaModel,
|
||||
OrionNebulaShocksModel,
|
||||
OrionNebulaProplydsModel
|
||||
})
|
||||
|
||||
asset.meta = {
|
||||
Name = "Orion Nebula Model",
|
||||
Version = "1.0",
|
||||
Description = [[ In the Digital Universe model of the Orion Nebula, we depict the
|
||||
ionization front effectively as a terrain, with a flat Hubble image of the nebula mapped
|
||||
on the undulating surface. In reality, the ionization front has a slight thickness to
|
||||
it - about a third of a light year - but is quite thin compared to the overall size of
|
||||
the nebula, which stretches about ten light years from side to side.<br><br>Close into
|
||||
the center, we see small teardrop-shaped structures with their narrow ends pointing away
|
||||
from the bright star: these are protoplanetary disks, or proplyds, of dense gas and dust
|
||||
surrounding young stars. The larger formations that one sees farther away from the center
|
||||
of the nebula take on a cup-like shape, with the narrow end pointing away from the
|
||||
nebulas center. These enormous structures are bow shocks that delineate the region where
|
||||
highspeed winds from the central star slow from supersonic to subsonic speeds. You can
|
||||
think of an HII region as a sort of tremendous explosion, taking place over millennia,
|
||||
and the bow shocks are part of the outward rush of material. ]],
|
||||
Author = "AMNH Digital Universe",
|
||||
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",
|
||||
License = "custom"
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
asset.require('./cluster')
|
||||
asset.require('./nebula')
|
||||
@@ -0,0 +1,26 @@
|
||||
local assetHelper = asset.require('util/asset_helper')
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
|
||||
local PARSEC_CONSTANT = 3.0856776E16;
|
||||
|
||||
local NebulaPosition = {
|
||||
Identifier = "NebulaPosition",
|
||||
Parent = sunTransforms.SolarSystemBarycenter.Identifier,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = {
|
||||
-329.915 * PARSEC_CONSTANT,
|
||||
-183.153 * PARSEC_CONSTANT,
|
||||
-132.706 * PARSEC_CONSTANT
|
||||
}
|
||||
},
|
||||
},
|
||||
GUI = {
|
||||
Name = "Orion Nebula Position",
|
||||
Path = "/Milky Way/Objects",
|
||||
Hidden = true
|
||||
}
|
||||
}
|
||||
|
||||
assetHelper.registerSceneGraphNodesAndExport(asset, { NebulaPosition })
|
||||
BIN
data/colors/pink.png
Normal file
BIN
data/colors/pink.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 519 B |
@@ -4,7 +4,7 @@
|
||||
<div class="col-lg-12">
|
||||
<p>
|
||||
<h3>Asset - {{name}}</h3>
|
||||
<p>{{description}}</p>
|
||||
<p>{{{description}}}</p>
|
||||
<p>Version - {{version}}</p>
|
||||
<p>Author - {{author}}</p>
|
||||
<p>Associated URL - <a href="{{url}}">{{url}}</a></p>
|
||||
|
||||
@@ -127,6 +127,15 @@ window.onload = function () {
|
||||
}
|
||||
}
|
||||
|
||||
if (documentation[i].identifier == "sceneLicense") {
|
||||
for (var j = 0; j < documentation[i].data.length; j++) {
|
||||
var escaped = documentation[i].data[j].description.replace(
|
||||
/\\n/g, ""
|
||||
);
|
||||
documentation[i].data[j].description = escaped;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
currentDocumentation = documentation[3];
|
||||
|
||||
Reference in New Issue
Block a user