chunkstream version fixedleaselication

git-svn-id: svn://db.shs.com.ru/libs@3 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
2015-03-24 11:04:36 +00:00
parent b3e47dfc99
commit b068a301bf
29 changed files with 406 additions and 95 deletions

View File

@@ -19,15 +19,19 @@
#include "mainwindow.h"
#include <QGraphicsRectItem>
#define EARTH_H 6356863.019 // m
#define EARTH_WL 6378245.000 // m
MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow() {
setupUi(this);
colorHalo->setColor(view->selectionHaloColor());
sel_obj = 0;
treeProperties->assignObject(view);
//spinSliderShine->setDecimals(2);
view->setFrameShape(QFrame::NoFrame);
view->setRenderer(new RendererDeferredShading(view));
//view->setRenderer(new RendererDeferredShading(view));
view->setRenderer(new RendererSimple(view));
view->setMouseSelectionEnabled(true);
view->setMouseRotateEnabled(true);
view->setBackColor(Qt::lightGray);
@@ -36,10 +40,10 @@ MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow()
o->setWindowOpacity(.666);
view->addObject(o, Qt::Window);*/
view->start(-1);
obj = loadFrom3DSFile("data/test.3DS", 0.15);
/**obj = loadFrom3DSFile("data/test.3DS", 0.15);
m.reflectivity = 1;
m.reflection.loadPathesFromDirectory("data/e");
obj->child("sphere001")->setMaterial(m);
obj->child("sphere001")->setMaterial(m);*/
//m.shine = 40;
@@ -55,16 +59,41 @@ MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow()
//obj->child("teapot")->setRenderMode(GLObjectBase::Point);
//obj->child("teapot")->setLineWidth(2.);
//obj->child("cone")->setRenderMode(GLObjectBase::Line);
///view->camera().setAim(obj->child("sphere001")->pos());
obj = new GLPrimitiveEllipsoid(EARTH_WL / 1E+6, EARTH_WL / 1E+6, EARTH_H / 1E+6, 500, 500);//GLPrimitiveCube();
view->addObject(obj);
view->camera().setAim(obj->child("sphere001")->pos());
double al = 7.;
obj = new GLPrimitiveLine(QVector3D(0, 0, -al), QVector3D(0, 0, al));
obj->material().color_diffuse = Qt::darkBlue; obj->setAcceptLight(false);
view->addObject(obj);
obj = new GLPrimitiveLine(QVector3D(-al, 0, 0), QVector3D(al, 0, 0));
obj->material().color_diffuse = Qt::darkRed; obj->setAcceptLight(false);
view->addObject(obj);
obj = new GLPrimitiveLine(QVector3D(0, -al, 0), QVector3D(0, al, 0));
obj->material().color_diffuse = Qt::darkGreen; obj->setAcceptLight(false);
view->addObject(obj);
double lat = deg2rad*(-85.), lng = deg2rad*(15.);
obj = new GLPrimitiveLine(QVector3D(), QVector3D(cos(lng)*cos(lat), sin(lng)*cos(lat), sin(lat)/*(EARTH_H/EARTH_WL)*/)*5);
view->addObject(obj);
view->camera().setPos(QVector3D(10, -20, 20));
view->camera().setAim(QVector3D());
view->camera().flyToDistance(10);
view->setMouseSelectionEnabled(false);
view->setSelectionHaloEnabled(false);
view->setHoverHaloEnabled(false);
Light * l = new Light(view->camera().pos());
l->intensity = 0.8;
view->addObject(l);
//view->light(0)->light_type = Light::Omni;
//obj = loadFrom3DSFile("34.3DS", 0.03);
//view->addObject(obj);
//view->camera().moveUp(5, true);
ps = new GLParticlesSystem(QVector3D(0,0,5));
/**ps = new GLParticlesSystem(QVector3D(0,0,5));
ps->setEmitterType(GLParticlesSystem::Box);
ps->setBirthRate(5);
ps->setSize(1.);
@@ -74,17 +103,17 @@ MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow()
ps->setSpeedDirectionJitter(1);
//ps->setTextureScale(2, 2);
ps->setAddVerticalFaceEnabled(true);
ps->addForce(QVector3D(0,0,-0.98/20));
ps->addForce(QVector3D(0,0,-0.98/20));*/
//ps->material().diffuse.bitmap_path = "expl_07.png";
//view->addObject(ps);
box = new GLPrimitiveCube();
/**box = new GLPrimitiveCube();
box->setSelectable(false);
box->setRenderMode(GLObjectBase::Line);
box->setLineWidth(2.);
view->addObject(box);
box->hide();
while (view->lightsCount() >= 3) view->removeLight(view->lightsCount() - 1);
box->hide();*/
while (view->lightsCount() >= 5) view->removeLight(view->lightsCount() - 1);
//view->addObject(box);
//obj = obj->clone(true);
@@ -103,7 +132,7 @@ MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow()
}*/
startTimer(1000/60);
connect(view, SIGNAL(hoverChanged(GLObjectBase*,GLObjectBase*)), this, SLOT(hoverChanged(GLObjectBase*,GLObjectBase*)));
//connect(view, SIGNAL(hoverChanged(GLObjectBase*,GLObjectBase*)), this, SLOT(hoverChanged(GLObjectBase*,GLObjectBase*)));
connect(view, SIGNAL(selectionChanged(GLObjectBase*,GLObjectBase*)), this, SLOT(selectionChanged(GLObjectBase*,GLObjectBase*)));
connect(view, SIGNAL(glInitializeDone()), this, SLOT(glInit()));
connect(matEditor, SIGNAL(changed()), this, SLOT(materialChanged()));
@@ -114,7 +143,7 @@ MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow()
MainWindow::~MainWindow() {
delete ps;
//delete ps;
}
@@ -129,6 +158,8 @@ void MainWindow::changeEvent(QEvent * e) {
void MainWindow::timerEvent(QTimerEvent * ) {
static double t = 0.;
view->light(0)->setPos(view->camera().pos());
((RendererSimple*)(view->renderer()))->mpos = view->mapFromGlobal(QCursor::pos());
/*obj->child("tor")->rotateX(0.5);
obj->child("tor")->rotateZ(0.1);
obj->child("cone")->rotateZ(1);
@@ -169,7 +200,7 @@ void MainWindow::selectionChanged(GLObjectBase * cur, GLObjectBase * prev) {
sel_obj = cur;
//qDebug() << "selected" << (cur != 0 ? cur->name() : "0");
labelName->setText(cur != 0 ? cur->name() : "");
if (cur == 0) box->hide();
/**if (cur == 0) box->hide();
else {
box->setScale(cur->boundingBox().size());
box->setPos(cur->boundingBox().pos());
@@ -178,7 +209,7 @@ void MainWindow::selectionChanged(GLObjectBase * cur, GLObjectBase * prev) {
ps->setEmitterRect(b);
cur->addChild(box);
box->show();
}
}*/
objectEditor->setObject(sel_obj);
if (sel_obj == 0) return;
matEditor->setMaterial(sel_obj->material());