mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-05-02 16:59:37 -05:00
boresight works.
This commit is contained in:
+1
-1
Submodule openspace-data updated: b561756350...b8179a6d15
@@ -1,10 +1,10 @@
|
||||
--openspace.setPropertyValue('Earth.renderable.colorTexture', '${OPENSPACE_DATA}/modules/mars/textures/mars.png')
|
||||
openspace.time.setTime("2007-02-26T17:41:00")
|
||||
openspace.time.setTime("2007-02-26T17:30:00")
|
||||
--openspace.time.setTime("2006-08-22T20:00:00")
|
||||
|
||||
--openspace.time.setDeltaTime(200000.0)
|
||||
--openspace.time.setDeltaTime(5000.00)
|
||||
openspace.time.setDeltaTime(1000)
|
||||
--openspace.time.setDeltaTime(30000.0)
|
||||
--openspace.time.setDeltaTime(864000)
|
||||
openspace.time.setDeltaTime(100.0)
|
||||
-- print(openspace.time.currentTimeUTC())
|
||||
|
||||
|
||||
@@ -162,15 +162,15 @@ void WavefrontGeometry::loadObj(const char *filename){
|
||||
if (sscanf(line, "f %i/%i/%i %i/%i/%i %i/%i/%i", &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8, &i9)){
|
||||
(_iarray)[m] = i1 - 1;
|
||||
(tempTextureIndicesArray)[m] = i2 - 1;
|
||||
(tempNormalIndicesArray)[m] = i3 - 1;
|
||||
(tempNormalIndicesArray)[m] = i3 - 1;
|
||||
m++;
|
||||
(_iarray)[m] = i4 - 1;
|
||||
(tempTextureIndicesArray)[m] = i5 - 1;
|
||||
(tempNormalIndicesArray)[m] = i6 - 1;
|
||||
(tempNormalIndicesArray)[m] = i6 - 1;
|
||||
m++;
|
||||
(_iarray)[m] = i7 - 1;
|
||||
(tempTextureIndicesArray)[m] = i8 - 1;
|
||||
(tempNormalIndicesArray)[m] = i9 - 1;
|
||||
(tempNormalIndicesArray)[m] = i9 - 1;
|
||||
m++;
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ void WavefrontGeometry::loadObj(const char *filename){
|
||||
int q = 0;
|
||||
while (q < 3){
|
||||
_varray[m].location[q] = tempVertexArray[vertexIndex + q];
|
||||
_varray[m].normal[q] = tempVertexNormalArray[normalIndex + q];
|
||||
_varray[m].normal[q] = tempVertexNormalArray[normalIndex + q];
|
||||
q++;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,70 +67,21 @@ namespace openspace{
|
||||
}
|
||||
}
|
||||
void RenderableFov::fullYearSweep(){
|
||||
double lightTime = 0.0;
|
||||
|
||||
double et = _startTrail;
|
||||
double planetYear = 31540000;
|
||||
int segments = 2;
|
||||
|
||||
_increment = planetYear / 4;
|
||||
|
||||
_isize = (segments);
|
||||
_vsize = (segments);
|
||||
int points = 8;
|
||||
_stride = 8;
|
||||
_isize = points;
|
||||
_iarray = new int[_isize];
|
||||
|
||||
|
||||
SpiceManager::ref().getTargetState("NEW HORIZONS", "SUN", "GALACTIC", "LT+S", et, _pscpos, _pscvel, lightTime);
|
||||
_pscpos[3] += 3;
|
||||
_varray.push_back(_pscpos[0]);
|
||||
_varray.push_back(_pscpos[1]);
|
||||
_varray.push_back(_pscpos[2]);
|
||||
_varray.push_back(_pscpos[3]);
|
||||
|
||||
_varray.push_back(1.f );
|
||||
_varray.push_back(0.f );
|
||||
_varray.push_back(0.f );
|
||||
_varray.push_back(1.f );
|
||||
|
||||
_iarray[0] = 0;
|
||||
|
||||
glm::mat4 tmat = glm::mat4(1);
|
||||
glm::mat4 rot_x = glm::rotate(tmat, 90.f, glm::vec3(1, 0, 0));
|
||||
openspace::SpiceManager::ref().getPositionTransformMatrix("NH_SPACECRAFT", "GALACTIC", et, _stateMatrix);
|
||||
|
||||
glm::mat4 tmp = glm::mat4(1);
|
||||
for (int i = 0; i < 3; i++){
|
||||
for (int j = 0; j < 3; j++){
|
||||
tmp[i][j] = _stateMatrix[i][j];
|
||||
for (int i = 0; i < points; i++){
|
||||
for (int j = 0; j < 4; j++){
|
||||
_varray.push_back(0); // pos
|
||||
}
|
||||
for (int j = 0; j < 4; j++){
|
||||
_varray.push_back(0); // col
|
||||
}
|
||||
_iarray[i] = i;
|
||||
}
|
||||
tmat *= tmp;
|
||||
//tmat *= rot_x;
|
||||
|
||||
std::string shape, name;
|
||||
shape.resize(32);
|
||||
name.resize(32);
|
||||
std::vector<glm::dvec3> bounds;
|
||||
glm::dvec3 boresight;
|
||||
|
||||
bool found = openspace::SpiceManager::ref().getFieldOfView("NH_LORRI", shape, name, boresight, bounds);
|
||||
glm::vec4 bsight_t(boresight[0], boresight[1], boresight[2], 1);
|
||||
|
||||
psc bor = PowerScaledCoordinate::CreatePowerScaledCoordinate(boresight[0], boresight[1], boresight[2]);
|
||||
bsight_t = tmat*bor.vec4();
|
||||
|
||||
_varray.push_back(bsight_t[0]);
|
||||
_varray.push_back(bsight_t[1]);
|
||||
_varray.push_back(bsight_t[2]);
|
||||
_varray.push_back(2);
|
||||
|
||||
_varray.push_back(1.f);
|
||||
_varray.push_back(0.f);
|
||||
_varray.push_back(0.f);
|
||||
_varray.push_back(1.f);
|
||||
|
||||
_iarray[1] = 1;
|
||||
|
||||
|
||||
_stride = 8;
|
||||
_vsize = _varray.size();
|
||||
@@ -169,8 +120,7 @@ void RenderableFov::sendToGPU(){
|
||||
bool RenderableFov::initialize(){
|
||||
bool completeSuccess = true;
|
||||
if (_programObject == nullptr)
|
||||
completeSuccess
|
||||
&= OsEng.ref().configurationManager().getValue("EphemerisProgram", _programObject);
|
||||
completeSuccess &= OsEng.ref().configurationManager().getValue("EphemerisProgram", _programObject);
|
||||
|
||||
_startTrail;
|
||||
SpiceManager::ref().getETfromDate("2007 feb 26 20:00:00", _startTrail);
|
||||
@@ -197,19 +147,69 @@ void RenderableFov::render(const RenderData& data){
|
||||
_programObject->activate();
|
||||
|
||||
// fetch data
|
||||
psc currentPosition = data.position;
|
||||
psc campos = data.camera.position();
|
||||
glm::mat4 camrot = data.camera.viewRotationMatrix();
|
||||
|
||||
glm::mat4 tmat = glm::mat4(1);
|
||||
|
||||
glm::mat4 transform(1);
|
||||
|
||||
glm::mat4 tmp = glm::mat4(1);
|
||||
glm::mat4 rot = glm::rotate(transform, 90.f, glm::vec3(0, 1, 0));
|
||||
|
||||
for (int i = 0; i < 3; i++){
|
||||
for (int j = 0; j < 3; j++){
|
||||
tmp[i][j] = _stateMatrix[i][j];
|
||||
}
|
||||
}
|
||||
transform = tmp*rot;
|
||||
|
||||
// setup the data to the shader
|
||||
_programObject->setUniform("ViewProjection", data.camera.viewProjectionMatrix());
|
||||
_programObject->setUniform("ModelTransform", transform);
|
||||
setPscUniforms(_programObject, &data.camera, data.position);
|
||||
|
||||
//updateData();
|
||||
|
||||
//boresight vector
|
||||
std::string shape, name;
|
||||
shape.resize(32);
|
||||
name.resize(32);
|
||||
std::vector<glm::dvec3> bounds;
|
||||
glm::dvec3 boresight;
|
||||
|
||||
bool found = openspace::SpiceManager::ref().getFieldOfView("NH_LORRI", shape, name, boresight, bounds);
|
||||
|
||||
float size = 4 * sizeof(float);
|
||||
float *begin = &_varray[0];
|
||||
|
||||
glm::vec4 origin(0);
|
||||
glm::vec4 col_start(1.00, 0.89, 0.00, 1);
|
||||
glm::vec4 col_end(1.00, 0.29, 0.00, 1);
|
||||
glm::vec4 bsight_t(boresight[0], boresight[1], boresight[2], data.position[3]-3);
|
||||
|
||||
float sc = 2.2;
|
||||
glm::vec4 corner1(bounds[0][0], bounds[0][1], bounds[0][2], data.position[3]-sc);
|
||||
memcpy(begin, glm::value_ptr(origin), size);
|
||||
memcpy(begin + 4, glm::value_ptr(col_start), size);
|
||||
memcpy(begin + 8, glm::value_ptr(corner1), size);
|
||||
memcpy(begin + 12, glm::value_ptr(col_end), size);
|
||||
|
||||
glm::vec4 corner2(bounds[1][0], bounds[1][1], bounds[1][2], data.position[3]-sc);
|
||||
memcpy(begin + 16, glm::value_ptr(origin), size);
|
||||
memcpy(begin + 20, glm::value_ptr(col_start), size);
|
||||
memcpy(begin + 24, glm::value_ptr(corner2), size);
|
||||
memcpy(begin + 28, glm::value_ptr(col_end), size);
|
||||
|
||||
glm::vec4 corner3(bounds[2][0], bounds[2][1], bounds[2][2], data.position[3]-sc);
|
||||
memcpy(begin + 32, glm::value_ptr(origin), size);
|
||||
memcpy(begin + 36, glm::value_ptr(col_start), size);
|
||||
memcpy(begin + 40, glm::value_ptr(corner3), size);
|
||||
memcpy(begin + 44, glm::value_ptr(col_end), size);
|
||||
|
||||
glm::vec4 corner4(bounds[3][0], bounds[3][1], bounds[3][2], data.position[3]-sc);
|
||||
memcpy(begin + 48, glm::value_ptr(origin), size);
|
||||
memcpy(begin + 52, glm::value_ptr(col_start), size);
|
||||
memcpy(begin + 56, glm::value_ptr(corner4), size);
|
||||
memcpy(begin + 60, glm::value_ptr(col_end), size);
|
||||
|
||||
updateData();
|
||||
|
||||
glBindVertexArray(_vaoID);
|
||||
glDrawArrays(_mode, 0, _vtotal);
|
||||
@@ -223,7 +223,7 @@ void RenderableFov::update(const UpdateData& data){
|
||||
_time = data.time;
|
||||
_delta = data.delta;
|
||||
|
||||
//openspace::SpiceManager::ref().getPositionTransformMatrix("NH_SPACECRAFT", "GALACTIC", data.time, _stateMatrix);
|
||||
openspace::SpiceManager::ref().getPositionTransformMatrix("NH_SPACECRAFT", "GALACTIC", data.time, _stateMatrix);
|
||||
}
|
||||
|
||||
void RenderableFov::loadTexture()
|
||||
|
||||
@@ -172,7 +172,7 @@ bool RenderableTrail::initialize(){
|
||||
|
||||
_startTrail;
|
||||
// SpiceManager::ref().getETfromDate("2006 Aug 22 17:00:00", _startTrail);
|
||||
SpiceManager::ref().getETfromDate("2007 feb 26 17:41:00", _startTrail);
|
||||
SpiceManager::ref().getETfromDate("2007 feb 26 17:30:00", _startTrail);
|
||||
_dtEt = _startTrail;
|
||||
|
||||
fullYearSweep();
|
||||
|
||||
Reference in New Issue
Block a user