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