9 Commits

Author SHA1 Message Date
Endertom dfbe5684a5 Aggiornato readme 2026-06-24 14:58:04 +02:00
Endert0m de272f572b Update README.md 2026-06-24 13:06:17 +02:00
Endertom f4dd508152 Merge branch 'main' of https://github.com/Endert0m/FCG_VisualizzatoreCamminata 2026-06-23 18:58:23 +02:00
Endertom a1c8443b8e Aggiunta relazione 2026-06-23 18:58:15 +02:00
Endert0m 5af236ad44 Update README.md 2026-06-23 13:13:22 +02:00
Endertom 7fadd4a9ef Modifica versione in cmakelists 2026-06-23 13:11:25 +02:00
Endertom 5588ccee31 Aggiunta finestra di controllo visibilità 2026-06-23 12:52:19 +02:00
Endertom c48d0505fc Refactoring collezioni 2026-06-23 11:39:36 +02:00
Endertom 2dfd574814 Preparazione controllo visibilità collezioni 2026-06-23 11:31:19 +02:00
11 changed files with 106 additions and 76 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ target_compile_options(common INTERFACE
set(METHODS_PATH "./src/*/methods/*.cpp") set(METHODS_PATH "./src/*/methods/*.cpp")
set(VERSION "V10") set(VERSION "V11")
file(GLOB_RECURSE METHODS_SRC "${METHODS_PATH}") file(GLOB_RECURSE METHODS_SRC "${METHODS_PATH}")
add_executable(main${VERSION} ./src/Main.cpp ${METHODS_SRC} ) add_executable(main${VERSION} ./src/Main.cpp ${METHODS_SRC} )
+13 -4
View File
@@ -1,5 +1,7 @@
# FCG_VisualizzatoreCamminata # FCG_VisualizzatoreCamminata
- # **Nella branch All_Releases ci sono tutte le release con istruzioni per la compilazione e la relazione**
## Nella versione versione v0.1 è presente la base del progetto. ## Nella versione versione v0.1 è presente la base del progetto.
@@ -58,16 +60,23 @@ Per spostare l'intera scena si tiene premuto il tasto centrale del mouse.
- Modificata la funzione update di pezzi e collezioni per implementare controllo sul tempo - Modificata la funzione update di pezzi e collezioni per implementare controllo sul tempo
- Aggiunta finestra con slider per selezione moltiplicatore del tempo - Aggiunta finestra con slider per selezione moltiplicatore del tempo
## Nella versione v0.10 ## Nella versione v1.0
- Aggiunta controllo texture - Aggiunta controllo texture
- Aggiunta pavimento - Aggiunta pavimento
- Refactoring generale - Refactoring generale
- Definizione main finale (non più di test) - Definizione main finale (non più di test)
## Nella versione v1.1
- Aggiunta controllo visibilità collezioni su GUI
- Refactoring collezioni
# Per compilare: # Per compilare:
cmake --build mkdir build //se non esiste già
cd build
cmake ..
cmake --build . -j$(nproc)
# Per lanciare: # Per lanciare:
cd bin
./build/bin/mainV10 ./mainV11
+8 -4
View File
@@ -24,8 +24,8 @@ Pos=68,96
Size=740,472 Size=740,472
[Window][Set data position] [Window][Set data position]
Pos=0,732 Pos=0,670
Size=924,30 Size=800,30
[Window][Dear ImGui Demo/ResizableChild_478B81A3] [Window][Dear ImGui Demo/ResizableChild_478B81A3]
IsChild=1 IsChild=1
@@ -40,10 +40,14 @@ Pos=60,60
Size=353,1005 Size=353,1005
[Window][Set visualization plane] [Window][Set visualization plane]
Pos=524,0 Pos=400,0
Size=400,30 Size=400,30
[Window][Set time multiplier] [Window][Set time multiplier]
Pos=524,702 Pos=400,639
Size=400,30 Size=400,30
[Window][Set overlap]
Pos=500,31
Size=300,70
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
@@ -11,10 +11,27 @@ struct collection{
class CollectionInterface{ class CollectionInterface{
protected:
float transparency = 1.0;
bool isVisible = true;
public: public:
virtual collection create(ReferencePlane plane) = 0; virtual collection create(ReferencePlane plane) = 0;
virtual void update(sf::Clock cl, float multiplier) = 0; virtual void update(sf::Clock cl, float multiplier) = 0;
virtual bool setTransparency(float alpha) = 0; virtual bool setTransparency(float alpha) {
if (alpha < 0 || alpha > 1) return false;
transparency = alpha;
return true;
};
virtual bool getVisibility(){
return isVisible;
}
virtual float getTransparency() {
return transparency;
}
virtual void setVisibility(bool c) {
isVisible = c;
}
virtual ~CollectionInterface(){}; virtual ~CollectionInterface(){};
}; };
-1
View File
@@ -14,7 +14,6 @@ class Gamba : public CollectionInterface {
collection create(ReferencePlane plane) override; collection create(ReferencePlane plane) override;
PieceInterface* getJointPiece(); PieceInterface* getJointPiece();
void setDirection(Direction dir); void setDirection(Direction dir);
bool setTransparency(float alpha) override;
void update(sf::Clock cl, float multiplier)override {}; void update(sf::Clock cl, float multiplier)override {};
float getZ_Acc(); float getZ_Acc();
}; };
-2
View File
@@ -34,8 +34,6 @@ public:
Lower_Body(rb::Vector3 pos, std::vector<gamba_data> data); Lower_Body(rb::Vector3 pos, std::vector<gamba_data> data);
~Lower_Body(); ~Lower_Body();
void update(sf::Clock cl, float multiplier) override; void update(sf::Clock cl, float multiplier) override;
void setVisibility(bool c);
bool setTransparency(float alpha) override;
collection create(ReferencePlane plane) override; collection create(ReferencePlane plane) override;
}; };
+2 -16
View File
@@ -32,9 +32,11 @@ Gamba::Gamba(rb::Vector3 pos, unsigned int* dataPos, std::string cosciaData, std
collection Gamba::create(ReferencePlane plane){ collection Gamba::create(ReferencePlane plane){
collection coll; collection coll;
for(auto e : pezzi){ for(auto e : pezzi){
e->setTransparency(transparency);
coll.pieces.push_back(e); coll.pieces.push_back(e);
} }
for(auto e : sensori){ for(auto e : sensori){
e->setTransparency(transparency);
coll.pieces.push_back(e); coll.pieces.push_back(e);
} }
@@ -58,26 +60,10 @@ void Gamba::setDirection(Direction dir){
} }
} }
bool Gamba::setTransparency(float alpha){
for (auto i : pezzi){
if (!i->setTransparency(alpha)) return false;
}
for (auto i : sensori){
if (!i->setTransparency(alpha)) return false;
}
return true;
}
float Gamba::getZ_Acc(){ float Gamba::getZ_Acc(){
float totZ_Acc = 0; float totZ_Acc = 0;
/*
for (auto i : sensori){
totZ_Acc += i->getZ_Acc();
}*/
totZ_Acc = sensori[0]->getZ_Acc() + sensori[1]->getZ_Acc(); totZ_Acc = sensori[0]->getZ_Acc() + sensori[1]->getZ_Acc();
//printf("TotAccGamba %f\n", totZ_Acc);
return totZ_Acc; return totZ_Acc;
} }
+7 -16
View File
@@ -18,24 +18,25 @@ Lower_Body::Lower_Body(rb::Vector3 pos,std::vector<gamba_data> data){
collection Lower_Body::create(ReferencePlane plane){ collection Lower_Body::create(ReferencePlane plane){
collection coll; collection coll;
sx->setTransparency(1); sx->setTransparency(transparency);
dx->setTransparency(1); dx->setTransparency(transparency);
t->setTransparency(transparency);
if (isVisible){
coll.joints.push_back(jsx); coll.joints.push_back(jsx);
coll.joints.push_back(jdx); coll.joints.push_back(jdx);
switch (plane) switch (plane)
{ {
case ReferencePlane::XZN: case ReferencePlane::XZN:
dx->setTransparency(0.5); dx->setTransparency(0.5 * transparency);
dx->setDirection(Direction::L); dx->setDirection(Direction::L);
sx->setDirection(Direction::R); sx->setDirection(Direction::R);
coll = coll + dx->create(plane); coll = coll + dx->create(plane);
coll = coll + sx->create(plane); coll = coll + sx->create(plane);
break; break;
case ReferencePlane::XZ: case ReferencePlane::XZ:
sx->setTransparency(0.5); sx->setTransparency(0.5 * transparency);
dx->setDirection(Direction::R); dx->setDirection(Direction::R);
sx->setDirection(Direction::L); sx->setDirection(Direction::L);
coll = coll + sx->create(plane); coll = coll + sx->create(plane);
@@ -53,7 +54,7 @@ collection Lower_Body::create(ReferencePlane plane){
} }
coll.pieces.push_back(t); coll.pieces.push_back(t);
}
return coll; return coll;
} }
@@ -65,16 +66,6 @@ Lower_Body::~Lower_Body(){
delete jsx; delete jsx;
} }
void Lower_Body::setVisibility(bool c){
}
bool Lower_Body::setTransparency(float alpha){
if (!sx->setTransparency(alpha)) return false;
dx->setTransparency(alpha);
t->setTransparency(alpha);
return true;
}
void Lower_Body::update(sf::Clock cl, float multiplier){ void Lower_Body::update(sf::Clock cl, float multiplier){
float sxAcc = sx->getZ_Acc() ; float sxAcc = sx->getZ_Acc() ;
+28 -2
View File
@@ -5,6 +5,7 @@
#include "collections/headers/collection_interface.hpp" #include "collections/headers/collection_interface.hpp"
#include <imgui.h> #include <imgui.h>
#include <imgui-SFML.h> #include <imgui-SFML.h>
#include <format>
template <typename T1, typename T2> template <typename T1, typename T2>
double dist(sf::Vector2<T1> p1, sf::Vector2<T2> p2) double dist(sf::Vector2<T1> p1, sf::Vector2<T2> p2)
@@ -301,6 +302,8 @@ void doGUI(State &gs)
ImGuiWindowFlags_NoCollapse| ImGuiWindowFlags_NoCollapse|
ImGuiWindowFlags_NoTitleBar; ImGuiWindowFlags_NoTitleBar;
// Finestra gestione posizione dati
ImGui::Begin("Set data position", 0,sdp_flags); ImGui::Begin("Set data position", 0,sdp_flags);
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x * 0.3); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x * 0.3);
ImGui::SliderScalar("Start", ImGuiDataType_U32 ,gs.intervalMinLimit,&zero,gs.intervalMajLimit); ImGui::SliderScalar("Start", ImGuiDataType_U32 ,gs.intervalMinLimit,&zero,gs.intervalMajLimit);
@@ -345,9 +348,29 @@ void doGUI(State &gs)
*gs.tMul = TimeMul[Timeid]; *gs.tMul = TimeMul[Timeid];
ImGui::End(); ImGui::End();
//Finestra controllo sovrapposizione //Finestra controllo sovrapposizione (solo su collezioni)
ImGui::Begin("Set overlap", 0,sdp_flags);
int c = 0;
for (auto i : gs.collections){
std::stringstream s;
s <<"Collezione :" << c;
ImGui::Text(s.str().c_str());
float tmpTr = i->getTransparency();
if (ImGui::SliderFloat("Transparency ", &tmpTr,0.0,1.0)) {
gs.updateCollections();
i->setTransparency(tmpTr);
}
bool tmpVs = i->getVisibility();
if (ImGui::Checkbox("is visible", &tmpVs)) {
i->setVisibility(tmpVs);
gs.updateCollections();
}
c++;
ImGui::Separator();
}
ImGui::End();
sf::Vector2u wsize = gs.window.getSize(); sf::Vector2u wsize = gs.window.getSize();
@@ -355,8 +378,11 @@ void doGUI(State &gs)
ImGui::SetWindowSize("Set data position",ImVec2(wsize.x,30)); ImGui::SetWindowSize("Set data position",ImVec2(wsize.x,30));
ImGui::SetWindowPos("Set visualization plane",ImVec2(wsize.x-400,0)); ImGui::SetWindowPos("Set visualization plane",ImVec2(wsize.x-400,0));
ImGui::SetWindowSize("Set visualization plane",ImVec2(400,30)); ImGui::SetWindowSize("Set visualization plane",ImVec2(400,30));
ImGui::SetWindowPos("Set time multiplier",ImVec2(wsize.x-400,wsize.y - 60)); ImGui::SetWindowPos("Set time multiplier",ImVec2(wsize.x-400,wsize.y - 61));
ImGui::SetWindowSize("Set time multiplier",ImVec2(400,30)); ImGui::SetWindowSize("Set time multiplier",ImVec2(400,30));
ImGui::SetWindowPos("Set overlap",ImVec2(wsize.x-300,31));
ImGui::SetWindowSize("Set overlap",ImVec2(300,70*gs.collections.size()));
ImGui::SFML::Render(gs.window); ImGui::SFML::Render(gs.window);
} }