Changeset 72a4c1 for src/UIElements
- Timestamp:
- Jul 27, 2012, 2:29:50 PM (13 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 22d99f
- Parents:
- b7b752
- Location:
- src/UIElements/Views/Qt4/Qt3D
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.cpp
rb7b752 r72a4c1 47 47 48 48 49 GLMoleculeObject::GLMoleculeObject(QGLSceneNode *mesh, QObject *parent) 49 double GLMoleculeObject::detailMinDistance[GLMoleculeObject::DETAILTYPES_MAX] = {0, 15, 30, 42}; 50 51 GLMoleculeObject::GLMoleculeObject(QGLSceneNode *mesh[], QObject *parent) 50 52 : QObject(parent) 51 53 { 52 54 //mesh->setParent(this); 53 m_mesh = mesh; 55 for (int i=0;i<DETAILTYPES_MAX;i++) 56 m_mesh[i] = mesh[i]; 54 57 m_scale = 1.0f; 55 58 m_scaleZ = 1.0f; … … 67 70 { 68 71 scene->setParent(this); 69 m_mesh = scene->mainNode(); 72 m_mesh[0] = scene->mainNode(); 73 m_mesh[1] = scene->mainNode(); 74 m_mesh[2] = scene->mainNode(); 70 75 m_scale = 1.0f; 71 76 m_scaleZ = 1.0f; … … 118 123 } 119 124 120 void GLMoleculeObject::draw(QGLPainter *painter )125 void GLMoleculeObject::draw(QGLPainter *painter, const QVector4D &cameraPlane) 121 126 { 122 127 // Position the model at its designated position, scale, and orientation. … … 154 159 155 160 // Draw the geometry mesh. 156 m_mesh->draw(painter); 161 QVector4D pos4d(m_position, -1); 162 qreal distance = QVector4D::dotProduct(cameraPlane, pos4d); 163 164 if (distance > detailMinDistance[DETAIL_LOW]) 165 m_mesh[DETAIL_LOW]->draw(painter); 166 else if (distance > detailMinDistance[DETAIL_MEDIUM]) 167 m_mesh[DETAIL_MEDIUM]->draw(painter); 168 else if (distance > detailMinDistance[DETAIL_HIGH]) 169 m_mesh[DETAIL_HIGH]->draw(painter); 170 else if (distance > detailMinDistance[DETAIL_HIGHEST]) 171 m_mesh[DETAIL_HIGHEST]->draw(painter); 157 172 158 173 // Draw a box around the mesh, if selected. -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.hpp
rb7b752 r72a4c1 37 37 friend class GLWorldScene; 38 38 public: 39 explicit GLMoleculeObject(QGLSceneNode *mesh , QObject *parent=0);39 explicit GLMoleculeObject(QGLSceneNode *mesh[], QObject *parent=0); 40 40 explicit GLMoleculeObject(QGLAbstractScene *scene, QObject *parent=0); 41 41 virtual ~GLMoleculeObject(); … … 70 70 void initStaticMaterials(); 71 71 void initialize(QGLView *view, QGLPainter *painter); 72 void draw(QGLPainter *painter );72 void draw(QGLPainter *painter, const QVector4D &cameraPlane); 73 73 void drawSelectionBox(QGLPainter *painter); 74 74 … … 91 91 static ElementMaterialMap ElementNoMaterialMap; 92 92 93 public: 94 enum{DETAIL_HIGHEST, DETAIL_HIGH, DETAIL_MEDIUM, DETAIL_LOW, DETAILTYPES_MAX} DetailType; 95 93 96 private: 94 97 95 QGLSceneNode *m_mesh; 98 static double detailMinDistance[DETAILTYPES_MAX]; 99 100 QGLSceneNode *m_mesh[DETAILTYPES_MAX]; 96 101 QGLAbstractScene *m_scene; 97 102 QVector3D m_position; -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp
rb7b752 r72a4c1 36 36 #include "World.hpp" 37 37 38 GLMoleculeObject_atom::GLMoleculeObject_atom(QGLSceneNode *mesh , QObject *parent, const atom *atomref) :38 GLMoleculeObject_atom::GLMoleculeObject_atom(QGLSceneNode *mesh[], QObject *parent, const atom *atomref) : 39 39 GLMoleculeObject(mesh, parent), 40 40 Observer(std::string("GLMoleculeObject_atom")+toString(atomref->getId())), -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.hpp
rb7b752 r72a4c1 27 27 Q_OBJECT 28 28 public: 29 GLMoleculeObject_atom(QGLSceneNode *mesh , QObject *parent, const atom *atomref);29 GLMoleculeObject_atom(QGLSceneNode *mesh[], QObject *parent, const atom *atomref); 30 30 virtual ~GLMoleculeObject_atom(); 31 31 -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.cpp
rb7b752 r72a4c1 37 37 #include "LinearAlgebra/Vector.hpp" 38 38 39 GLMoleculeObject_bond::GLMoleculeObject_bond(QGLSceneNode *mesh , QObject *parent, const bond *bondref, const enum SideOfBond side) :39 GLMoleculeObject_bond::GLMoleculeObject_bond(QGLSceneNode *mesh[], QObject *parent, const bond *bondref, const enum SideOfBond side) : 40 40 GLMoleculeObject(mesh, parent), 41 41 Observer(std::string("GLMoleculeObject_bond") -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.hpp
rb7b752 r72a4c1 28 28 enum SideOfBond { left, right }; 29 29 30 GLMoleculeObject_bond(QGLSceneNode *mesh , QObject *parent, const bond *bondref, const enum SideOfBond side);30 GLMoleculeObject_bond(QGLSceneNode *mesh[], QObject *parent, const bond *bondref, const enum SideOfBond side); 31 31 virtual ~GLMoleculeObject_bond(); 32 32 -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp
rb7b752 r72a4c1 39 39 #include "World.hpp" 40 40 41 GLMoleculeObject_molecule::GLMoleculeObject_molecule(QGLSceneNode *mesh , QObject *parent, const molecule *molref) :41 GLMoleculeObject_molecule::GLMoleculeObject_molecule(QGLSceneNode *mesh[], QObject *parent, const molecule *molref) : 42 42 GLMoleculeObject(mesh, parent), 43 43 Observer(std::string("GLMoleculeObject_molecule")+toString(molref->getId())), -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.hpp
rb7b752 r72a4c1 28 28 Q_OBJECT 29 29 public: 30 GLMoleculeObject_molecule(QGLSceneNode *mesh , QObject *parent, const molecule *molref);30 GLMoleculeObject_molecule(QGLSceneNode *mesh[], QObject *parent, const molecule *molref); 31 31 virtual ~GLMoleculeObject_molecule(); 32 32 -
src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp
rb7b752 r72a4c1 61 61 hoverAtom(NULL) 62 62 { 63 QGLBuilder builder0; 64 meshEmpty = builder0.finalizedSceneNode(); 65 QGLBuilder builder1; 66 builder1 << QGLSphere(2.0, 5); 67 meshSphereHi = builder1.finalizedSceneNode(); 68 QGLBuilder builder2; 69 builder2 << QGLSphere(2.0, 1); 70 meshSphereLo = builder2.finalizedSceneNode(); 71 QGLBuilder builder3; 72 builder3 << QGLCylinder(.25,.25,1.0,16); 73 meshCylinderHi = builder3.finalizedSceneNode(); 74 QGLBuilder builder4; 75 builder4 << QGLCylinder(.25,.25,1.0,16); 76 meshCylinderLo = builder4.finalizedSceneNode(); 77 78 meshSphereHi->setOption(QGLSceneNode::CullBoundingBox, true); 79 meshSphereLo->setOption(QGLSceneNode::CullBoundingBox, true); 80 meshCylinderHi->setOption(QGLSceneNode::CullBoundingBox, true); 81 meshCylinderLo->setOption(QGLSceneNode::CullBoundingBox, true); 63 int sphereDetails[] = {5, 3, 2, 0}; 64 int cylinderDetails[] = {16, 8, 6, 3}; 65 for (int i=0;i<GLMoleculeObject::DETAILTYPES_MAX;i++){ 66 QGLBuilder emptyBuilder; 67 meshEmpty[i] = emptyBuilder.finalizedSceneNode(); 68 QGLBuilder sphereBuilder; 69 sphereBuilder << QGLSphere(2.0, sphereDetails[i]); 70 meshSphere[i] = sphereBuilder.finalizedSceneNode(); 71 meshSphere[i]->setOption(QGLSceneNode::CullBoundingBox, true); 72 QGLBuilder cylinderBuilder; 73 cylinderBuilder << QGLCylinder(.25,.25,1.0,cylinderDetails[i]); 74 meshCylinder[i] = cylinderBuilder.finalizedSceneNode(); 75 meshCylinder[i]->setOption(QGLSceneNode::CullBoundingBox, true); 76 } 82 77 83 78 setSelectionMode(SelectAtom); … … 132 127 { 133 128 LOG(3, "INFO: GLWorldScene: Received signal atomInserted for atom "+toString(_atom->getId())+"."); 134 GLMoleculeObject_atom *atomObject = new GLMoleculeObject_atom(meshSphere Hi, this, _atom);129 GLMoleculeObject_atom *atomObject = new GLMoleculeObject_atom(meshSphere, this, _atom); 135 130 AtomNodeMap::iterator iter = AtomsinSceneMap.find(_atom->getId()); 136 131 ASSERT(iter == AtomsinSceneMap.end(), … … 252 247 #endif 253 248 GLMoleculeObject_bond *bondObject = 254 new GLMoleculeObject_bond(meshCylinder Hi, this, _bond, side);249 new GLMoleculeObject_bond(meshCylinder, this, _bond, side); 255 250 connect ( 256 251 bondObject, SIGNAL(BondRemoved(const atomId_t, const atomId_t)), … … 295 290 } 296 291 297 void GLWorldScene::draw(QGLPainter *painter ) const292 void GLWorldScene::draw(QGLPainter *painter, const QVector4D &cameraPlane) const 298 293 { 299 294 // Draw all of the mesh objects that we have as children. … … 301 296 GLMoleculeObject *meshobj = qobject_cast<GLMoleculeObject *>(obj); 302 297 if (meshobj) 303 meshobj->draw(painter );298 meshobj->draw(painter, cameraPlane); 304 299 } 305 300 } -
src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp
rb7b752 r72a4c1 55 55 56 56 void initialize(QGLView *view, QGLPainter *painter) const; 57 void draw(QGLPainter *painter ) const;57 void draw(QGLPainter *painter, const QVector4D &cameraPlane) const; 58 58 59 59 enum SelectionModeType{ … … 100 100 MoleculeNodeMap MoleculesinSceneMap; 101 101 102 QGLSceneNode *meshEmpty; 103 QGLSceneNode *meshSphereHi; 104 QGLSceneNode *meshSphereLo; 105 QGLSceneNode *meshCylinderHi; 106 QGLSceneNode *meshCylinderLo; 102 QGLSceneNode *meshEmpty[GLMoleculeObject::DETAILTYPES_MAX]; 103 QGLSceneNode *meshSphere[GLMoleculeObject::DETAILTYPES_MAX]; 104 QGLSceneNode *meshCylinder[GLMoleculeObject::DETAILTYPES_MAX]; 107 105 108 106 SelectionModeType selectionMode; -
src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
rb7b752 r72a4c1 369 369 changesPresent = false; 370 370 } 371 worldscene->draw(painter); 371 372 QVector3D cameraDir = camera()->center() - camera()->eye(); 373 cameraDir.normalize(); 374 QVector4D cameraPlane(cameraDir, QVector3D::dotProduct(cameraDir, camera()->eye())); 375 worldscene->draw(painter, cameraPlane); 372 376 373 377 drawDreiBein(painter);
Note:
See TracChangeset
for help on using the changeset viewer.