From 319546b24373b3622ce982b75817e4edf692583a Mon Sep 17 00:00:00 2001 From: Jonathan Fransson Date: Fri, 17 May 2019 16:01:40 -0600 Subject: [PATCH] 1st version volume render finished, with multiple data sets --- apps/OpenSpace/ext/sgct | 2 +- .../debris/volume/debris_volume.asset | 2 +- .../debris/volume/debris_volume1.asset | 38 ++++++++++++++++++ .../debris/volume/debris_volume2.asset | 38 ++++++++++++++++++ .../debris/volume/debris_volume3.asset | 38 ++++++++++++++++++ .../debris/volume/debris_volume4.asset | 38 ++++++++++++++++++ .../volume/generated/singleDebris.dictionary | 2 +- .../volume/generated/singleDebris.rawvolume | Bin 131072 -> 16384 bytes .../volume/generated1/singleDebris.dictionary | 1 + .../volume/generated1/singleDebris.rawvolume | Bin 0 -> 16384 bytes .../volume/generated2/singleDebris.dictionary | 1 + .../volume/generated2/singleDebris.rawvolume | Bin 0 -> 16384 bytes .../volume/generated3/singleDebris.dictionary | 1 + .../volume/generated3/singleDebris.rawvolume | Bin 0 -> 16384 bytes .../volume/generated4/singleDebris.dictionary | 1 + .../volume/generated4/singleDebris.rawvolume | Bin 0 -> 16384 bytes .../generate_single_debris_volume.task | 6 ++- .../generate_single_debris_volume1.task | 12 ++++++ .../generate_single_debris_volume2.task | 12 ++++++ .../generate_single_debris_volume3.task | 12 ++++++ .../generate_single_debris_volume4.task | 12 ++++++ ext/ghoul | 2 +- .../space/tasks/generatedebrisvolumetask.cpp | 24 +++++------ 23 files changed, 224 insertions(+), 18 deletions(-) create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume1.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume2.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume3.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume4.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.dictionary create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.rawvolume create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated2/singleDebris.dictionary create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated2/singleDebris.rawvolume create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.dictionary create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.rawvolume create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated4/singleDebris.dictionary create mode 100644 data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated4/singleDebris.rawvolume create mode 100644 data/tasks/volume/debristasks/generate_single_debris_volume1.task create mode 100644 data/tasks/volume/debristasks/generate_single_debris_volume2.task create mode 100644 data/tasks/volume/debristasks/generate_single_debris_volume3.task create mode 100644 data/tasks/volume/debristasks/generate_single_debris_volume4.task diff --git a/apps/OpenSpace/ext/sgct b/apps/OpenSpace/ext/sgct index 8d672fd0a7..2c774af032 160000 --- a/apps/OpenSpace/ext/sgct +++ b/apps/OpenSpace/ext/sgct @@ -1 +1 @@ -Subproject commit 8d672fd0a7c7ef0e6c48e1d43bacbddce1f0a10d +Subproject commit 2c774af03285e57d0bdaf9f7ca60c71bb0c144bf diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume.asset index 509a68cc1a..5e140320a8 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume.asset @@ -7,7 +7,7 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require("scene/solarsystem/planets/earth/transforms") -local earthRadius = 6371000 +local earthRadius = 2 * 10946320; local volume = { Identifier = "DebrisVolume", diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume1.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume1.asset new file mode 100644 index 0000000000..52b892f4e3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume1.asset @@ -0,0 +1,38 @@ +-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_VOLUME enabled + +-- Before using this asset, +-- the volume data itself needs to be generated, +-- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task' + +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require("scene/solarsystem/planets/earth/transforms") + +local earthRadius = 2 * 9762650; + +local volume = { + Identifier = "DebrisVolume1", + Parent = transforms.EarthInertial.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + SourceDirectory = asset.localResource("generated1"), + TransferFunction = asset.localResource("transferfunction.txt"), + StepSize = 0.01, + MinValue = 0, + MaxValue = 1, + GridType = "Cartesian", + SecondsBefore = 50*365*24*60*60, + SecondsAfter = 50*365*24*60*60 + }, + GUI = { + Path = "/Volumes" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = earthRadius -- do not multiply this. That will not show real representation. + } + } +} + +local objects = { volume } +assetHelper.registerSceneGraphNodes(asset, objects) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume2.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume2.asset new file mode 100644 index 0000000000..e18126b16d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume2.asset @@ -0,0 +1,38 @@ +-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_VOLUME enabled + +-- Before using this asset, +-- the volume data itself needs to be generated, +-- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task' + +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require("scene/solarsystem/planets/earth/transforms") + +local earthRadius = 2 * 8540390; + +local volume = { + Identifier = "DebrisVolume2", + Parent = transforms.EarthInertial.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + SourceDirectory = asset.localResource("generated2"), + TransferFunction = asset.localResource("transferfunction.txt"), + StepSize = 0.01, + MinValue = 0, + MaxValue = 1, + GridType = "Cartesian", + SecondsBefore = 50*365*24*60*60, + SecondsAfter = 50*365*24*60*60 + }, + GUI = { + Path = "/Volumes" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = earthRadius -- do not multiply this. That will not show real representation. + } + } +} + +local objects = { volume } +assetHelper.registerSceneGraphNodes(asset, objects) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume3.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume3.asset new file mode 100644 index 0000000000..665ecb1ad6 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume3.asset @@ -0,0 +1,38 @@ +-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_VOLUME enabled + +-- Before using this asset, +-- the volume data itself needs to be generated, +-- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task' + +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require("scene/solarsystem/planets/earth/transforms") + +local earthRadius = 2 * 7847140; + +local volume = { + Identifier = "DebrisVolume3", + Parent = transforms.EarthInertial.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + SourceDirectory = asset.localResource("generated3"), + TransferFunction = asset.localResource("transferfunction.txt"), + StepSize = 0.01, + MinValue = 0, + MaxValue = 1, + GridType = "Cartesian", + SecondsBefore = 50*365*24*60*60, + SecondsAfter = 50*365*24*60*60 + }, + GUI = { + Path = "/Volumes" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = earthRadius -- do not multiply this. That will not show real representation. + } + } +} + +local objects = { volume } +assetHelper.registerSceneGraphNodes(asset, objects) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume4.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume4.asset new file mode 100644 index 0000000000..ae6fe02433 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/debris_volume4.asset @@ -0,0 +1,38 @@ +-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_VOLUME enabled + +-- Before using this asset, +-- the volume data itself needs to be generated, +-- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task' + +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require("scene/solarsystem/planets/earth/transforms") + +local earthRadius = 2 * 8035460; + +local volume = { + Identifier = "DebrisVolume4", + Parent = transforms.EarthInertial.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + SourceDirectory = asset.localResource("generated4"), + TransferFunction = asset.localResource("transferfunction.txt"), + StepSize = 0.01, + MinValue = 0, + MaxValue = 1, + GridType = "Cartesian", + SecondsBefore = 50*365*24*60*60, + SecondsAfter = 50*365*24*60*60 + }, + GUI = { + Path = "/Volumes" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = earthRadius -- do not multiply this. That will not show real representation. + } + } +} + +local objects = { volume } +assetHelper.registerSceneGraphNodes(asset, objects) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.dictionary b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.dictionary index bd78345bf6..2d4e260eb3 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.dictionary +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.dictionary @@ -1 +1 @@ -return {Dimensions={3.200000E1,3.200000E1,3.200000E1},GridType="Cartesian",LowerDomainBound={-0.500000E0,-0.500000E0,-0.500000E0},MaxValue=3.000000E0,MinValue=0,Time="2018-05-04T00:00:00.000",UpperDomainBound={0.500000E0,0.500000E0,0.500000E0}} \ No newline at end of file +return {Dimensions={1.600000E1,1.600000E1,1.600000E1},GridType="Cartesian",LowerDomainBound={-0.500000E0,-0.500000E0,-0.500000E0},MaxValue=1.000000E0,MinValue=0,Time="2018-05-04T00:00:00.000",UpperDomainBound={0.500000E0,0.500000E0,0.500000E0}} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.rawvolume b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.rawvolume index 87978a6890192e86ff28c76257fa02c93e57b828..75046d1c90ead0f09643f89d46780f30d190c412 100644 GIT binary patch delta 65 zcmZo@;Am)I-0+NN^ShlqjFac3IZS@Ha|MudgcZoK05T*vfP@DVkXXP7B=)cYi93vw N-|alJIq%dlQ2=AXBlZ9Q delta 417 zcmZo@U~FjM*zBNnKy-6})&>ya&CBV)z~BJH4fc}__?kAqlks5MD6oVF$dF}Zbl5yW z{T|~+fiK*P-^nmSB~5rHzmsVM$~kHs6NHLoa)bGG0$@JSU=uztYoY*LWDhS??F~+* z279Q%jX*mlGX8_<0=r2=7|AlYtyegq+9jBn92_<>%5ekvHH-+OR)E|La{Lq~C?kOb z%mDcn;u;{!0nW03xrZ0zPe-kF5dK5~PDY^d%OIvr6qo=ttbl9sJDHNn^F(+i-{SiN z6m($(3e-Sl|8jxNU;_D81r|^fKmj!Yh#P>~IM^EOL7}|)f`}Z)Mu7+HK=Br!Y7Zum K`#^EwCIA4Y?3Qx? diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.dictionary b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.dictionary new file mode 100644 index 0000000000..f823fac9b9 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.dictionary @@ -0,0 +1 @@ +return {Dimensions={1.600000E1,1.600000E1,1.600000E1},GridType="Cartesian",LowerDomainBound={-0.500000E0,-0.500000E0,-0.500000E0},MaxValue=3.500000E1,MinValue=0,Time="2018-05-04T00:00:00.000",UpperDomainBound={0.500000E0,0.500000E0,0.500000E0}} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.rawvolume b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated1/singleDebris.rawvolume new file mode 100644 index 0000000000000000000000000000000000000000..979fb119b94094eecaa78bcb8c0351d4920b0340 GIT binary patch literal 16384 zcmeHLyOkU{3}gT@E`$j|83XRMQ4*gf~~j2x55WJa8RahZDdYysI8I`e7|FCcx@7a6Z!4 zfd~S!F896>I3?Rpsp}7Y7 zT40_g;7>3M%+b>)@8aA~@*f;unQxc!?faPg*0&=^>KYx5*0+QF?i!&hj<)jQOAUX3 zPx(g7hPi0W2LoAy^>R$(_#WKLyC>KGjg$M&=V%`pr~53o-AH_|=58bU--)fE!Myr= zLM>XozvUgJP6gGj=B!t*hEcw1ilL0UMtiJls3iF95KFg;V-73s+_x(J$!jCWPG7^n zb^KtT_r0!>dm9_ti>s{}DYOYR_2z?71 z=DoaSJY%dp3H(u5vHJwys?*YR>oL9+kC+?9CQlR3NN zqod3C8k^KJb3dER9!=ceWaPh0@PonU-5TwmSbVf3I`eRy@VFWvxTY`{E#E=Xb98*; z6XLhh_#K#q%o2XB_|ZKrt1f#Ou>R(r6hy|g^7V9jeof_^(_ZeP%qM@tv*zCKCMAEz zI%{mkTpg3&lM&1MM`7jKC-_!=@>_dX)@J3WKSHAiX~fV+4X=*W;D!R4~;(&Yq3-hdgR*G@chc7k*v`bkF2_|7Z3s zf=8=yYC89yegUtU3;tG2lbZ{2?g({hJv=n{X@IZ)19Otdz#ZZL3A}akj_r*aHu$=0 zM2w|RZlDc9@4FzF#+vgOuRU1#dz|I}?>oSK$Tp)ca(n}hXT)=KPkBzVg#y&%d<)DG z8!-zY&hcC$?^{58*4Z%5a~L&2j`9Ry ztOd_YrPmZFoHts<{2IQF4sic_=iTc>l`yI2v{rC!}NPOT?43oUyt_^7)1c@bup^4`Qu`?^CQr~KmxSCsGeBM%uVXP zS}UikiJMOXTLO3v#x~wxcSQSFB0rvu0Pf4#3@6pwIaAh1A4$edTb2OnN1`nYbfmEu z8Qjw{dfyfxS1k&fo0Q=Na*MDQgfZ_}(focST|4W=U Y-#)dpetJki0@D$od-rsPE%-+QZwE*s+5i9m literal 0 HcmV?d00001 diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.dictionary b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.dictionary new file mode 100644 index 0000000000..259c91c78f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.dictionary @@ -0,0 +1 @@ +return {Dimensions={1.600000E1,1.600000E1,1.600000E1},GridType="Cartesian",LowerDomainBound={-0.500000E0,-0.500000E0,-0.500000E0},MaxValue=8.000000E0,MinValue=0,Time="2018-05-04T00:00:00.000",UpperDomainBound={0.500000E0,0.500000E0,0.500000E0}} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.rawvolume b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated3/singleDebris.rawvolume new file mode 100644 index 0000000000000000000000000000000000000000..096b4f235f06f0881da0912935934c14fb1de894 GIT binary patch literal 16384 zcmeHO0dfN&2)v(_{wz<))B2Q(4GAWwAY9H|bta?Y?gD#WJDs-Mw#NJpT)qZsgl)T~ z&jmjN{GY^wLGBhfMrsdCzoeD}*#YZ4Bs|Xe9;rvdB8T(06w8C=+g6%57td**^+000 z#whpeNk2kgGbk@HESlLbAZD7=+QMhd%q{k7vmEF+FnrfKy7?G1p#3m=_J-Om{nijy$!6k5<$XdKw)C8AIR5e z^f0}1jo%R({N2epL6dndOo$J2wWPXZ?|g6a4Ofd7i8>og9g>unFKPbAnD<#eKL@K`fd~EFY&|P{M+)5*SUB@=?{cXI zX+&syHIP4p2KvKm;cLme6+52;_j?HT-uQjtYqioXC$GVxbLZU>=6%xCYSg}$KkGjC zbJxfE@xw-s%b^rZh0ej=M@si(5`ko_y&ohtNXQM;!Ts$(wxTbMUW@=&vg)SfZym~g8 z5BJux;XP(fPvdL%vbt%IUo! z=NcW~t<2?~*(D#z70$svX3)7W@rkdIS26ahxD*_RvEI3ngN9dwO3HJ6WWaeEt-Py8 zPS(pgFr-esCb%N0&!By&k9N(`{)kuVRJ`tQMxiRV`X01ag^C9=XYjCI&g%|b4?Frs zdtB)UjOfTd>MPt=?=tU3^*td!vgqA-Iy3iU`^<2?-Z<;5?TTaPiD*^#sk9~XNJk#MTb(l`>4KY z2MMjB=hUyHW^^sq#*sOMlXi+Q3?_3#$5cZhxL5h1Mg!2586drK4%^elt&w}UUaja+ z@qCBt(2*q|8%w^ouW+m$G^UL5H^uvg#U^tMwJ5=x57F@eLv4@rSvi^)((`J6T4|y8 zbPtE1-^I%O6=&fL)!&K*e$}7PXJhBcCDp>V@`V`fL&rSO#96UN^mVUQ|7xF#FK3ax zGgQTMaHzL1t-O`#X;^G4w!LiJ;_3WOD$>46cU{fVewXAIm*&@h7Z&5au zC1=;W#ZSeox%910HR*%Xo$wr$*|;j6gOz)=D*7H~^*p?nvpprA!3sz3;GZ-|Big>p z&G3_^kx6xOdMjM>UI#oSQCyiv_EPvk4$eMxe&Wl)G6oI(ZcMp^qh2kI=$tLwsBak% z4pq@qfIhbi{M5|h&&=;(k!#(pJ)p-2rj-|dNT0F}@7hA#Ou!sz7UBff1sk2|g7o*L z(&K2jyY$`==iH;xc>;%}Oy1|{U5t9|#G+U&qsMpC>yvsk_&pvdQkUJz^t20>4xN${ zr&j}p>)rEn8MArwrCgBDGH0CtS9r3^9I_)HwG~cO`;GgW8^G@Y@A1Za)a1SI%n?3v z@FRv^Sc2cP|G_)_p)n?Lc^5-}@Kaur&MtETxAW45*yeP-@)?W&zqIiVj`)ZphB -#include #include #include @@ -395,9 +394,9 @@ std::vector generatePositions(int numberOfPositions) { std::vector positions; float radius = 700000; // meter - int degreeStep = static_cast(360 / numberOfPositions); + float degreeStep = 360 / numberOfPositions; - for(int i=0 ; i<= 360 ; i += degreeStep){ + for(int i=0 ; i<= 360 ; i == degreeStep){ glm::dvec3 singlePosition = glm::dvec3(radius* sin(i), radius*cos(i), 0.0); positions.push_back(singlePosition); } @@ -433,9 +432,10 @@ int getIndexFromPosition(glm::dvec3 position, glm::uvec3 dim, float maxApogee){ ,position.y + maxApogee ,position.z + maxApogee); - glm::uvec3 coordinateIndex = glm::uvec3(static_cast(newPosition.x * dim.x / (2*(maxApogee + epsilon))), - static_cast(newPosition.y * dim.y / (2 * (maxApogee + epsilon))), - static_cast(newPosition.z * dim.z / (2 * (maxApogee + epsilon)))); + glm::uvec3 coordinateIndex = glm::uvec3(static_cast(newPosition.x * dim.x / (2 * (maxApogee + epsilon))), + static_cast(newPosition.y * dim.y / (2 * (maxApogee + epsilon))), + static_cast(newPosition.z * dim.z / (2 * (maxApogee + epsilon)))); + return coordinateIndex.z * (dim.x * dim.y) + coordinateIndex.y * dim.x + coordinateIndex.x; } @@ -499,6 +499,7 @@ void GenerateDebrisVolumeTask::perform(const Task::ProgressCallback& progressCal const int size = _dimensions.x *_dimensions.y *_dimensions.z; int *densityArrayp = new int[size](); float maxApogee = getMaxApogee(_TLEDataVector); + LINFO(fmt::format("maxApp: {} ", maxApogee)); //densityArrayp = mapDensityToVoxels(densityArrayp, generatedPositions, _dimensions, maxApogee); densityArrayp = mapDensityToVoxels(densityArrayp, startPositionBuffer, _dimensions, maxApogee); @@ -516,6 +517,11 @@ void GenerateDebrisVolumeTask::perform(const Task::ProgressCallback& progressCal // glm::vec3(cell) / glm::vec3(_dimensions) * domainSize; float value = getDensityAt(cell, densityArrayp, rawVolume); // (coord) //LINFO(fmt::format("EachVoxel: {} ", value)); + // if((cell.x + cell.y + cell.z) % 8 == 0) + // value = 1; + // else + // value = 0; + rawVolume.set(cell, value); minVal = std::min(minVal, value); @@ -584,12 +590,6 @@ documentation::Documentation GenerateDebrisVolumeTask::documentation() { Optional::No, "Input path to the TLE-data", }, - { - KeyStartTime, - new StringAnnotationVerifier("A valid timestamp"), - Optional::No, - "First timestep of volume", - }, { KeyRawVolumeOutput, new StringAnnotationVerifier("A valid filepath"),