mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-19 11:29:08 -06:00
Merge branch 'feature/iSWA' of github.com:OpenSpace/OpenSpace-Development into feature/iSWA
This commit is contained in:
@@ -48,7 +48,6 @@ DataCygnet::DataCygnet(const ghoul::Dictionary& dictionary)
|
||||
DataCygnet::~DataCygnet(){}
|
||||
|
||||
bool DataCygnet::updateTexture(){
|
||||
|
||||
std::vector<float*> data = textureData();
|
||||
|
||||
if(data.empty())
|
||||
@@ -202,7 +201,7 @@ void DataCygnet::readTransferFunctions(std::string tfPath){
|
||||
}
|
||||
|
||||
void DataCygnet::fillOptions(std::string& source){
|
||||
std::vector<std::string> options = _dataProcessor->readMetadata(source);
|
||||
std::vector<std::string> options = _dataProcessor->readMetadata(source, _textureDimensions);
|
||||
|
||||
for(int i=0; i<options.size(); i++){
|
||||
_dataOptions.addOption({i, options[i]});
|
||||
|
||||
@@ -191,8 +191,8 @@ std::vector<float*> DataPlane::textureData(){
|
||||
return std::vector<float*>();
|
||||
}
|
||||
}
|
||||
_textureDimensions = _dataProcessor->dimensions();
|
||||
return _dataProcessor->processData(_dataBuffer, _dataOptions);
|
||||
// _textureDimensions = _dataProcessor->dimensions();
|
||||
return _dataProcessor->processData(_dataBuffer, _dataOptions, _textureDimensions);
|
||||
}
|
||||
|
||||
void DataPlane::subscribeToGroup(){
|
||||
|
||||
@@ -159,8 +159,8 @@ std::vector<float*> DataSphere::textureData(){
|
||||
return std::vector<float*>();
|
||||
}
|
||||
}
|
||||
_textureDimensions = _dataProcessor->dimensions();
|
||||
return _dataProcessor->processData(_dataBuffer, _dataOptions);
|
||||
// _textureDimensions = _dataProcessor->dimensions();
|
||||
return _dataProcessor->processData(_dataBuffer, _dataOptions, _textureDimensions);
|
||||
}
|
||||
|
||||
void DataSphere::setUniforms(){
|
||||
|
||||
@@ -52,6 +52,7 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary)
|
||||
// dict.getValue can only set strings in _data directly
|
||||
float renderableId;
|
||||
float updateTime;
|
||||
float xOffset;
|
||||
glm::vec3 min, max;
|
||||
glm::vec4 spatialScale;
|
||||
|
||||
@@ -62,6 +63,7 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary)
|
||||
dictionary.getValue("GridMax", max);
|
||||
dictionary.getValue("Frame",_data->frame);
|
||||
dictionary.getValue("CoordinateType", _data->coordinateType);
|
||||
dictionary.getValue("XOffset", xOffset);
|
||||
|
||||
_data->id = (int) renderableId;
|
||||
_data->updateTime = (int) updateTime;
|
||||
@@ -79,8 +81,9 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary)
|
||||
(max.z - min.z)
|
||||
);
|
||||
|
||||
|
||||
offset = glm::vec3(
|
||||
(min.x + (std::abs(min.x)+std::abs(max.x))/2.0f),
|
||||
(min.x + (std::abs(min.x)+std::abs(max.x))/2.0f)+xOffset,
|
||||
(min.y + (std::abs(min.y)+std::abs(max.y))/2.0f),
|
||||
(min.z + (std::abs(min.z)+std::abs(max.z))/2.0f)
|
||||
);
|
||||
|
||||
@@ -249,7 +249,7 @@ void KameleonPlane::renderGeometry() const {
|
||||
}
|
||||
|
||||
std::vector<float*> KameleonPlane::textureData() {
|
||||
return std::dynamic_pointer_cast<DataProcessorKameleon>(_dataProcessor)->processData(_kwPath, _dataOptions, _slice, _dimensions);
|
||||
return std::dynamic_pointer_cast<DataProcessorKameleon>(_dataProcessor)->processData(_kwPath, _dataOptions, _dimensions, _slice);
|
||||
};
|
||||
|
||||
bool KameleonPlane::updateTextureResource(){
|
||||
|
||||
@@ -40,9 +40,9 @@ public:
|
||||
DataProcessor();
|
||||
~DataProcessor();
|
||||
|
||||
virtual std::vector<std::string> readMetadata(std::string data) = 0;
|
||||
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) = 0;
|
||||
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) = 0;
|
||||
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions) = 0;
|
||||
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) = 0;
|
||||
|
||||
void useLog(bool useLog);
|
||||
void useHistogram(bool useHistogram);
|
||||
|
||||
@@ -39,7 +39,7 @@ DataProcessorJson::DataProcessorJson()
|
||||
|
||||
DataProcessorJson::~DataProcessorJson(){}
|
||||
|
||||
std::vector<std::string> DataProcessorJson::readMetadata(std::string data){
|
||||
std::vector<std::string> DataProcessorJson::readMetadata(std::string data, glm::size3_t& dimensions){
|
||||
std::vector<std::string> options = std::vector<std::string>();
|
||||
if(!data.empty()){
|
||||
json j = json::parse(data);
|
||||
@@ -51,7 +51,7 @@ std::vector<std::string> DataProcessorJson::readMetadata(std::string data){
|
||||
json row = it.value();
|
||||
json col = row.at(0);
|
||||
|
||||
_dimensions = glm::size3_t(col.size(), row.size(), 1);
|
||||
dimensions = glm::size3_t(col.size(), row.size(), 1);
|
||||
}
|
||||
|
||||
if(_coordinateVariables.find(option) == _coordinateVariables.end()){
|
||||
@@ -99,7 +99,7 @@ void DataProcessorJson::addDataValues(std::string data, properties::SelectionPro
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<float*> DataProcessorJson::processData(std::string data, properties::SelectionProperty& dataOptions){
|
||||
std::vector<float*> DataProcessorJson::processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
|
||||
if(!data.empty()){
|
||||
json j = json::parse(data);
|
||||
json variables = j["variables"];
|
||||
@@ -115,7 +115,7 @@ std::vector<float*> DataProcessorJson::processData(std::string data, properties:
|
||||
|
||||
std::vector<float*> dataOptions(numOptions, nullptr);
|
||||
for(int option : selectedOptions){
|
||||
dataOptions[option] = new float[_dimensions.x*_dimensions.y]{0.0f};
|
||||
dataOptions[option] = new float[dimensions.x*dimensions.y]{0.0f};
|
||||
|
||||
json row = variables[options[option].description];
|
||||
rowsize = row.size();
|
||||
|
||||
@@ -33,9 +33,9 @@ public:
|
||||
DataProcessorJson();
|
||||
~DataProcessorJson();
|
||||
|
||||
virtual std::vector<std::string> readMetadata(std::string data) override;
|
||||
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) override;
|
||||
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
|
||||
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions) override;
|
||||
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
|
||||
};
|
||||
|
||||
}// namespace
|
||||
|
||||
@@ -42,7 +42,7 @@ DataProcessorKameleon::DataProcessorKameleon()
|
||||
DataProcessorKameleon::~DataProcessorKameleon(){}
|
||||
|
||||
|
||||
std::vector<std::string> DataProcessorKameleon::readMetadata(std::string path){
|
||||
std::vector<std::string> DataProcessorKameleon::readMetadata(std::string path, glm::size3_t& dimensions){
|
||||
|
||||
if(!path.empty()){
|
||||
if(path != _kwPath || !_kw){
|
||||
@@ -98,13 +98,13 @@ void DataProcessorKameleon::addDataValues(std::string path, properties::Selectio
|
||||
add(optionValues, sum);
|
||||
}
|
||||
}
|
||||
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, float slice, glm::size3_t& dimensions){
|
||||
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions, float slice){
|
||||
_slice = slice;
|
||||
_dimensions = dimensions;
|
||||
return processData(path, dataOptions);
|
||||
// _dimensions = dimensions;
|
||||
return processData(path, dataOptions, dimensions);
|
||||
}
|
||||
|
||||
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions){
|
||||
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
|
||||
int numOptions = dataOptions.options().size();
|
||||
|
||||
if(!path.empty()){
|
||||
@@ -117,13 +117,13 @@ std::vector<float*> DataProcessorKameleon::processData(std::string path, propert
|
||||
auto options = dataOptions.options();
|
||||
int numOptions = options.size();
|
||||
|
||||
int numValues = _dimensions.x*_dimensions.y*_dimensions.z;
|
||||
int numValues = dimensions.x*dimensions.y*dimensions.z;
|
||||
|
||||
float value;
|
||||
|
||||
std::vector<float*> dataOptions(numOptions, nullptr);
|
||||
for(int option : selectedOptions){
|
||||
dataOptions[option] = _kw->getUniformSliceValues(options[option].description, _dimensions, _slice);
|
||||
dataOptions[option] = _kw->getUniformSliceValues(options[option].description, dimensions, _slice);
|
||||
|
||||
for(int i=0; i<numValues; i++){
|
||||
value = dataOptions[option][i];
|
||||
|
||||
@@ -34,10 +34,10 @@ public:
|
||||
DataProcessorKameleon();
|
||||
~DataProcessorKameleon();
|
||||
|
||||
virtual std::vector<std::string> readMetadata(std::string path) override;
|
||||
virtual std::vector<std::string> readMetadata(std::string path, glm::size3_t& dimensions) override;
|
||||
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
|
||||
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions) override;
|
||||
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, float slice, glm::size3_t& dimensions);
|
||||
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
|
||||
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions, float slice);
|
||||
void dimensions(glm::size3_t dimensions){_dimensions = dimensions;}
|
||||
|
||||
private:
|
||||
|
||||
@@ -37,7 +37,7 @@ DataProcessorText::DataProcessorText()
|
||||
|
||||
DataProcessorText::~DataProcessorText(){}
|
||||
|
||||
std::vector<std::string> DataProcessorText::readMetadata(std::string data){
|
||||
std::vector<std::string> DataProcessorText::readMetadata(std::string data, glm::size3_t& dimensions){
|
||||
//The intresting part of the file looks like this:
|
||||
//# Output data: field with 61x61=3721 elements
|
||||
//# x y z N V_x B_x
|
||||
@@ -60,7 +60,7 @@ std::vector<std::string> DataProcessorText::readMetadata(std::string data){
|
||||
getline(ss, token, '=');
|
||||
int y = std::stoi(token);
|
||||
|
||||
_dimensions = glm::size3_t(x, y, 1);
|
||||
dimensions = glm::size3_t(x, y, 1);
|
||||
|
||||
getline(memorystream, line);
|
||||
line = line.substr(1); //because of the # char
|
||||
@@ -74,6 +74,7 @@ std::vector<std::string> DataProcessorText::readMetadata(std::string data){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -118,7 +119,7 @@ void DataProcessorText::addDataValues(std::string data, properties::SelectionPro
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<float*> DataProcessorText::processData(std::string data, properties::SelectionProperty& dataOptions){
|
||||
std::vector<float*> DataProcessorText::processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
|
||||
if(!data.empty()){
|
||||
std::string line;
|
||||
std::stringstream memorystream(data);
|
||||
@@ -132,7 +133,7 @@ std::vector<float*> DataProcessorText::processData(std::string data, properties:
|
||||
|
||||
std::vector<float*> dataOptions(numOptions, nullptr);
|
||||
for(int option : selectedOptions){
|
||||
dataOptions[option] = new float[_dimensions.x*_dimensions.y]{0.0f};
|
||||
dataOptions[option] = new float[dimensions.x*dimensions.y]{0.0f};
|
||||
}
|
||||
|
||||
int numValues = 0;
|
||||
|
||||
@@ -33,9 +33,9 @@ public:
|
||||
DataProcessorText();
|
||||
~DataProcessorText();
|
||||
|
||||
virtual std::vector<std::string> readMetadata(std::string data) override;
|
||||
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) override;
|
||||
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
|
||||
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions) override;
|
||||
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
|
||||
|
||||
private:
|
||||
// void initialize(int numOptions);
|
||||
|
||||
@@ -157,7 +157,6 @@ void IswaManager::addIswaCygnet(int id, std::string type, std::string group){
|
||||
|
||||
void IswaManager::addKameleonCdf(std::string groupName, int pos){
|
||||
// auto info = _cdfInformation[group][pos];
|
||||
// std::cout << group << " " << pos << std::endl;
|
||||
auto group = iswaGroup(groupName);
|
||||
if(group){
|
||||
std::dynamic_pointer_cast<IswaKameleonGroup>(group)->changeCdf(_cdfInformation[groupName][pos].path);
|
||||
@@ -305,6 +304,13 @@ std::string IswaManager::jsonPlaneToLuaTable(std::shared_ptr<MetadataFuture> dat
|
||||
spatialScale.w = 6;
|
||||
}
|
||||
|
||||
float xOffset = 0.0f;
|
||||
if(data->id == -7)
|
||||
xOffset = -10.0f;
|
||||
if(data->id == -8)
|
||||
xOffset = -20.0f;
|
||||
if(data->id == -9)
|
||||
xOffset = -30.0f;
|
||||
|
||||
std::string table = "{"
|
||||
"Name = '" + data->name +"' , "
|
||||
@@ -319,6 +325,7 @@ std::string IswaManager::jsonPlaneToLuaTable(std::shared_ptr<MetadataFuture> dat
|
||||
"UpdateTime = " + std::to_string(updateTime) + ", "
|
||||
"CoordinateType = '" + coordinateType + "', "
|
||||
"Group = '"+ data->group + "',"
|
||||
"XOffset = "+ std::to_string(xOffset) + ","
|
||||
"}"
|
||||
"}";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user