|
|
|
|
@ -76,8 +76,7 @@
|
|
|
|
|
#include <Magnum/Shaders/VertexColor.h> |
|
|
|
|
#include <Magnum/Trade/AbstractImageConverter.h> |
|
|
|
|
#include <Magnum/Trade/ImageData.h> |
|
|
|
|
#include <Magnum/Trade/MeshData2D.h> |
|
|
|
|
#include <Magnum/Trade/MeshData3D.h> |
|
|
|
|
#include <Magnum/Trade/MeshData.h> |
|
|
|
|
#include <Magnum/Trade/AbstractImporter.h> |
|
|
|
|
|
|
|
|
|
using namespace Magnum; |
|
|
|
|
@ -93,46 +92,46 @@ struct PrimitiveVisualizer: Platform::WindowlessApplication {
|
|
|
|
|
|
|
|
|
|
int exec() override; |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> axis2D(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> axis3D(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> capsule2DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> circle2DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> crosshair2D(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> line2D(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> squareWireframe(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> capsule3DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> circle3DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> crosshair3D(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> coneWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> cubeWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> cylinderWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> grid3DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> line3D(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> planeWireframe(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> uvSphereWireframe(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> circle2DSolid(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> squareSolid(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> capsule3DSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> circle3DSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> coneSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> cubeSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> cylinderSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> grid3DSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> icosphereSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> planeSolid(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> uvSphereSolid(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> gradient2D(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> gradient2DHorizontal(); |
|
|
|
|
std::pair<Trade::MeshData2D, std::string> gradient2DVertical(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> gradient3D(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> gradient3DHorizontal(); |
|
|
|
|
std::pair<Trade::MeshData3D, std::string> gradient3DVertical(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> axis2D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> axis3D(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData, std::string> capsule2DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> circle2DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> crosshair2D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> line2D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> squareWireframe(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData, std::string> capsule3DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> circle3DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> crosshair3D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> coneWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> cubeWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> cylinderWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> grid3DWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> line3D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> planeWireframe(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> uvSphereWireframe(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData, std::string> circle2DSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> squareSolid(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData, std::string> capsule3DSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> circle3DSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> coneSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> cubeSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> cylinderSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> grid3DSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> icosphereSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> planeSolid(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> uvSphereSolid(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData, std::string> gradient2D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> gradient2DHorizontal(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> gradient2DVertical(); |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData, std::string> gradient3D(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> gradient3DHorizontal(); |
|
|
|
|
std::pair<Trade::MeshData, std::string> gradient3DVertical(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
namespace { |
|
|
|
|
@ -191,7 +190,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData2D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data).draw(shader); |
|
|
|
|
@ -210,7 +209,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData3D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data).draw(shader); |
|
|
|
|
@ -235,7 +234,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData2D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data).draw(shader); |
|
|
|
|
@ -265,7 +264,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData3D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data).draw(shader); |
|
|
|
|
@ -299,18 +298,12 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData2D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
/* TODO: use MeshTools::compile() and MeshVisualizer2D once it exists */ |
|
|
|
|
GL::Buffer vertices; |
|
|
|
|
vertices.setData(data->positions(0), GL::BufferUsage::StaticDraw); |
|
|
|
|
GL::Mesh mesh; |
|
|
|
|
mesh.addVertexBuffer(vertices, 0, Shaders::MeshVisualizer::Position{Shaders::MeshVisualizer::Position::Components::Two}) |
|
|
|
|
.setCount(data->positions(0).size()) |
|
|
|
|
.setPrimitive(data->primitive()); |
|
|
|
|
|
|
|
|
|
mesh.draw(flat) |
|
|
|
|
/* TODO: use MeshVisualizer2D once it exists */ |
|
|
|
|
MeshTools::compile(*data) |
|
|
|
|
.draw(flat) |
|
|
|
|
.draw(wireframe2D); |
|
|
|
|
|
|
|
|
|
GL::AbstractFramebuffer::blit(multisampleFramebuffer, framebuffer, framebuffer.viewport(), GL::FramebufferBlit::Color); |
|
|
|
|
@ -349,7 +342,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData3D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data) |
|
|
|
|
@ -372,7 +365,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData2D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data) |
|
|
|
|
@ -395,7 +388,7 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
multisampleFramebuffer.clear(GL::FramebufferClear::Color|GL::FramebufferClear::Depth); |
|
|
|
|
|
|
|
|
|
std::string filename; |
|
|
|
|
Containers::Optional<Trade::MeshData3D> data; |
|
|
|
|
Containers::Optional<Trade::MeshData> data; |
|
|
|
|
std::tie(data, filename) = (this->*fun)(); |
|
|
|
|
|
|
|
|
|
MeshTools::compile(*data) |
|
|
|
|
@ -411,11 +404,11 @@ int PrimitiveVisualizer::exec() {
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::axis2D() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::axis2D() { |
|
|
|
|
return {Primitives::axis2D(), "axis2d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::gradient2D() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::gradient2D() { |
|
|
|
|
return {Primitives::gradient2D({1.0f, -2.0f}, 0x2f83cc_srgbf, {-1.0f, 2.0f}, 0x3bd267_srgbf), "gradient2d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -426,142 +419,147 @@ namespace {
|
|
|
|
|
const Color3 Gradient80Percent = Math::lerp(0x2f83cc_srgbf, 0x3bd267_srgbf, 0.8f); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::gradient2DHorizontal() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::gradient2DHorizontal() { |
|
|
|
|
return {Primitives::gradient2DHorizontal(Gradient20Percent, Gradient80Percent), "gradient2dhorizontal.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::gradient2DVertical() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::gradient2DVertical() { |
|
|
|
|
/* End colors are 20%/80% blends of the above to match the range */ |
|
|
|
|
return {Primitives::gradient2DVertical(Gradient20Percent, Gradient80Percent), "gradient2dvertical.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::axis3D() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::axis3D() { |
|
|
|
|
return {Primitives::axis3D(), "axis3d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::gradient3D() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::gradient3D() { |
|
|
|
|
return {Primitives::gradient3D({1.0f, -2.0f, -1.5f}, 0x2f83cc_srgbf, {-1.0f, 2.0f, -1.5f}, 0x3bd267_srgbf), "gradient3d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::gradient3DHorizontal() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::gradient3DHorizontal() { |
|
|
|
|
return {Primitives::gradient3DHorizontal(Gradient20Percent, Gradient80Percent), "gradient3dhorizontal.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::gradient3DVertical() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::gradient3DVertical() { |
|
|
|
|
return {Primitives::gradient3DVertical(Gradient20Percent, Gradient80Percent), "gradient3dvertical.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::capsule2DWireframe() { |
|
|
|
|
Trade::MeshData2D capsule = Primitives::capsule2DWireframe(8, 1, 0.75f); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix3::scaling(Vector2{0.75f}), capsule.positions(0)); |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::capsule2DWireframe() { |
|
|
|
|
Trade::MeshData capsule = Primitives::capsule2DWireframe(8, 1, 0.75f); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix3::scaling(Vector2{0.75f}), |
|
|
|
|
capsule.mutableAttribute<Vector2>(Trade::MeshAttribute::Position)); |
|
|
|
|
return {std::move(capsule), "capsule2dwireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::circle2DWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::circle2DWireframe() { |
|
|
|
|
return {Primitives::circle2DWireframe(32), "circle2dwireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::crosshair2D() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::crosshair2D() { |
|
|
|
|
return {Primitives::crosshair2D(), "crosshair2d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::line2D() { |
|
|
|
|
Trade::MeshData2D line = Primitives::line2D(); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix3::translation(Vector2::xAxis(-1.0f))*Matrix3::scaling(Vector2::xScale(2.0f)), line.positions(0)); |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::line2D() { |
|
|
|
|
Trade::MeshData line = Primitives::line2D(); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix3::translation(Vector2::xAxis(-1.0f))*Matrix3::scaling(Vector2::xScale(2.0f)), |
|
|
|
|
line.mutableAttribute<Vector2>(Trade::MeshAttribute::Position)); |
|
|
|
|
return {std::move(line), "line2d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::squareWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::squareWireframe() { |
|
|
|
|
return {Primitives::squareWireframe(), "squarewireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::capsule3DWireframe() { |
|
|
|
|
Trade::MeshData3D capsule = Primitives::capsule3DWireframe(8, 1, 16, 1.0f); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix4::scaling(Vector3{0.75f}), capsule.positions(0)); |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::capsule3DWireframe() { |
|
|
|
|
Trade::MeshData capsule = Primitives::capsule3DWireframe(8, 1, 16, 1.0f); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix4::scaling(Vector3{0.75f}), |
|
|
|
|
capsule.mutableAttribute<Vector3>(Trade::MeshAttribute::Position)); |
|
|
|
|
return {std::move(capsule), "capsule3dwireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::circle3DWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::circle3DWireframe() { |
|
|
|
|
return {Primitives::circle3DWireframe(32), "circle3dwireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::crosshair3D() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::crosshair3D() { |
|
|
|
|
return {Primitives::crosshair3D(), "crosshair3d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::coneWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::coneWireframe() { |
|
|
|
|
return {Primitives::coneWireframe(32, 1.25f), "conewireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::cubeWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::cubeWireframe() { |
|
|
|
|
return {Primitives::cubeWireframe(), "cubewireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::cylinderWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::cylinderWireframe() { |
|
|
|
|
return {Primitives::cylinderWireframe(1, 32, 1.0f), "cylinderwireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::grid3DWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::grid3DWireframe() { |
|
|
|
|
return {Primitives::grid3DWireframe({5, 3}), "grid3dwireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::line3D() { |
|
|
|
|
Trade::MeshData3D line = Primitives::line3D(); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix4::translation(Vector3::xAxis(-1.0f))*Matrix4::scaling(Vector3::xScale(2.0f)), line.positions(0)); |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::line3D() { |
|
|
|
|
Trade::MeshData line = Primitives::line3D(); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix4::translation(Vector3::xAxis(-1.0f))*Matrix4::scaling(Vector3::xScale(2.0f)), |
|
|
|
|
line.mutableAttribute<Vector3>(Trade::MeshAttribute::Position)); |
|
|
|
|
return {std::move(line), "line3d.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::planeWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::planeWireframe() { |
|
|
|
|
return {Primitives::planeWireframe(), "planewireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::uvSphereWireframe() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::uvSphereWireframe() { |
|
|
|
|
return {Primitives::uvSphereWireframe(16, 32), "uvspherewireframe.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::circle2DSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::circle2DSolid() { |
|
|
|
|
return {Primitives::circle2DSolid(16), "circle2dsolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData2D, std::string> PrimitiveVisualizer::squareSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::squareSolid() { |
|
|
|
|
return {Primitives::squareSolid(), "squaresolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::capsule3DSolid() { |
|
|
|
|
Trade::MeshData3D capsule = Primitives::capsule3DSolid(4, 1, 12, 0.75f); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix4::scaling(Vector3{0.75f}), capsule.positions(0)); |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::capsule3DSolid() { |
|
|
|
|
Trade::MeshData capsule = Primitives::capsule3DSolid(4, 1, 12, 0.75f); |
|
|
|
|
MeshTools::transformPointsInPlace(Matrix4::scaling(Vector3{0.75f}), |
|
|
|
|
capsule.mutableAttribute<Vector3>(Trade::MeshAttribute::Position)); |
|
|
|
|
return {std::move(capsule), "capsule3dsolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::circle3DSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::circle3DSolid() { |
|
|
|
|
return {Primitives::circle3DSolid(16), "circle3dsolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::coneSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::coneSolid() { |
|
|
|
|
return {Primitives::coneSolid(1, 12, 1.25f, Primitives::ConeFlag::CapEnd), "conesolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::cubeSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::cubeSolid() { |
|
|
|
|
return {Primitives::cubeSolid(), "cubesolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::cylinderSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::cylinderSolid() { |
|
|
|
|
return {Primitives::cylinderSolid(1, 12, 1.0f, Primitives::CylinderFlag::CapEnds), "cylindersolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::grid3DSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::grid3DSolid() { |
|
|
|
|
return {Primitives::grid3DSolid({5, 3}), "grid3dsolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::icosphereSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::icosphereSolid() { |
|
|
|
|
return {Primitives::icosphereSolid(1), "icospheresolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::planeSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::planeSolid() { |
|
|
|
|
return {Primitives::planeSolid(), "planesolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::pair<Trade::MeshData3D, std::string> PrimitiveVisualizer::uvSphereSolid() { |
|
|
|
|
std::pair<Trade::MeshData, std::string> PrimitiveVisualizer::uvSphereSolid() { |
|
|
|
|
return {Primitives::uvSphereSolid(8, 16), "uvspheresolid.png"}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|