git-svn-id: svn://db.shs.com.ru/libs@638 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -63,17 +63,16 @@ RendererService::RendererService(Renderer * r_): r(r_) {
|
||||
cone_mesh = Primitive::cone(8, 1., 1., 1.);
|
||||
cone_mesh_f = Primitive::coneFrame(8, 1., 1., 1.);
|
||||
QMatrix4x4 mat;
|
||||
mat.translate(0,0,1);
|
||||
mat.rotate(180, 1,0,0);
|
||||
mat.translate(0,0,-1);
|
||||
cone_mesh ->transformPoints(mat);
|
||||
cone_mesh_f->transformPoints(mat);
|
||||
cone_mesh_f->scalePoints(1.5);
|
||||
|
||||
box_mesh ->scalePoints(1.3);
|
||||
omni_mesh ->scalePoints(1.3);
|
||||
cone_mesh ->translatePoints(0,0,-1);
|
||||
cone_mesh ->translatePoints(0,0,0.5);
|
||||
cone_mesh ->scalePoints(1.4);
|
||||
cone_mesh ->translatePoints(0,0,1);
|
||||
cone_mesh ->translatePoints(0,0,-0.5);
|
||||
cone_mesh ->scalePoints(1.5);
|
||||
|
||||
handle_move_mesh = Primitive::arrow(12, 0.06);
|
||||
@@ -153,15 +152,10 @@ QMatrix4x4 RendererService::parentRotationMatrix(ObjectBase * o, bool self_rotat
|
||||
if (!o) return ret;
|
||||
QMatrix4x4 pmat;
|
||||
if (o->parent()) {
|
||||
pmat = o->parent()->worldTransform();
|
||||
pmat.setColumn(3, QVector4D(0,0,0,1));
|
||||
double det = pmat.determinant();
|
||||
if (det > 0.) pmat /= sqrt(det);
|
||||
pmat = o->parent()->transform().matrixRotate();
|
||||
}
|
||||
if (self_rotation) {
|
||||
ret.rotate(o->angles_.z(), 0., 0., 1.);
|
||||
ret.rotate(o->angles_.y(), 0., 1., 0.);
|
||||
ret.rotate(o->angles_.x(), 1., 0., 0.);
|
||||
ret *= o->transform().matrixRotate();
|
||||
}
|
||||
ret = pmat * ret;
|
||||
return ret;
|
||||
@@ -197,12 +191,7 @@ void RendererService::fillSpotObjects() {
|
||||
cur_aims.clear();
|
||||
foreach (Light * l, ll) {
|
||||
QMatrix4x4 m, lm;
|
||||
//QVector3D up = QVector3D::crossProduct(l->direction, QVector3D(0,0,1)).normalized();
|
||||
//if (up.isNull())
|
||||
// up = QVector3D::crossProduct(l->direction, QVector3D(0,0,1)).normalized();
|
||||
//lm.lookAt(QVector3D(), l->direction, up);
|
||||
//lm.lookAt(QVector3D(), l->direction, (QVector3D(0,0,1)));
|
||||
lm.rotate(QQuaternion::fromDirection(l->direction(), QVector3D()));
|
||||
lm = l->transform().matrixRotate();
|
||||
m = invariantSizeMatrix(l->worldPos()) * parentRotationMatrix(l) * lm;
|
||||
m.transposed().copyDataTo(o.modelmatrix);
|
||||
o.object_id = l->id_;
|
||||
@@ -391,6 +380,7 @@ void RendererService::renderService() {
|
||||
/// axis
|
||||
f->glViewport(0, 0, axis_viewport.width(), axis_viewport.height());
|
||||
axis_camera->setPos(-r->view->camera()->direction() * 3.);
|
||||
axis_camera->setAim(QVector3D());
|
||||
r->setUniformCamera(prog, axis_camera, true, axis_viewport);
|
||||
axis_mesh->draw(f, 3);
|
||||
f->glViewport(0, 0, r->view->width(), r->view->height());
|
||||
|
||||
Reference in New Issue
Block a user