mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-11 18:34:58 +01:00
Work-in progress scaling of sources in geometry view
This commit is contained in:
@@ -265,6 +265,8 @@ set(VMIX_RSC_FILES
|
|||||||
./rsc/mesh/border_round.ply
|
./rsc/mesh/border_round.ply
|
||||||
./rsc/mesh/border_sharp.ply
|
./rsc/mesh/border_sharp.ply
|
||||||
./rsc/mesh/border_large_round.ply
|
./rsc/mesh/border_large_round.ply
|
||||||
|
./rsc/mesh/border_handles_sharp.ply
|
||||||
|
./rsc/mesh/border_handles_overlay.ply
|
||||||
./rsc/mesh/border_large_sharp.ply
|
./rsc/mesh/border_large_sharp.ply
|
||||||
./rsc/mesh/border_vertical_overlay.ply
|
./rsc/mesh/border_vertical_overlay.ply
|
||||||
./rsc/mesh/circle.ply
|
./rsc/mesh/circle.ply
|
||||||
|
|||||||
@@ -225,6 +225,10 @@ void MediaPlayer::close()
|
|||||||
|
|
||||||
GstClockTime MediaPlayer::duration()
|
GstClockTime MediaPlayer::duration()
|
||||||
{
|
{
|
||||||
|
// cannot play an image
|
||||||
|
if (isimage_)
|
||||||
|
return GST_CLOCK_TIME_NONE;
|
||||||
|
|
||||||
if (duration_ == GST_CLOCK_TIME_NONE && pipeline_ != nullptr) {
|
if (duration_ == GST_CLOCK_TIME_NONE && pipeline_ != nullptr) {
|
||||||
gint64 d = GST_CLOCK_TIME_NONE;
|
gint64 d = GST_CLOCK_TIME_NONE;
|
||||||
if ( gst_element_query_duration(pipeline_, GST_FORMAT_TIME, &d) )
|
if ( gst_element_query_duration(pipeline_, GST_FORMAT_TIME, &d) )
|
||||||
|
|||||||
17
Mesh.cpp
17
Mesh.cpp
@@ -377,24 +377,28 @@ void Mesh::accept(Visitor& v)
|
|||||||
|
|
||||||
Frame::Frame(Style style) : Node()
|
Frame::Frame(Style style) : Node()
|
||||||
{
|
{
|
||||||
|
overlay_ = nullptr;
|
||||||
|
shadow_ = nullptr;
|
||||||
|
color = glm::vec4( 1.f, 1.f, 1.f, 1.f);
|
||||||
switch (style) {
|
switch (style) {
|
||||||
case SHARP_LARGE:
|
case SHARP_HANDLES:
|
||||||
border_ = new Mesh("mesh/border_large_sharp.ply");
|
border_ = new Mesh("mesh/border_handles_sharp.ply");
|
||||||
|
overlay_ = new Mesh("mesh/border_handles_overlay.ply");
|
||||||
|
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
|
||||||
break;
|
break;
|
||||||
case SHARP_THIN:
|
case SHARP_THIN:
|
||||||
border_ = new Mesh("mesh/border_sharp.ply");
|
border_ = new Mesh("mesh/border_sharp.ply");
|
||||||
break;
|
break;
|
||||||
case ROUND_LARGE:
|
case ROUND_LARGE:
|
||||||
border_ = new Mesh("mesh/border_large_round.ply");
|
border_ = new Mesh("mesh/border_large_round.ply");
|
||||||
|
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case ROUND_THIN:
|
case ROUND_THIN:
|
||||||
border_ = new Mesh("mesh/border_round.ply");
|
border_ = new Mesh("mesh/border_round.ply");
|
||||||
|
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
overlay_ = nullptr;
|
|
||||||
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
|
|
||||||
color = glm::vec4( 1.f, 1.f, 1.f, 1.f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Frame::~Frame()
|
Frame::~Frame()
|
||||||
@@ -416,7 +420,8 @@ void Frame::draw(glm::mat4 modelview, glm::mat4 projection)
|
|||||||
if ( visible_ ) { // not absolutely necessary but saves some CPU time..
|
if ( visible_ ) { // not absolutely necessary but saves some CPU time..
|
||||||
|
|
||||||
// shadow
|
// shadow
|
||||||
shadow_->draw( modelview * transform_, projection);
|
if(shadow_)
|
||||||
|
shadow_->draw( modelview * transform_, projection);
|
||||||
|
|
||||||
if (overlay_) {
|
if (overlay_) {
|
||||||
// overlat is not altered
|
// overlat is not altered
|
||||||
|
|||||||
2
Mesh.h
2
Mesh.h
@@ -41,7 +41,7 @@ class Frame : public Node
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef enum { ROUND_THIN = 0, ROUND_LARGE, SHARP_THIN, SHARP_LARGE } Style;
|
typedef enum { ROUND_THIN = 0, ROUND_LARGE, SHARP_THIN, SHARP_HANDLES } Style;
|
||||||
Frame(Style style);
|
Frame(Style style);
|
||||||
~Frame();
|
~Frame();
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ void PickingVisitor::visit(Node &n)
|
|||||||
{
|
{
|
||||||
|
|
||||||
modelview_ *= n.transform_;
|
modelview_ *= n.transform_;
|
||||||
// modelview_ = modelview_ * transform(n.translation_, n.rotation_, n.scale_);
|
// modelview_ *= transform(n.translation_, n.rotation_, n.scale_);
|
||||||
// Log::Info("Node %d", n.id());
|
// Log::Info("Node %d", n.id());
|
||||||
// Log::Info("%s", glm::to_string(modelview_).c_str());
|
// Log::Info("%s", glm::to_string(modelview_).c_str());
|
||||||
}
|
}
|
||||||
@@ -65,7 +65,7 @@ void PickingVisitor::visit(Surface &n)
|
|||||||
// if P is inside [LL UR] rectangle:
|
// if P is inside [LL UR] rectangle:
|
||||||
if ( P.x > LL.x && P.x < UR.x && P.y > LL.y && P.y < UR.y )
|
if ( P.x > LL.x && P.x < UR.x && P.y > LL.y && P.y < UR.y )
|
||||||
// add this surface to the nodes picked
|
// add this surface to the nodes picked
|
||||||
nodes_.push_back(&n);
|
nodes_.push_back( std::pair(&n, glm::vec2(P)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void PickingVisitor::visit(LineSquare &)
|
void PickingVisitor::visit(LineSquare &)
|
||||||
@@ -89,7 +89,7 @@ void PickingVisitor::visit(LineCircle &n)
|
|||||||
|
|
||||||
float r = glm::length( glm::vec2(P) );
|
float r = glm::length( glm::vec2(P) );
|
||||||
if ( r < 1.02 && r > 0.98)
|
if ( r < 1.02 && r > 0.98)
|
||||||
nodes_.push_back(&n);
|
nodes_.push_back( std::pair(&n, glm::vec2(P)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void PickingVisitor::visit(Scene &n)
|
void PickingVisitor::visit(Scene &n)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#include "Visitor.h"
|
#include "Visitor.h"
|
||||||
|
|
||||||
@@ -10,11 +11,13 @@ class PickingVisitor: public Visitor
|
|||||||
{
|
{
|
||||||
glm::vec2 point_;
|
glm::vec2 point_;
|
||||||
glm::mat4 modelview_;
|
glm::mat4 modelview_;
|
||||||
std::vector<Node *> nodes_;
|
std::vector< std::pair<Node *, glm::vec2> > nodes_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
PickingVisitor(glm::vec2 coordinates);
|
PickingVisitor(glm::vec2 coordinates);
|
||||||
std::vector<Node *> picked() { return nodes_; }
|
std::vector< std::pair<Node *, glm::vec2> > picked() { return nodes_; }
|
||||||
|
|
||||||
// Elements of Scene
|
// Elements of Scene
|
||||||
void visit(Scene& n);
|
void visit(Scene& n);
|
||||||
|
|||||||
37
Source.cpp
37
Source.cpp
@@ -33,13 +33,16 @@ Source::Source(const std::string &name) : name_(name), initialized_(false)
|
|||||||
|
|
||||||
// default geometry nodes
|
// default geometry nodes
|
||||||
groups_[View::GEOMETRY] = new Group;
|
groups_[View::GEOMETRY] = new Group;
|
||||||
|
frame = new Frame(Frame::SHARP_THIN);
|
||||||
|
frame->translation_.z = 0.1;
|
||||||
|
frame->color = glm::vec4( 0.8f, 0.8f, 0.0f, 0.9f);
|
||||||
|
groups_[View::GEOMETRY]->attach(frame);
|
||||||
|
|
||||||
// will be associated to nodes later
|
// will be associated to nodes later
|
||||||
blendingshader_ = new ImageShader;
|
blendingshader_ = new ImageShader;
|
||||||
rendershader_ = new ImageProcessingShader;
|
rendershader_ = new ImageProcessingShader;
|
||||||
renderbuffer_ = nullptr;
|
renderbuffer_ = nullptr;
|
||||||
rendersurface_ = nullptr;
|
rendersurface_ = nullptr;
|
||||||
overlay_ = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Source::~Source()
|
Source::~Source()
|
||||||
@@ -73,8 +76,10 @@ void Source::accept(Visitor& v)
|
|||||||
|
|
||||||
void Source::setOverlayVisible(bool on)
|
void Source::setOverlayVisible(bool on)
|
||||||
{
|
{
|
||||||
if (overlay_)
|
// if (overlay_)
|
||||||
overlay_->visible_ = on;
|
// overlay_->visible_ = on;
|
||||||
|
for (auto o = overlays_.begin(); o != overlays_.end(); o++)
|
||||||
|
(*o).second->visible_ = on;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasNode::operator()(const Source* elem) const
|
bool hasNode::operator()(const Source* elem) const
|
||||||
@@ -107,13 +112,18 @@ MediaSource::MediaSource(const std::string &name) : Source(name), path_("")
|
|||||||
mediasurface_ = new Surface(rendershader_);
|
mediasurface_ = new Surface(rendershader_);
|
||||||
|
|
||||||
// extra overlay for mixing view
|
// extra overlay for mixing view
|
||||||
overlay_ = new Frame(Frame::ROUND_LARGE);
|
overlays_[View::MIXING] = new Frame(Frame::ROUND_LARGE);
|
||||||
overlay_->overlay_ = new Mesh("mesh/icon_video.ply");
|
overlays_[View::MIXING]->translation_.z = 0.1;
|
||||||
overlay_->translation_.z = 0.1;
|
overlays_[View::MIXING]->color = glm::vec4( 0.8f, 0.8f, 0.0f, 1.f);
|
||||||
overlay_->color = glm::vec4( 0.8f, 0.8f, 0.0f, 1.f);
|
overlays_[View::MIXING]->visible_ = false;
|
||||||
overlay_->visible_ = false;
|
groups_[View::MIXING]->attach(overlays_[View::MIXING]);
|
||||||
groups_[View::MIXING]->attach(overlay_);
|
|
||||||
|
|
||||||
|
// extra overlay for geometry view
|
||||||
|
overlays_[View::GEOMETRY] = new Frame(Frame::SHARP_HANDLES);
|
||||||
|
overlays_[View::GEOMETRY]->translation_.z = 0.1;
|
||||||
|
overlays_[View::GEOMETRY]->color = glm::vec4( 0.8f, 0.8f, 0.0f, 1.f);
|
||||||
|
overlays_[View::GEOMETRY]->visible_ = false;
|
||||||
|
groups_[View::GEOMETRY]->attach(overlays_[View::GEOMETRY]);
|
||||||
}
|
}
|
||||||
|
|
||||||
MediaSource::~MediaSource()
|
MediaSource::~MediaSource()
|
||||||
@@ -179,13 +189,20 @@ void MediaSource::init()
|
|||||||
ImageShader *is = static_cast<ImageShader *>(surfacemix->shader());
|
ImageShader *is = static_cast<ImageShader *>(surfacemix->shader());
|
||||||
if (is) is->stipple = 1.0;
|
if (is) is->stipple = 1.0;
|
||||||
groups_[View::MIXING]->attach(surfacemix);
|
groups_[View::MIXING]->attach(surfacemix);
|
||||||
|
if (mediaplayer_->duration() == GST_CLOCK_TIME_NONE)
|
||||||
|
overlays_[View::MIXING]->overlay_ = new Mesh("mesh/icon_image.ply");
|
||||||
|
else
|
||||||
|
overlays_[View::MIXING]->overlay_ = new Mesh("mesh/icon_video.ply");
|
||||||
|
|
||||||
// scale all mixing nodes to match aspect ratio of the media
|
// scale all mixing nodes to match aspect ratio of the media
|
||||||
for (NodeSet::iterator node = groups_[View::MIXING]->begin();
|
for (NodeSet::iterator node = groups_[View::MIXING]->begin();
|
||||||
node != groups_[View::MIXING]->end(); node++) {
|
node != groups_[View::MIXING]->end(); node++) {
|
||||||
(*node)->scale_.x = mediaplayer_->aspectRatio();
|
(*node)->scale_.x = mediaplayer_->aspectRatio();
|
||||||
}
|
}
|
||||||
|
for (NodeSet::iterator node = groups_[View::GEOMETRY]->begin();
|
||||||
|
node != groups_[View::GEOMETRY]->end(); node++) {
|
||||||
|
(*node)->scale_.x = mediaplayer_->aspectRatio();
|
||||||
|
}
|
||||||
// mixingshader_->mask = ImageShader::mask_presets["Halo"];
|
// mixingshader_->mask = ImageShader::mask_presets["Halo"];
|
||||||
|
|
||||||
// done init once and for all
|
// done init once and for all
|
||||||
|
|||||||
2
Source.h
2
Source.h
@@ -80,7 +80,7 @@ protected:
|
|||||||
ImageShader *blendingshader_;
|
ImageShader *blendingshader_;
|
||||||
|
|
||||||
// overlay to be displayed on top of source
|
// overlay to be displayed on top of source
|
||||||
Frame *overlay_;
|
std::map<View::Mode, Frame*> overlays_;
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO : source set sorted by shader
|
// TODO : source set sorted by shader
|
||||||
|
|||||||
@@ -306,10 +306,8 @@ void UserInterface::handleMouse()
|
|||||||
{
|
{
|
||||||
// drag current source
|
// drag current source
|
||||||
Mixer::manager().currentView()->grab( mouseclic[ImGuiMouseButton_Left], mousepos, current);
|
Mixer::manager().currentView()->grab( mouseclic[ImGuiMouseButton_Left], mousepos, current);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
// Log::Info("Mouse drag (%.1f,%.1f)(%.1f,%.1f)", io.MouseClickedPos[0].x, io.MouseClickedPos[0].y, io.MousePos.x, io.MousePos.y);
|
// Log::Info("Mouse drag (%.1f,%.1f)(%.1f,%.1f)", io.MouseClickedPos[0].x, io.MouseClickedPos[0].y, io.MousePos.x, io.MousePos.y);
|
||||||
// Selection area
|
// Selection area
|
||||||
ImGui::GetBackgroundDrawList()->AddRect(io.MouseClickedPos[ImGuiMouseButton_Left], io.MousePos,
|
ImGui::GetBackgroundDrawList()->AddRect(io.MouseClickedPos[ImGuiMouseButton_Left], io.MousePos,
|
||||||
@@ -318,9 +316,9 @@ void UserInterface::handleMouse()
|
|||||||
ImGui::GetColorU32(ImGuiCol_ResizeGripHovered, 0.3f));
|
ImGui::GetColorU32(ImGuiCol_ResizeGripHovered, 0.3f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( ImGui::IsMouseDown(ImGuiMouseButton_Left)) {
|
else if ( ImGui::IsMouseDown(ImGuiMouseButton_Left) ) {
|
||||||
|
|
||||||
// get coordinate in world view of mouse cursor
|
// get coordinate in world coordinate of mouse cursor
|
||||||
glm::vec3 point = Rendering::manager().unProject(mousepos);
|
glm::vec3 point = Rendering::manager().unProject(mousepos);
|
||||||
|
|
||||||
// picking visitor traverses the scene
|
// picking visitor traverses the scene
|
||||||
@@ -331,7 +329,7 @@ void UserInterface::handleMouse()
|
|||||||
if (pv.picked().empty())
|
if (pv.picked().empty())
|
||||||
Mixer::manager().unsetCurrentSource();
|
Mixer::manager().unsetCurrentSource();
|
||||||
else
|
else
|
||||||
Mixer::manager().setCurrentSource(pv.picked().back());
|
Mixer::manager().setCurrentSource(pv.picked().back().first);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( ImGui::IsMouseReleased(ImGuiMouseButton_Left) )
|
else if ( ImGui::IsMouseReleased(ImGuiMouseButton_Left) )
|
||||||
|
|||||||
61
View.cpp
61
View.cpp
@@ -11,6 +11,7 @@
|
|||||||
#include "View.h"
|
#include "View.h"
|
||||||
#include "Source.h"
|
#include "Source.h"
|
||||||
#include "Primitives.h"
|
#include "Primitives.h"
|
||||||
|
#include "PickingVisitor.h"
|
||||||
#include "Resource.h"
|
#include "Resource.h"
|
||||||
#include "Mesh.h"
|
#include "Mesh.h"
|
||||||
#include "Mixer.h"
|
#include "Mixer.h"
|
||||||
@@ -69,7 +70,6 @@ MixingView::MixingView() : View(MIXING)
|
|||||||
|
|
||||||
MixingView::~MixingView()
|
MixingView::~MixingView()
|
||||||
{
|
{
|
||||||
// TODO : verify that scene is deleted, and all children with it
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ void MixingView::grab (glm::vec2 from, glm::vec2 to, Source *s)
|
|||||||
|
|
||||||
// unproject
|
// unproject
|
||||||
glm::vec3 gl_Position_from = Rendering::manager().unProject(from, scene.root()->transform_);
|
glm::vec3 gl_Position_from = Rendering::manager().unProject(from, scene.root()->transform_);
|
||||||
glm::vec3 gl_Position_to = Rendering::manager().unProject(to, scene.root()->transform_);
|
glm::vec3 gl_Position_to = Rendering::manager().unProject(to, scene.root()->transform_);
|
||||||
|
|
||||||
// compute delta translation
|
// compute delta translation
|
||||||
sourceNode->translation_ = start_translation + gl_Position_to - gl_Position_from;
|
sourceNode->translation_ = start_translation + gl_Position_to - gl_Position_from;
|
||||||
@@ -238,7 +238,6 @@ GeometryView::GeometryView() : View(GEOMETRY)
|
|||||||
|
|
||||||
GeometryView::~GeometryView()
|
GeometryView::~GeometryView()
|
||||||
{
|
{
|
||||||
// TODO : verify that scene is deleted, and all children with it
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,19 +290,69 @@ void GeometryView::grab (glm::vec2 from, glm::vec2 to, Source *s)
|
|||||||
Group *sourceNode = s->group(View::GEOMETRY);
|
Group *sourceNode = s->group(View::GEOMETRY);
|
||||||
|
|
||||||
static glm::vec3 start_translation = glm::vec3(0.f);
|
static glm::vec3 start_translation = glm::vec3(0.f);
|
||||||
|
static glm::vec3 start_scale = glm::vec3(0.f);
|
||||||
static glm::vec2 start_position = glm::vec2(0.f);
|
static glm::vec2 start_position = glm::vec2(0.f);
|
||||||
|
|
||||||
|
|
||||||
if ( start_position != from ) {
|
if ( start_position != from ) {
|
||||||
start_position = from;
|
start_position = from;
|
||||||
start_translation = sourceNode->translation_;
|
start_translation = sourceNode->translation_;
|
||||||
|
start_scale = sourceNode->scale_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// unproject
|
// unproject in scene coordinates
|
||||||
glm::vec3 gl_Position_from = Rendering::manager().unProject(from, scene.root()->transform_);
|
glm::vec3 gl_Position_from = Rendering::manager().unProject(from, scene.root()->transform_);
|
||||||
glm::vec3 gl_Position_to = Rendering::manager().unProject(to, scene.root()->transform_);
|
glm::vec3 gl_Position_to = Rendering::manager().unProject(to, scene.root()->transform_);
|
||||||
|
|
||||||
// compute delta translation
|
// coordinate in source
|
||||||
sourceNode->translation_ = start_translation + gl_Position_to - gl_Position_from;
|
glm::mat4 modelview;
|
||||||
|
glm::vec2 clicpos(0.f);
|
||||||
|
PickingVisitor pv(gl_Position_to);
|
||||||
|
sourceNode->accept(pv);
|
||||||
|
if (!pv.picked().empty()){
|
||||||
|
clicpos = pv.picked().back().second;
|
||||||
|
modelview = pv.picked().back().first->transform_;
|
||||||
|
// Log::Info("clic pos source %.2f. %.2f", clicpos.x, clicpos.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// glm::vec4 P = glm::inverse(sourceNode->transform_ * modelview) * glm::vec4( gl_Position_to, 1.f );
|
||||||
|
|
||||||
|
|
||||||
|
if ( ABS(clicpos.x)>0.9f && ABS(clicpos.y)>0.9f )
|
||||||
|
{
|
||||||
|
// clic inside corner
|
||||||
|
Log::Info("corner %.2f. %.2f", clicpos.x, clicpos.y);
|
||||||
|
// Log::Info(" %.2f. %.2f", P.x, P.y);
|
||||||
|
|
||||||
|
// glm::vec2 topos = clicpos;
|
||||||
|
// PickingVisitor pv(gl_Position_from);
|
||||||
|
// sourceNode->accept(pv);
|
||||||
|
|
||||||
|
// if (!pv.picked().empty()){
|
||||||
|
// topos = pv.picked().back().second;
|
||||||
|
//// Log::Info("scale %.2f. %.2f", topos.x, topos.y);
|
||||||
|
// }
|
||||||
|
|
||||||
|
glm::vec4 P = glm::inverse(sourceNode->transform_ * modelview) * glm::vec4( gl_Position_from, 1.f );
|
||||||
|
|
||||||
|
|
||||||
|
sourceNode->scale_ = start_scale * (glm::vec3(clicpos, 1.f) / glm::vec3(P) );
|
||||||
|
Log::Info("scale %.2f. %.2f", sourceNode->scale_.x, sourceNode->scale_.y);
|
||||||
|
Log::Info(" %.2f. %.2f", start_scale.x, start_scale.y);
|
||||||
|
}
|
||||||
|
else if ( ABS(clicpos.x)>0.95f && ABS(clicpos.y)<0.05f )
|
||||||
|
{
|
||||||
|
// clic resize horizontal
|
||||||
|
Log::Info("H resize %.2f. %.2f", clicpos.x, clicpos.y);
|
||||||
|
}
|
||||||
|
else if ( ABS(clicpos.x)<0.05f && ABS(clicpos.y)>0.95f )
|
||||||
|
{
|
||||||
|
// clic resize vertical
|
||||||
|
Log::Info("V resize %.2f. %.2f", clicpos.x, clicpos.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// clic inside source: compute delta translation
|
||||||
|
sourceNode->translation_ = start_translation + gl_Position_to - gl_Position_from;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,67 +12,67 @@ property uchar alpha
|
|||||||
element face 57
|
element face 57
|
||||||
property list uchar uint vertex_indices
|
property list uchar uint vertex_indices
|
||||||
end_header
|
end_header
|
||||||
0.640531 -0.899390 0.000000 255 255 255 255
|
-0.124093 1.079884 0.000000 255 255 255 255
|
||||||
0.662011 -0.727588 0.000000 255 255 255 255
|
-0.103797 1.242214 0.000000 255 255 255 255
|
||||||
0.640531 -0.706113 0.000000 255 255 255 255
|
-0.124093 1.262506 0.000000 255 255 255 255
|
||||||
0.898289 -0.706113 0.000000 255 255 255 255
|
0.119454 1.262506 0.000000 255 255 255 255
|
||||||
0.876809 -0.727588 0.000000 255 255 255 255
|
0.099159 1.242214 0.000000 255 255 255 255
|
||||||
0.898289 -0.899390 0.000000 255 255 255 255
|
0.119454 1.079884 0.000000 255 255 255 255
|
||||||
0.662011 -0.877915 0.000000 255 255 255 255
|
-0.103797 1.100175 0.000000 255 255 255 255
|
||||||
0.876809 -0.877915 0.000000 255 255 255 255
|
0.099159 1.100175 0.000000 255 255 255 255
|
||||||
0.708155 -0.749211 0.000000 255 255 255 255
|
-0.060197 1.221784 0.000000 255 255 255 255
|
||||||
0.712525 -0.749211 0.000000 255 255 255 255
|
-0.056067 1.221784 0.000000 255 255 255 255
|
||||||
0.710340 -0.749063 0.000000 255 255 255 255
|
-0.058132 1.221923 0.000000 255 255 255 255
|
||||||
0.714621 -0.749639 0.000000 255 255 255 255
|
-0.054087 1.221379 0.000000 255 255 255 255
|
||||||
0.706059 -0.749639 0.000000 255 255 255 255
|
-0.062177 1.221379 0.000000 255 255 255 255
|
||||||
0.716609 -0.750330 0.000000 255 255 255 255
|
-0.052209 1.220727 0.000000 255 255 255 255
|
||||||
0.704072 -0.750330 0.000000 255 255 255 255
|
-0.064055 1.220727 0.000000 255 255 255 255
|
||||||
0.718469 -0.751263 0.000000 255 255 255 255
|
-0.050451 1.219844 0.000000 255 255 255 255
|
||||||
0.702211 -0.751263 0.000000 255 255 255 255
|
-0.065813 1.219844 0.000000 255 255 255 255
|
||||||
0.720183 -0.752421 0.000000 255 255 255 255
|
-0.048832 1.218751 0.000000 255 255 255 255
|
||||||
0.700498 -0.752421 0.000000 255 255 255 255
|
-0.067432 1.218751 0.000000 255 255 255 255
|
||||||
0.721730 -0.753783 0.000000 255 255 255 255
|
-0.047370 1.217464 0.000000 255 255 255 255
|
||||||
0.698951 -0.753783 0.000000 255 255 255 255
|
-0.068894 1.217464 0.000000 255 255 255 255
|
||||||
0.723092 -0.755330 0.000000 255 255 255 255
|
-0.046083 1.216002 0.000000 255 255 255 255
|
||||||
0.697589 -0.755330 0.000000 255 255 255 255
|
-0.070181 1.216002 0.000000 255 255 255 255
|
||||||
0.724250 -0.757043 0.000000 255 255 255 255
|
-0.044989 1.214384 0.000000 255 255 255 255
|
||||||
0.696431 -0.757043 0.000000 255 255 255 255
|
-0.071274 1.214384 0.000000 255 255 255 255
|
||||||
0.725183 -0.758902 0.000000 255 255 255 255
|
-0.044107 1.212627 0.000000 255 255 255 255
|
||||||
0.695497 -0.758902 0.000000 255 255 255 255
|
-0.072157 1.212627 0.000000 255 255 255 255
|
||||||
0.725874 -0.760890 0.000000 255 255 255 255
|
-0.043454 1.210749 0.000000 255 255 255 255
|
||||||
0.694806 -0.760890 0.000000 255 255 255 255
|
-0.072810 1.210749 0.000000 255 255 255 255
|
||||||
0.726303 -0.762985 0.000000 255 255 255 255
|
-0.043049 1.208769 0.000000 255 255 255 255
|
||||||
0.694378 -0.762985 0.000000 255 255 255 255
|
-0.073215 1.208769 0.000000 255 255 255 255
|
||||||
0.726450 -0.765170 0.000000 255 255 255 255
|
-0.042910 1.206705 0.000000 255 255 255 255
|
||||||
0.694230 -0.765170 0.000000 255 255 255 255
|
-0.073354 1.206705 0.000000 255 255 255 255
|
||||||
0.694378 -0.767357 0.000000 255 255 255 255
|
-0.073215 1.204638 0.000000 255 255 255 255
|
||||||
0.726303 -0.767357 0.000000 255 255 255 255
|
-0.043049 1.204638 0.000000 255 255 255 255
|
||||||
0.694806 -0.769454 0.000000 255 255 255 255
|
-0.072810 1.202657 0.000000 255 255 255 255
|
||||||
0.725874 -0.769454 0.000000 255 255 255 255
|
-0.043454 1.202657 0.000000 255 255 255 255
|
||||||
0.695497 -0.771442 0.000000 255 255 255 255
|
-0.072157 1.200779 0.000000 255 255 255 255
|
||||||
0.725183 -0.771442 0.000000 255 255 255 255
|
-0.044107 1.200778 0.000000 255 255 255 255
|
||||||
0.763836 -0.813489 0.000000 255 255 255 255
|
-0.007586 1.161049 0.000000 255 255 255 255
|
||||||
0.844589 -0.856440 0.000000 255 255 255 255
|
0.068715 1.120467 0.000000 255 255 255 255
|
||||||
0.790890 -0.770539 0.000000 255 255 255 255
|
0.017976 1.201632 0.000000 255 255 255 255
|
||||||
0.696431 -0.773302 0.000000 255 255 255 255
|
-0.071274 1.199021 0.000000 255 255 255 255
|
||||||
0.724250 -0.773302 0.000000 255 255 255 255
|
-0.044989 1.199021 0.000000 255 255 255 255
|
||||||
0.697589 -0.775015 0.000000 255 255 255 255
|
-0.070181 1.197403 0.000000 255 255 255 255
|
||||||
0.723092 -0.775015 0.000000 255 255 255 255
|
-0.046083 1.197403 0.000000 255 255 255 255
|
||||||
0.698951 -0.776561 0.000000 255 255 255 255
|
-0.068894 1.195941 0.000000 255 255 255 255
|
||||||
0.721730 -0.776561 0.000000 255 255 255 255
|
-0.047370 1.195941 0.000000 255 255 255 255
|
||||||
0.700498 -0.777922 0.000000 255 255 255 255
|
-0.067432 1.194655 0.000000 255 255 255 255
|
||||||
0.720183 -0.777922 0.000000 255 255 255 255
|
-0.048832 1.194655 0.000000 255 255 255 255
|
||||||
0.702211 -0.779079 0.000000 255 255 255 255
|
-0.065813 1.193563 0.000000 255 255 255 255
|
||||||
0.718469 -0.779079 0.000000 255 255 255 255
|
-0.050451 1.193563 0.000000 255 255 255 255
|
||||||
0.704072 -0.780011 0.000000 255 255 255 255
|
-0.064055 1.192681 0.000000 255 255 255 255
|
||||||
0.716609 -0.780011 0.000000 255 255 255 255
|
-0.052209 1.192681 0.000000 255 255 255 255
|
||||||
0.706059 -0.780701 0.000000 255 255 255 255
|
-0.062177 1.192029 0.000000 255 255 255 255
|
||||||
0.714621 -0.780701 0.000000 255 255 255 255
|
-0.054087 1.192029 0.000000 255 255 255 255
|
||||||
0.708155 -0.781129 0.000000 255 255 255 255
|
-0.060197 1.191625 0.000000 255 255 255 255
|
||||||
0.712525 -0.781129 0.000000 255 255 255 255
|
-0.056067 1.191625 0.000000 255 255 255 255
|
||||||
0.710340 -0.781276 0.000000 255 255 255 255
|
-0.058132 1.191486 0.000000 255 255 255 255
|
||||||
0.694230 -0.856440 0.000000 255 255 255 255
|
-0.073354 1.120467 0.000000 255 255 255 255
|
||||||
0.737190 -0.792443 0.000000 255 255 255 255
|
-0.032763 1.180935 0.000000 255 255 255 255
|
||||||
3 0 1 2
|
3 0 1 2
|
||||||
3 1 3 2
|
3 1 3 2
|
||||||
3 1 4 3
|
3 1 4 3
|
||||||
|
|||||||
@@ -12,70 +12,70 @@ property uchar alpha
|
|||||||
element face 80
|
element face 80
|
||||||
property list uchar uint vertex_indices
|
property list uchar uint vertex_indices
|
||||||
end_header
|
end_header
|
||||||
0.658177 -0.900641 0.000000 255 255 255 255
|
-0.122371 1.059774 0.000000 255 255 255 255
|
||||||
0.678184 -0.680614 0.000000 255 255 255 255
|
-0.102365 1.279800 0.000000 255 255 255 255
|
||||||
0.658177 -0.680614 0.000000 255 255 255 255
|
-0.122371 1.279800 0.000000 255 255 255 255
|
||||||
0.678184 -0.700617 0.000000 255 255 255 255
|
-0.102365 1.259798 0.000000 255 255 255 255
|
||||||
0.698190 -0.700617 0.000000 255 255 255 255
|
-0.082358 1.259798 0.000000 255 255 255 255
|
||||||
0.718197 -0.680614 0.000000 255 255 255 255
|
-0.062351 1.279800 0.000000 255 255 255 255
|
||||||
0.698190 -0.680614 0.000000 255 255 255 255
|
-0.082358 1.279800 0.000000 255 255 255 255
|
||||||
0.718197 -0.720619 0.000000 255 255 255 255
|
-0.062351 1.239795 0.000000 255 255 255 255
|
||||||
0.838237 -0.720619 0.000000 255 255 255 255
|
0.057688 1.239795 0.000000 255 255 255 255
|
||||||
0.858243 -0.680614 0.000000 255 255 255 255
|
0.077695 1.279800 0.000000 255 255 255 255
|
||||||
0.838237 -0.680614 0.000000 255 255 255 255
|
0.057688 1.279800 0.000000 255 255 255 255
|
||||||
0.858243 -0.700617 0.000000 255 255 255 255
|
0.077695 1.259798 0.000000 255 255 255 255
|
||||||
0.878250 -0.700617 0.000000 255 255 255 255
|
0.097701 1.259798 0.000000 255 255 255 255
|
||||||
0.898256 -0.680614 0.000000 255 255 255 255
|
0.117708 1.279800 0.000000 255 255 255 255
|
||||||
0.878250 -0.680614 0.000000 255 255 255 255
|
0.097701 1.279800 0.000000 255 255 255 255
|
||||||
0.898256 -0.900641 0.000000 255 255 255 255
|
0.117708 1.059774 0.000000 255 255 255 255
|
||||||
0.678184 -0.720619 0.000000 255 255 255 255
|
-0.102365 1.239795 0.000000 255 255 255 255
|
||||||
0.858243 -0.720619 0.000000 255 255 255 255
|
0.077695 1.239795 0.000000 255 255 255 255
|
||||||
0.878250 -0.720619 0.000000 255 255 255 255
|
0.097701 1.239795 0.000000 255 255 255 255
|
||||||
0.678184 -0.740622 0.000000 255 255 255 255
|
-0.102365 1.219793 0.000000 255 255 255 255
|
||||||
0.698190 -0.720619 0.000000 255 255 255 255
|
-0.082358 1.239795 0.000000 255 255 255 255
|
||||||
0.698190 -0.740622 0.000000 255 255 255 255
|
-0.082358 1.219793 0.000000 255 255 255 255
|
||||||
0.858243 -0.740622 0.000000 255 255 255 255
|
0.077695 1.219793 0.000000 255 255 255 255
|
||||||
0.878250 -0.740622 0.000000 255 255 255 255
|
0.097701 1.219793 0.000000 255 255 255 255
|
||||||
0.678184 -0.760624 0.000000 255 255 255 255
|
-0.102365 1.199791 0.000000 255 255 255 255
|
||||||
0.718197 -0.750623 0.000000 255 255 255 255
|
-0.062351 1.209792 0.000000 255 255 255 255
|
||||||
0.838237 -0.750623 0.000000 255 255 255 255
|
0.057688 1.209792 0.000000 255 255 255 255
|
||||||
0.878250 -0.760624 0.000000 255 255 255 255
|
0.097701 1.199791 0.000000 255 255 255 255
|
||||||
0.698190 -0.760624 0.000000 255 255 255 255
|
-0.082358 1.199791 0.000000 255 255 255 255
|
||||||
0.718197 -0.830632 0.000000 255 255 255 255
|
-0.062351 1.129782 0.000000 255 255 255 255
|
||||||
0.838237 -0.830632 0.000000 255 255 255 255
|
0.057688 1.129782 0.000000 255 255 255 255
|
||||||
0.858243 -0.760624 0.000000 255 255 255 255
|
0.077695 1.199791 0.000000 255 255 255 255
|
||||||
0.678184 -0.780626 0.000000 255 255 255 255
|
-0.102365 1.179788 0.000000 255 255 255 255
|
||||||
0.698190 -0.780626 0.000000 255 255 255 255
|
-0.082358 1.179788 0.000000 255 255 255 255
|
||||||
0.858243 -0.780626 0.000000 255 255 255 255
|
0.077695 1.179788 0.000000 255 255 255 255
|
||||||
0.878250 -0.780626 0.000000 255 255 255 255
|
0.097701 1.179788 0.000000 255 255 255 255
|
||||||
0.678184 -0.800629 0.000000 255 255 255 255
|
-0.102365 1.159786 0.000000 255 255 255 255
|
||||||
0.698190 -0.800629 0.000000 255 255 255 255
|
-0.082358 1.159786 0.000000 255 255 255 255
|
||||||
0.858243 -0.800629 0.000000 255 255 255 255
|
0.077695 1.159786 0.000000 255 255 255 255
|
||||||
0.878250 -0.800629 0.000000 255 255 255 255
|
0.097701 1.159786 0.000000 255 255 255 255
|
||||||
0.678184 -0.820631 0.000000 255 255 255 255
|
-0.102365 1.139784 0.000000 255 255 255 255
|
||||||
0.698190 -0.820631 0.000000 255 255 255 255
|
-0.082358 1.139784 0.000000 255 255 255 255
|
||||||
0.858243 -0.820631 0.000000 255 255 255 255
|
0.077695 1.139784 0.000000 255 255 255 255
|
||||||
0.878250 -0.820631 0.000000 255 255 255 255
|
0.097701 1.139784 0.000000 255 255 255 255
|
||||||
0.678184 -0.840634 0.000000 255 255 255 255
|
-0.102365 1.119781 0.000000 255 255 255 255
|
||||||
0.878250 -0.840634 0.000000 255 255 255 255
|
0.097701 1.119781 0.000000 255 255 255 255
|
||||||
0.678184 -0.860636 0.000000 255 255 255 255
|
-0.102365 1.099779 0.000000 255 255 255 255
|
||||||
0.698190 -0.840634 0.000000 255 255 255 255
|
-0.082358 1.119781 0.000000 255 255 255 255
|
||||||
0.698190 -0.860636 0.000000 255 255 255 255
|
-0.082358 1.099779 0.000000 255 255 255 255
|
||||||
0.858243 -0.840634 0.000000 255 255 255 255
|
0.077695 1.119781 0.000000 255 255 255 255
|
||||||
0.858243 -0.860636 0.000000 255 255 255 255
|
0.077695 1.099779 0.000000 255 255 255 255
|
||||||
0.878250 -0.860636 0.000000 255 255 255 255
|
0.097701 1.099779 0.000000 255 255 255 255
|
||||||
0.678184 -0.880638 0.000000 255 255 255 255
|
-0.102365 1.079776 0.000000 255 255 255 255
|
||||||
0.718197 -0.860636 0.000000 255 255 255 255
|
-0.062351 1.099779 0.000000 255 255 255 255
|
||||||
0.698190 -0.880638 0.000000 255 255 255 255
|
-0.082358 1.079776 0.000000 255 255 255 255
|
||||||
0.718197 -0.900641 0.000000 255 255 255 255
|
-0.062351 1.059774 0.000000 255 255 255 255
|
||||||
0.838237 -0.860636 0.000000 255 255 255 255
|
0.057688 1.099779 0.000000 255 255 255 255
|
||||||
0.838237 -0.900641 0.000000 255 255 255 255
|
0.057688 1.059774 0.000000 255 255 255 255
|
||||||
0.858243 -0.880638 0.000000 255 255 255 255
|
0.077695 1.079776 0.000000 255 255 255 255
|
||||||
0.878250 -0.880638 0.000000 255 255 255 255
|
0.097701 1.079776 0.000000 255 255 255 255
|
||||||
0.678184 -0.900641 0.000000 255 255 255 255
|
-0.102365 1.059774 0.000000 255 255 255 255
|
||||||
0.698190 -0.900641 0.000000 255 255 255 255
|
-0.082358 1.059774 0.000000 255 255 255 255
|
||||||
0.858243 -0.900641 0.000000 255 255 255 255
|
0.077695 1.059774 0.000000 255 255 255 255
|
||||||
0.878250 -0.900641 0.000000 255 255 255 255
|
0.097701 1.059774 0.000000 255 255 255 255
|
||||||
3 0 1 2
|
3 0 1 2
|
||||||
3 0 3 1
|
3 0 3 1
|
||||||
3 4 5 6
|
3 4 5 6
|
||||||
|
|||||||
Reference in New Issue
Block a user